成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Pygame框架如何制作飛機(jī)大戰(zhàn)-創(chuàng)新互聯(lián)

Pygame框架如何制作飛機(jī)大戰(zhàn)?這個(gè)問題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見到的。希望通過這個(gè)問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純?nèi)容,讓我們一起來看看吧!

成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供雙塔網(wǎng)站建設(shè)、雙塔做網(wǎng)站、雙塔網(wǎng)站設(shè)計(jì)、雙塔網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、雙塔企業(yè)網(wǎng)站模板建站服務(wù),10余年雙塔做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

具體內(nèi)容如下

飛機(jī)大戰(zhàn)主游戲類

"""
項(xiàng)目名稱:簡單飛機(jī)大戰(zhàn)游戲
基于框架:Pygame
開發(fā)日期:2020.07
開發(fā)人員:Y
版本:****
"""


import sys # 導(dǎo)入內(nèi)置模塊sys 調(diào)用sys.exit()
import pygame # 導(dǎo)入第三方模塊pygame
from plane_sprites import * # 導(dǎo)入自定義模塊內(nèi)所有工具


class PlayGame(object): # 定義開始游戲主類 繼承object基類
 def __init__(self): # 定義初始化方法
 self.srceen = pygame.display.set_mode(SRCEEN_SIZE.size) # 設(shè)置游戲主窗口
 self.clock = pygame.time.Clock() # 設(shè)置游戲時(shí)鐘 用于刷新屏幕幀率
 self.__creat_sprites() # 調(diào)用私有方法實(shí)現(xiàn)添加精靈類內(nèi)容
 pygame.display.set_caption('飛機(jī)大戰(zhàn)') # 設(shè)置窗口標(biāo)題
 pygame.time.set_timer(CREAT_ENEMY_EVENT, 1000) # 設(shè)置事件定時(shí)器 用于每隔一段時(shí)間執(zhí)行一次事件
 pygame.time.set_timer(FIRE_BULLTE, 300) # 設(shè)置事件定時(shí)器 用于每隔一段時(shí)間執(zhí)行一次事件

 def start_game(self): # 定義開始游戲方法
 while True: # 游戲循環(huán)
  self.clock.tick(CLOCK_TICK) # 利用時(shí)鐘設(shè)置刷新幀率
  self.__event_hander() # 調(diào)用私有方法實(shí)現(xiàn)監(jiān)聽事件
  self.__check_collide() # 調(diào)用私有方法檢測碰撞
  self.__update_sprites() # 調(diào)用私有方法更新和繪制精靈組
  pygame.display.flip() # 更新窗口顯示
  # pygame.display.update() # 更新窗口顯示

 def __creat_sprites(self): # 定義添加精靈組方法
 bj1 = Background() # 利用背景類創(chuàng)建背景對象1 默認(rèn)參數(shù)Flase 表示第一張圖像,需要與屏幕重合
 bj2 = Background(True) # 利用背景類創(chuàng)建背景對象2 參數(shù)True 表示另一張圖像, 在屏幕的正上方
 self.bj_group = pygame.sprite.Group(bj1, bj2) # 設(shè)置背景精靈組
 self.emeny_group = pygame.sprite.Group() # 提前設(shè)置敵機(jī)精靈組 但并不設(shè)置敵機(jī)對象
 # 敵機(jī)類對象是定時(shí)被創(chuàng)建的,因此在初始化方法中,不需要?jiǎng)?chuàng)建敵機(jī)對象
 self.hero = Hero() # 利用英雄類創(chuàng)建英雄對象 注意:后續(xù)對英雄做碰撞檢測及發(fā)射操作,所有需要單獨(dú)設(shè)置為屬性
 self.hero_group = pygame.sprite.Group(self.hero) # 設(shè)置英雄精靈組

 def __event_hander(self): # 定義監(jiān)聽事件方法
 for event in pygame.event.get(): # 循環(huán)監(jiān)聽所有事件
  if event.type == pygame.QUIT: # 如果是單擊退出按鈕事件
  PlayGame.__game_over() # 調(diào)用私有方法實(shí)現(xiàn)結(jié)束游戲
  elif event.type == CREAT_ENEMY_EVENT: # 如果是執(zhí)行自定義事件創(chuàng)建敵機(jī)
  emeny1 = Enemy("./images/enemy1.png") # 利用敵機(jī)類創(chuàng)建敵機(jī)1
  emeny2 = Enemy("./images/enemy2.png") # 利用敵機(jī)類創(chuàng)建敵機(jī)2
  emeny3 = Enemy("./images/enemy3_n1.png")
  self.emeny_group.add(emeny1, emeny2, emeny3) # 對之前設(shè)置好的敵機(jī)精靈組進(jìn)行添加精靈對象
  elif event.type == FIRE_BULLTE: # 如果是執(zhí)行自定義事件發(fā)射子彈
  self.hero.fire() # 調(diào)用英雄對象的發(fā)射子彈方法
 key_tuple = pygame.key.get_pressed() # 捕獲鍵盤按鍵返回值為元組
 if key_tuple[pygame.K_RIGHT]: # 判斷捕獲鍵盤按鍵為右鍵
  self.hero.speed = 4 # 設(shè)置英雄類對象的速度為4 向右移動
 elif key_tuple[pygame.K_LEFT]: # 判斷捕獲鍵盤按鍵為左鍵
  self.hero.speed = -4 # 設(shè)置英雄類對象的速度為-4 向左移動
 else:   # 否則
  self.hero.speed = 0 # 捕獲其余任何按鍵英雄類對象速度不變 不移動

 def __check_collide(self): # 定義檢測碰撞方法
 pygame.sprite.groupcollide(self.hero.bullet_group, self.emeny_group, True, True)
 # 兩個(gè)精靈組中所有的精靈的碰撞檢測 屬性True, 則發(fā)生碰撞的精靈將被自動移除
 enemies = pygame.sprite.spritecollide(self.hero, self.emeny_group, True)
 # 判斷某個(gè)精靈和指定精靈組中的精靈的碰撞 屬性True,則指定精靈組中發(fā)生碰撞的精靈將被自動移除
 # 返回精靈組中跟精靈發(fā)生碰撞的精靈列表
 if len(enemies) > 0: # 判斷敵機(jī)精靈組內(nèi)精靈是否存在 若存在
  self.hero.kill() # 碰撞導(dǎo)致英雄銷毀
  PlayGame.game_over() # 調(diào)用類中結(jié)束游戲方法 退出游戲

 def __update_sprites(self): # 定義精靈組更新和繪制方法
 self.bj_group.update() # 更新背景類精靈
 self.bj_group.draw(self.srceen) # 繪制背景類精靈
 self.emeny_group.update() # 更新敵機(jī)類精靈
 self.emeny_group.draw(self.srceen) # 繪制敵機(jī)類精靈
 self.hero_group.update() # 更新英雄類精靈
 self.hero_group.draw(self.srceen) # 繪制英雄類精靈
 self.hero.bullet_group.update() # 更新英雄子彈類精靈
 self.hero.bullet_group.draw(self.srceen) # 繪制英雄子彈類精靈

 @staticmethod # 聲明定義靜態(tài)方法
 def __game_over(): # 定義靜態(tài)方法
 print("游戲結(jié)束") # 控制臺打印游戲結(jié)束
 pygame.quit() # 卸載所有pygame模塊工具
 sys.exit() # 退出程序


if __name__ == '__main__': # 判斷當(dāng)前執(zhí)行
 playgame = PlayGame() # 創(chuàng)建開始游戲?qū)ο? playgame.start_game() # 調(diào)用開始游戲?qū)ο蟮拈_始方法

新聞名稱:Pygame框架如何制作飛機(jī)大戰(zhàn)-創(chuàng)新互聯(lián)
文章源于:http://jinyejixie.com/article4/deohoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、域名注冊App開發(fā)、靜態(tài)網(wǎng)站、電子商務(wù)、網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
景谷| 游戏| 广饶县| 柳州市| 谷城县| 林甸县| 浦北县| 女性| 海安县| 吴川市| 普安县| 岢岚县| 武平县| 砀山县| 永安市| 郓城县| 孟津县| 扎鲁特旗| 兴化市| 乌拉特前旗| 康马县| 普宁市| 普宁市| 乐平市| 武城县| 陵川县| 衡阳市| 手机| 佳木斯市| 深州市| 郧西县| 同德县| 临泉县| 简阳市| 延长县| 彰武县| 昌邑市| 墨竹工卡县| 临高县| 左贡县| 天气|