|
目標(biāo)
01. 明確主程序職責(zé)
![]()
如果某一個(gè)方法編寫(xiě)的太長(zhǎng),既不好閱讀,也不好維護(hù)!
![]()
![]() 02. 實(shí)現(xiàn)飛機(jī)大戰(zhàn)主游戲類(lèi) 2.1 明確文件職責(zé) ![]()
封裝 主游戲類(lèi)創(chuàng)建 游戲?qū)ο髥?dòng)游戲
代碼實(shí)現(xiàn)
import pygame from plane_sprites import * class PlaneGame(object): '''飛機(jī)大戰(zhàn)主游戲''' def __init__(self): print('游戲初始化') def start_game(self): print('開(kāi)始游戲...') if __name__ == '__main__': # 創(chuàng)建游戲?qū)ο?/p> game = PlaneGame() # 開(kāi)始游戲 game.start_game() 2.3 游戲初始化部分 完成init() 代碼如下: def __init__(self): print('游戲初始化') # 1. 創(chuàng)建游戲的窗口 self.screen = pygame.display.set_mode((480, 700)) # 2. 創(chuàng)建游戲的時(shí)鐘 self.clock = pygame.time.Clock() # 3. 調(diào)用私有方法,精靈和精靈組的創(chuàng)建 self.__create_sprites() def __create_sprites(self): pass 使用 常量 代替固定的數(shù)值
應(yīng)用場(chǎng)景
常量的定義
常量的好處
提示:Python 中并沒(méi)有真正意義的常量,只是通過(guò)命名的約定 —— 所有字母都是大寫(xiě)的就是常量,開(kāi)發(fā)時(shí)不要輕易的修改! 代碼調(diào)整
import pygame # 游戲屏幕大小 SCREEN_RECT = pygame.Rect(0, 0, 480, 700) 修改 plane_main.py 中的窗口大小 self.screen = pygame.display.set_mode(SCREEN_RECT.size) 2.4 游戲循環(huán)部分 完成 start_game() 基礎(chǔ)代碼如下: def start_game(self): '''開(kāi)始游戲''' print('開(kāi)始游戲...') while True: # 1. 設(shè)置刷新幀率 self.clock.tick(60) # 2. 事件監(jiān)聽(tīng) self.__event_handler() # 3. 碰撞檢測(cè) self.__check_collide() # 4. 更新精靈組 self.__update_sprites() # 5. 更新屏幕顯示 pygame.display.update() def __event_handler(self): '''事件監(jiān)聽(tīng)''' for event in pygame.event.get(): if event.type == pygame.QUIT: PlaneGame.__game_over() def __check_collide(self): '''碰撞檢測(cè)''' pass def __update_sprites(self): '''更新精靈組''' pass @staticmethod def __game_over(): '''游戲結(jié)束''' print('游戲結(jié)束') pygame.quit() exit() 03. 準(zhǔn)備游戲精靈組 3.1 確定精靈組 ![]() 3.2 代碼實(shí)現(xiàn) 創(chuàng)建精靈組方法 def __create_sprites(self): '''創(chuàng)建精靈組''' # 背景組 self.back_group = pygame.sprite.Group() # 敵機(jī)組 self.enemy_group = pygame.sprite.Group() # 英雄組 self.hero_group = pygame.sprite.Group() 更新精靈組方法 def __update_sprites(self): '''更新精靈組''' for group in [self.back_group, self.enemy_group, self.hero_group]: group.update() group.draw(self.screen) 著作權(quán)歸作者所有
|
|
|