遊戲初始化:設定遊戲視窗;建立遊戲時鐘;建立精靈,精靈組
遊戲迴圈:設定重新整理幀率;事件監聽;碰撞檢測;更新/繪製精靈組;更新螢幕顯示
使用物件導向設計飛機大戰遊戲類
明確主程式職責:1)遊戲初始化;2)遊戲迴圈
主程式類:plane_main:遊戲主程式
1)風轉著遊戲類;2)建立遊戲物件;3)啟動遊戲
plane_sprites:螢幕尺寸常量,遊戲精靈子類
1)封裝遊戲中所有需要使用的精靈子類;2)提供遊戲的相關工具
**實現:
新建plane_main.py檔案
使用常量代替固定的數值;
應用場景:
開發時,可能會需要使用固定的數值,例如螢幕的高度是700;這個時候,建議不要直接使用固定數值,而應該使用常量;在開發時,為了保證**的可維護性,盡量不要使用魔法數字;
常量常量的定義:定義常量和定義變數的語法完全一樣,都是使用賦值語句;
常量的命名應該所有字母都使用大寫,單詞與單詞之間使用下劃線連線;
#主遊戲類
import pygame
import plane_sprite
#螢幕大小的常量
screen_rect = pygame.rect(0,
0,480,
700)
#重新整理的幀率
frame_per_sec =
60class
planegame
(object):
"""飛機大戰主遊戲"""
def__init__
(self)
:print
("遊戲初始化"
)#1.建立遊戲視窗--矩形物件的size屬性就是元組
self.screen = pygame.display.set_mode(
(screen_rect.size)
)#2.建立遊戲時鐘
self.clock = pygame.time.clock(
)#3.呼叫私有方法,精靈和精靈組的建立
self.__create_sprites(
)def
__create_sprites
(self)
:pass
defstart_game
(self)
:print
("遊戲開始"
)while
true
:#1.設定刷頻率
self.clock.tick(frame_per_sec)
#2.事件監聽
self.__event_handles(
)#3.碰撞檢測
self.__check_collide(
)#4,更新/繪製精靈組
self.__update_sprites(
)#5.更新顯示
pygame.display.update(
)def
__event_handles
(self)
:for even in pygame.event.get():
#判斷是否退出遊戲
if even.
type
== pygame.quit:
planegame.__game_over(
)def
__check_collide
(self)
:pass
def__update_sprites
(self)
:pass
@staticmethod
def__game_over
(cls)
:print
("遊戲結束"
) pygame.quit(
) exit(
)if __name__ ==
'__main__'
:#建立遊戲物件
game = planegame(
)#啟動遊戲
game.start_game(
)
飛機大戰6 遊戲框架
目標 使用面相物件設計飛機大戰遊戲類 根據明確的職責,設計planegame類如下 提示根據職責封裝私有方法,可以避免某乙個方法的 寫得太過冗長 如果某乙個方法編寫的太長,既不好閱讀,也不好維護!方法 職責 create sprites self 建立所有精靈和精靈組 方法 職責 event han...
飛機大戰製作筆記6
1.我方飛機生命 1 在main檔案中增加乙個變數 life num 用來繼續當前生命數 2 在lift num 0 時 顯示遊戲退出畫面,同時關閉所有聲音和補給發放 3 繪製,繪製文字 2.無敵時間 1 在myplane類中增加乙個變數 self.invincible false 飛機一開始並不是...
LayaAir飛機大戰 6
增加難度條件,實現積分達到條件後進入新關卡的邏輯 onloop void 檢測碰撞 for var i number this.rolebox.numchildren 1 i 1 i 獲取角色物件1 var role1 role this.rolebox.getchildat i as role i...