国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python實現飛機大戰微信小游戲

2020-02-15 22:57:08
字體:
來源:轉載
供稿:網友

0、前言

我學一種語言,可以說學任何東西都喜歡自己動手實踐,總感覺自己動手一遍,就可以理解的更透徹,學python也一樣,自己動手寫代碼,但更喜歡做點小東西出來,一邊玩一邊學。下面我就展示一下我最近做的一個小游戲。

1、素材準備

首先我們先來預覽一下游戲的最終運行界面

根據游戲界面,我們可以清楚的知道必須要先準備游戲背景圖片,飛機圖片,子彈圖片等等。這些素材我已經放到網上, 點我下載 ,里面包括了我的代碼和圖片素材。

2、代碼部分

庫依賴:

pygame

本游戲主要有兩個py文件,主文件plan_main.py代碼部分如下:

from plan_sprite import *class PlanGame(object): """飛機大戰主程序""" def __init__(self):  print("游戲初始化")  # 創建游戲窗口  self.screen = pygame.display.set_mode(SCREEN_RECT.size)  # 創建游戲時鐘  self.clock = pygame.time.Clock()  # 調用私有方法,精靈和精靈組的創建  self._create_sprite()  # 設置定時器事件 - 1秒創建一個敵機  pygame.time.set_timer(CREATE_ENEMY_EVENT, 1000)  # 設置定時器事件 - 0.5秒創建一個子彈  pygame.time.set_timer(HERO_FIRE, 100) def _create_sprite(self):  # 創建背景精靈和精靈組  bg1 = BackGround()  bg2 = BackGround(True)  self.back_group = pygame.sprite.Group(bg1, bg2)  # 創建精靈組  self.enemy_group = pygame.sprite.Group()  # 創建英雄精靈和精靈組  self.hero = Hero()  self.hero_group = pygame.sprite.Group(self.hero) def start_game(self):  print("游戲開始...")  while True:   # 設置刷新幀率   self.clock.tick(FRAME_PER_SECOND)   # 事件監聽   self._event_handler()   # 碰撞檢測   self._check_collide()   # 更新/繪制游戲精靈   self._update_sprite()   # 刷新屏幕   pygame.display.update() def _event_handler(self):  for event in pygame.event.get():   if event.type == pygame.QUIT:    PlanGame._game_over()   elif event.type == CREATE_ENEMY_EVENT:    # 創建敵機精靈    enemy = Enemy()    # 將創建的敵機精靈加到精靈組    self.enemy_group.add(enemy)   # 第一種按鍵監聽方法   # if event.type == pygame.KEYDOWN and event.key == pygame.K_RIGHT:   #  self.hero.speed = 2   # elif event.type == pygame.KEYDOWN and event.key == pygame.K_LEFT:   #  self.hero.speed = -2   # else:   #  self.hero.speed = 0    # 第二種:使用鍵盤模塊提供的方法獲取按鍵元組    keys_pressed = pygame.key.get_pressed()    # 判斷元組中的按鍵索引值    if keys_pressed[pygame.K_RIGHT]:     self.hero.speed = 2    elif keys_pressed[pygame.K_LEFT]:     self.hero.speed = -2    else:     self.hero.speed = 0    # 飛機發射子子彈事件    self.hero.fire() def _check_collide(self):  pygame.sprite.groupcollide(self.enemy_group, self.hero.bullets, True, True)  enemy_list = pygame.sprite.spritecollide(self.hero, self.enemy_group, True)  if len(enemy_list):   self.hero.kill()   PlanGame._game_over() def _update_sprite(self):  self.back_group.update()  self.back_group.draw(self.screen)  self.enemy_group.update()  self.enemy_group.draw(self.screen)  self.hero_group.update()  self.hero_group.draw(self.screen)  self.hero.bullets.update()  self.hero.bullets.draw(self.screen) @staticmethod def _game_over():  print("游戲結束")  pygame.quit()  exit()if __name__ == '__main__': # 創建游戲對象 game = PlanGame() # 啟動游戲 game.start_game()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 澄江县| 布尔津县| 凤冈县| 六安市| 内江市| 新安县| 乌拉特中旗| 西贡区| 瑞昌市| 临高县| 堆龙德庆县| 东方市| 星子县| 关岭| 安化县| 广南县| 苍梧县| 松阳县| 扎赉特旗| 三河市| 洛浦县| 来凤县| 徐汇区| 九龙县| 长春市| 佛冈县| 澄城县| 竹山县| 长宁县| 成安县| 法库县| 二手房| 南郑县| 奇台县| 策勒县| 延吉市| 镇雄县| 泽普县| 镇雄县| 富宁县| 贵州省|