Python_從零開始學習_(49) 飛機大戰_物件導向設計類

懂懂kkw發表於2018-11-05

目錄

 

1.  明確主程式職責

2.  實現飛機大戰主遊戲類 

2.1  明確檔案職責


1.  明確主程式職責


  • 一個遊戲主程式的 職責 可以分為兩個部分:

    遊戲初始化

    遊戲迴圈
  • 根據明確的職責,  設計 PlaneGame 類如下:

 提示 根據 職責 封裝私有方法,  可以避免某一個方法的程式碼寫得太過冗長

如果某一個方法編寫的太長,  既不好閱讀,  也不好維護!

  • 遊戲初始化  ----  __init__() 會呼叫以下方法:
方法 職責
  事件監聽
  碰撞檢測
  精靈組更新和繪製
  遊戲結束

 

 

 

 

 

 

2.  實現飛機大戰主遊戲類 


2.1  明確檔案職責

  • plane_main
  1. 封裝 主遊戲類
  2. 建立 遊戲物件
  3. 啟動遊戲
  • plane_sprites

    封裝遊戲中 所有 需要使用的 精靈子類

    提供遊戲的 相關工具

程式碼實現

  • 新建 plane_main.py 檔案,  並且設定為可執行
  • 編寫 繼承程式碼
class PlaneGame(object):
    """飛機大戰祝遊戲"""

    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

    def start_game(self):
        print("遊戲開始...")

使用 常量 代替固定的數值

  • 變數 ---- 不變化的量
  • 變數 ---- 可以變化的量

應用場景

  • 在開發時,  可能會需要使用 固定的數值,  例如 螢幕的高度 是 700
  • 這個時候,  建議 不要 直接使用固定數值,  而應該使用 常量
  • 在開發時,  為了保證程式碼的可維護性,  儘量不要使用 魔法數字

常量的定義

  • 定義 常量 和 定義 變數 的語法完全一樣,  都是使用 賦值語句
  • 常量 的 命名 應該 所有字母都使用大寫,  單詞與單詞之間使用下劃線連線

常量的好處

  • 閱讀程式碼時,  通過 常量名 見名知意,  不需要猜測數字的含義
  • 如果需要 調整值,  只需要 修改常量定義 就可以實現 統一修改

提示:  Python 中並沒有真正意義的常量,  只是通過命名的約定 ---- 所有字母都是大寫的就是常量,  開發時不要輕易的修改!

程式碼調整

  • 在 plane_sprites.py 中增加常量定義
# 定義螢幕大小常量
SCREEN_RECT = pygame.Rect(0, 0, 480, 700)
# 重新整理的幀率
FRAME_PER_SEC = 60

 

相關文章