目標—— 使用面相物件設計飛機大戰遊戲類
根據明確的職責,設計planegame
類如下:
提示根據職責封裝私有方法,可以避免某乙個方法的**寫得太過冗長方法如果某乙個方法編寫的太長,既不好閱讀,也不好維護!
職責__create_sprites(self)
建立所有精靈和精靈組 方法
職責__event_handler(self)
事件監聽
__check_collide(self)
碰撞檢測 —— 子彈銷毀敵機、敵機撞毀英雄
__update_sprites(self)
精靈組更新和繪製
__game_over()
遊戲結束
**實現
import pygame
from plane_sprites import
*class
planegame
(object):
"""飛機大戰主遊戲"""
def__init__
(self)
:print
("遊戲初始化"
)def
start_game
(self)
:print
("開始遊戲..."
)if __name__ ==
'__main__'
:# 建立遊戲物件
game = planegame(
)# 開始遊戲
game.start_game(
)
def
__init__
(self)
:print
("遊戲初始化"
)# 1. 建立遊戲的視窗
self.screen = pygame.display.set_mode(
(480
,700))
# 2. 建立遊戲的時鐘
self.clock = pygame.time.clock(
)# 3. 呼叫私有方法,精靈和精靈組的建立
self.__create_sprites(
)def
__create_sprites
(self)
:pass
使用 常量 代替固定的數值應用場景常量的定義常量的好處**調整
import pygame
# 遊戲螢幕大小
screen_rect = pygame.rect(0,
0,480,
700)
self.screen = pygame.display.set_mode(screen_rect.size)
def
start_game
(self)
:"""開始遊戲"""
print
("開始遊戲..."
)while
true
:# 1. 設定重新整理幀率
self.clock.tick(60)
# 2. 事件監聽
self.__event_handler(
)# 3. 碰撞檢測
self.__check_collide(
)# 4. 更新精靈組
self.__update_sprites(
)# 5. 更新螢幕顯示
pygame.display.update(
)def
__event_handler
(self)
:"""事件監聽"""
for event in pygame.event.get():
if event.
type
== pygame.quit:
planegame.__game_over(
)def
__check_collide
(self)
:"""碰撞檢測"""
pass
def__update_sprites
(self)
:"""更新精靈組"""
pass
@staticmethod
def__game_over()
:"""遊戲結束"""
print
("遊戲結束"
:"""建立精靈組"""
# 背景組
self.back_group = pygame.sprite.group(
)# 敵機組
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)
飛機大戰 之 遊戲框架的搭建
方法 職責 create sprites self 建立所有精靈和精靈組 方法 職責 event handler self 事件監聽 check collide self 碰撞檢測 子彈銷毀敵機 敵機撞毀英雄 update sprites self 精靈組更新和繪製 game over 遊戲結束 i...
python飛機大戰筆記(6) 框架搭建
遊戲初始化 設定遊戲視窗 建立遊戲時鐘 建立精靈,精靈組 遊戲迴圈 設定重新整理幀率 事件監聽 碰撞檢測 更新 繪製精靈組 更新螢幕顯示 使用物件導向設計飛機大戰遊戲類 明確主程式職責 1 遊戲初始化 2 遊戲迴圈 主程式類 plane main 遊戲主程式 1 風轉著遊戲類 2 建立遊戲物件 3 ...
飛機大戰遊戲詳解
private void logic else if y2 mysu ceview.height public void draw canvas canvas,paint paint public void run 還要記得用 裁剪飛機 public void myplane canvas canv...