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

Bagaimana untuk melaksanakan ladu nasi kecil yang comel dalam Python

WBOY
Lepaskan: 2023-05-13 21:25:04
ke hadapan
1541 orang telah melayarinya

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
Salin selepas log masuk

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]
Salin selepas log masuk

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))
Salin selepas log masuk

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)) :
	语句
Salin selepas log masuk

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])
Salin selepas log masuk

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))
Salin selepas log masuk
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!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan