Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk melaksanakan ladu nasi kecil yang comel dalam Python
Mula-mula buat objek zongzi, iaitu bunian Kelas perlu mewarisi kelas pygame.sprite.Sprite
, iaitu modul perlanggaran bahagian penting. update
Fungsinya 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('min_love.png').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
.
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
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
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 score
fail 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 kod penuh
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!