1. 程式人生 > 程式設計 >python飛機大戰pygame遊戲框架搭建操作詳解

python飛機大戰pygame遊戲框架搭建操作詳解

本文例項講述了python飛機大戰pygame遊戲框架搭建操作。分享給大家供大家參考,具體如下:

目標

  • 明確主程式職責
  • 實現主程式類
  • 準備遊戲精靈組

01. 明確主程式職責

  • 回顧 快速入門案例,一個遊戲主程式的 職責 可以分為兩個部分:
    • 遊戲初始化
    • 遊戲迴圈
  • 根據明確的職責,設計 PlaneGame 類如下:
    在這裡插入圖片描述
    提示 根據 職責 封裝私有方法,可以避免某一個方法的程式碼寫得太過冗長

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

  • 遊戲初始化 —— init() 會呼叫以下方法:
    在這裡插入圖片描述
    遊戲迴圈 —— start_game() 會呼叫以下方法:
    在這裡插入圖片描述

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

2.1 明確檔案職責

在這裡插入圖片描述

  • plane_main
    1. 封裝 主遊戲類
    2. 建立 遊戲物件
    3. 啟動遊戲
  • plane_sprites
    • 封裝遊戲中 所有 需要使用的 精靈子類
    • 提供遊戲的 相關工具

程式碼實現

  • 新建 plane_main.py 檔案,並且設定為可執行
  • 編寫 基礎程式碼
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()

2.3 遊戲初始化部分

完成 init() 程式碼如下:

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

使用 常量 代替固定的數值

  • 常量 —— 不變化的量
  • 變數 —— 可以變化的量

應用場景

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

常量的定義

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

常量的好處

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

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

程式碼調整

  • 在 plane_sprites.py 中增加常量定義
import pygame

# 遊戲螢幕大小
SCREEN_RECT = pygame.Rect(0,480,700)

修改 plane_main.py 中的視窗大小

self.screen = pygame.display.set_mode(SCREEN_RECT.size)

2.4 遊戲迴圈部分

完成 start_game() 基礎程式碼如下:

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("遊戲結束")
  pygame.quit()
  exit()

03. 準備遊戲精靈組

3.1 確定精靈組

在這裡插入圖片描述

3.2 程式碼實現

建立精靈組方法

def __create_sprites(self):
  """建立精靈組"""
  
  # 背景組
  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)

更多關於Python相關內容可檢視本站專題:《Python遊戲開發技巧總結》、《Python資料結構與演算法教程》、《Python Socket程式設計技巧總結》、《Python函式使用技巧總結》、《Python字串操作技巧彙總》、《Python入門與進階經典教程》及《Python檔案與目錄操作技巧彙總》

希望本文所述對大家Python程式設計有所幫助。