Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan ladu nasi kecil yang comel dalam Python

Bagaimana untuk melaksanakan ladu nasi kecil yang comel dalam Python

WBOY
WBOYke hadapan
2023-05-13 21:25:041515semak imbas

Buat dua bunian dan bina elemen latar belakang

Zongzi dan cinta

Mula-mula buat objek zongzi, iaitu bunian Kelas perlu mewarisi kelas pygame.sprite.Sprite, iaitu modul perlanggaran bahagian penting. updateFungsinya adalah untuk mengawal arah ladu nasi dan mengelakkan ladu nasi daripada kehabisan batas Apabila ladu nasi mencecah sempadan, fungsi lantunan bawah dimulakan, menyebabkan ladu nasi melantun di bahagian lain. arah sempadan.

class Player(pygame.sprite.Sprite):
    """
    粽子对象
    """
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.image.load('min2.png')
        self.image = pygame.transform.scale(self.image, (130, 130))
        print(self.image)
        self.rect = self.image.get_rect()
        self.rect.midbottom = (20, screen_height )
    def update(self):
        screen.blit(self.image, (self.rect.x, self.rect.y))
        screen.blit(self.image, self.rect)
        x_move = 0
        y_move = 0
        # 获取按键,并进行相应的移动
        key = pygame.key.get_pressed()
        #通过控制数字来设置粽子速度
        if key[pygame.K_LEFT]:
            x_move -= 4
        if key[pygame.K_RIGHT]:
            x_move += 4
        if key[pygame.K_UP]:
            y_move -= 4
        if key[pygame.K_DOWN]:
            y_move += 4
        self.rect.x += x_move
        self.rect.y += y_move
        # 控制人物的最低位置
        if self.rect.bottom > screen_height+330 :
            self.rect.bottom = screen_height + 330
        # 绘制粽子
        screen.blit(self.image, self.rect)
        #防止粽子跑出边界
        if  self.rect.right > 1400:
            self.rect.x -= 20
        elif  self.rect.left <=-10:
            self.rect.x += 20
        elif  self.rect.top < 0:
            self.rect.y += 50
        elif self.rect.bottom> 730:
            self.rect.y -= 60

Tambah ❤ dan markah mata apabila ladu nasi masin makan ❤. Ia juga mesti mewarisi kelas pygame.sprite.Sprite dan menggunakan Move_update untuk menjadikan ❤ muncul secara rawak dalam permainan dan bergerak dalam sempadan permainan.

class Heart_game(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.Heart_speed = [2,-3]
        # 加载小球图片
        self.image = pygame.image.load(&#39;min_love.png&#39;).convert_alpha()
        # 获取小球图片的区域开状
        self.rect = self.image.get_rect()
        x,y = random.randint(0,1300),random.randint(0,700)
        self.active = True
        self.rect.midbottom = (x, y )
    def Move_update(self):
        self.rect = self.rect.move(self.Heart_speed)
        #绘制爱心图片
        screen.blit(self.image, self.rect)
        if  self.rect.right > 1400:
            x = random.randint(-5, 0)
            y = random.randint(-5, -2) or random.randint(1, 5)
            self.Heart_speed = [x, y]
        elif  self.rect.left <=-10:
            x = random.randint(0, 5)
            y = random.randint(-5, 5)
            self.Heart_speed = [x, y]
        elif  self.rect.top < -10:
            x = random.randint(-3,3)
            y = random.randint(0,3)
            self.Heart_speed = [x,y]
        elif self.rect.bottom> 695:
            x = random.randint(-3, 3)
            y = random.randint(-3,0)
            self.Heart_speed = [x, y]

Nota: warna{#FF45b0}{Nota:} Nota: screen.blit(image, rect)Untuk melukis gambar dalam permainan, ia mesti mengandungi dua parameter, satu ialah gambar itu sendiri, satu lagi ialah kedudukan daripada gambar dalam permainan , iaitu rect.

Pembinaan latar belakang

Import gambar terus dan paparkannya dalam gelung

bg = pygame.image.load("vack.jpeg").convert()
#下句需在游戏主循环中使用
screen.blit(bg, (0, 0))

Selepas pembinaan selesai, ia akan menjadi

Bagaimana untuk melaksanakan ladu nasi kecil yang comel dalam Python

Modul perlanggaran

Saya bekerja keras pada bahagian perlanggaran, menggunakan ayat berikut, terutamanya! ! warna{biru}{terutama! ! } Terutama sekali! ! Saya fikir tiada perlanggaran pada mulanya, jadi saya menambah beberapa kenyataan, sebenarnya, ia berlaku, tetapi saya tidak menambah kenyataan ->Apa yang akan berlaku dalam keadaan ini, menyebabkan tragedi ini...

Mari kita analisa keadaan Segmen ini dengan teliti,

ialah objek zongzi, player ialah kumpulan yang mengandungi ❤, group boleh mengawal kelantangan perlanggaran imej, jadi syarat perlanggaran dipenuhi! pygame.sprite.collide_circle_ratio(0.5)

if pygame.sprite.spritecollide(player,group,True,pygame.sprite.collide_circle_ratio(0.5)) :
	语句

Modul tamak

makan ❤ apabila perlanggaran dicapai, biarkan

menjadi tatasusunan kosong, gunakan l untuk menambah ❤ contoh, apabila tatasusunan l.append(aixin) wujud, Masukkan perlanggaran pautan, dan gunakan fungsi l untuk memadam ❤ selepas perlanggaran. pop

Kemudian tambah pertimbangan Jika tatasusunan l kosong, tambahkan contoh permainan ❤ baharu, iaitu contoh ❤ di atas

    for each in l:
        each.Move_update()
        screen.blit(each.image, each.rect)
        if pygame.sprite.spritecollide(player,group,True,pygame.sprite.collide_circle_ratio(0.5)) :
                l.pop()
                score += 1
                print(score)
                # del aixin
    if not l:
        l.append(Heart_game())
        group.add(l[0])

Mekanisme pengiraan

Gunakan

untuk kira, petikan scorefail fonttf

score = 0
score_font = pygame.font.Font("font.ttf",50)
score_text = score_font.render("Score: % s" % str(score), True, BLACK)
screen.blit(score_text, (0, 0))

akhirnya dipaparkan sebagai

Bagaimana untuk melaksanakan ladu nasi kecil yang comel dalam Python

Bagaimana untuk melaksanakan ladu nasi kecil yang comel dalam Python

kod penuh

rreee

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan ladu nasi kecil yang comel dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam