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)
猜你還喜歡下面的內(nèi)容