Python開發(fā)教程:基于pygame的兔子吃月餅小游戲
小游戲規(guī)則簡介
實(shí)現(xiàn)
初始化游戲窗口
import sysimport pygamewidth = 800height = 800pygame.init()windows = pygame.display.set_mode((width, height))pygame.display.set_caption('兔子吃月餅??!')while True:windows.fill((204, 204, 255))for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()sys.exit()pygame.display.flip()

游戲邏輯
實(shí)現(xiàn)玩家類
class Rabbit:"""玩家兔子類"""def __init__(self, top, left, height, width):# 初始位置及大小self.top = topself.left = leftself.height = heightself.width = width# 游戲人物的初始位置self.rect = pygame.Rect(self.left, self.top, self.width, self.height)self.player_image = pygame.image.load('兔子.png')self.player_stretched_image = pygame.transform.scale(self.player_image, (height, width))# 控制移動變量self.move_left = Falseself.move_right = Falseself.move_up = Falseself.move_down = False# 每次移動的大小self.MOVESPEED = 5# 重量self.weight = 5def move(self):"""控制移動:return:"""if self.move_down and self.rect.bottom < height:self.rect.top += self.MOVESPEEDself.rect.bottom += self.MOVESPEEDif self.move_up and self.rect.top > 0:self.rect.top -= self.MOVESPEEDself.rect.bottom -= self.MOVESPEEDif self.move_left and self.rect.left > 0:self.rect.left -= self.MOVESPEEDself.rect.right -= self.MOVESPEEDif self.move_right and self.rect.right < width:self.rect.left += self.MOVESPEEDself.rect.right += self.MOVESPEED
實(shí)現(xiàn)月餅類
class MoonCake:"""月餅類"""def __init__(self):# 位置及大小self.rect = pygame.Rect(random.randint(0, 750), random.randint(0, 750), 20, 20)# 圖像self.moon_cake_image = pygame.image.load("./月餅/月餅{}.png".format(random.randint(1, 8)))
交互邏輯
def game_run():global widthglobal height# 是否結(jié)束end = False# 創(chuàng)建時鐘對象 (可以控制游戲循環(huán)頻率)clock = pygame.time.Clock()# 月餅計數(shù)器moon_cake_limit = 20player = Noneif not player:player = Rabbit(300, 100, 64, 64)moon_cakes = []for i in range(20):moon_cake = MoonCake()moon_cakes.append(moon_cake)# 游戲循環(huán)while True and not end:# 給屏幕填充顏色windows.fill((204, 204, 255))# 監(jiān)聽鍵盤事件key_pressed = pygame.key.get_pressed()if key_pressed[pygame.K_a] or key_pressed[pygame.K_LEFT]:player.move_right = Falseplayer.move_left = Trueif key_pressed[pygame.K_d] or key_pressed[pygame.K_RIGHT]:player.move_left = Falseplayer.move_right = Trueif key_pressed[pygame.K_w] or key_pressed[pygame.K_UP]:player.move_down = Falseplayer.move_up = Trueif key_pressed[pygame.K_s] or key_pressed[pygame.K_DOWN]:player.move_up = Falseplayer.move_down = Trueplayer.move()for event in pygame.event.get():if event.type == QUIT:pygame.quit()sys.exit()if event.type == KEYUP:if event.key == K_ESCAPE:pygame.quit()sys.exit()if event.key == K_LEFT or event.key == K_a:player.move_left = Falseif event.key == K_RIGHT or event.key == K_d:player.move_right = Falseif event.key == K_UP or event.key == K_w:player.move_up = Falseif event.key == K_DOWN or event.key == K_s:player.move_down = False# 月餅不足20時生成新的月餅if len(moon_cakes) < moon_cake_limit:# 生成新的月餅moon_cakes.append(MoonCake())# 畫兔子windows.blit(player.player_stretched_image, player.rect)# 顯示兔子的重量text = pygame.font.SysFont("microsoftyaheimicrosoftyaheiui", 30)text_fmt = text.render("重量:{}斤!".format(player.weight), True, (255, 255, 255))windows.blit(text_fmt, (0, 0))# 畫月餅for moon_cake in moon_cakes:windows.blit(moon_cake.moon_cake_image, moon_cake.rect)# 碰撞檢測for moon_cake in moon_cakes:if player.rect.colliderect(moon_cake.rect):moon_cakes.remove(moon_cake)# 吃到月餅兔子會變重player.weight += 2pygame.display.flip()pygame.display.update()# 通過時鐘對象指定循環(huán)頻率clock.tick(40)

if player.weight > 10:end = Truewhile end:windows.fill((204, 204, 255))text = pygame.font.SysFont("microsoftyaheimicrosoftyaheiui", 50)text_fmt1 = text.render("你的兔子撐死了!!".format(player.weight), True, (255, 255, 255))text_fmt2 = text.render("game over!".format(player.weight), True, (255, 255, 255))windows.blit(text_fmt1, (200, 200))windows.blit(text_fmt2, (260, 300))clock.tick(40)for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()sys.exit()if event.type == pygame.KEYDOWN:end = Falseplayer = Rabbit(random.randint(0, 750), random.randint(0, 750), 64, 64)moon_cakes.clear()for i in range(20):moon_cake = MoonCake()moon_cakes.append(moon_cake)pygame.display.flip()pygame.display.update()

搜索下方加老師微信
老師微信號:XTUOL1988【切記備注:學(xué)習(xí)Python】
領(lǐng)取Python web開發(fā),Python爬蟲,Python數(shù)據(jù)分析,人工智能等精品學(xué)習(xí)課程。帶你從零基礎(chǔ)系統(tǒng)性的學(xué)好Python!
*聲明:本文于網(wǎng)絡(luò)整理,版權(quán)歸原作者所有,如來源信息有誤或侵犯權(quán)益,請聯(lián)系我們刪除或授權(quán)
評論
圖片
表情



