最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python飛機大戰(zhàn)pygame游戲框架搭建操作詳解

 更新時間:2019年12月17日 11:00:27   作者:小飛俠v科比  
這篇文章主要介紹了python飛機大戰(zhàn)pygame游戲框架搭建操作,設(shè)計pygame模塊游戲創(chuàng)建、初始化、精靈組設(shè)置等相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了python飛機大戰(zhàn)pygame游戲框架搭建操作。分享給大家供大家參考,具體如下:

目標

  • 明確主程序職責
  • 實現(xiàn)主程序類
  • 準備游戲精靈組

01. 明確主程序職責

  • 回顧 快速入門案例,一個游戲主程序的 職責 可以分為兩個部分:
    • 游戲初始化
    • 游戲循環(huán)
  • 根據(jù)明確的職責,設(shè)計 PlaneGame 類如下:
    在這里插入圖片描述
    提示 根據(jù) 職責 封裝私有方法,可以避免某一個方法的代碼寫得太過冗長

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

  • 游戲初始化 —— init() 會調(diào)用以下方法:
    在這里插入圖片描述
    游戲循環(huán) —— start_game() 會調(diào)用以下方法:
    在這里插入圖片描述

02. 實現(xiàn)飛機大戰(zhàn)主游戲類

2.1 明確文件職責

在這里插入圖片描述

  • plane_main
    1. 封裝 主游戲類
    2. 創(chuàng)建 游戲?qū)ο?/li>
    3. 啟動游戲
  • plane_sprites
    • 封裝游戲中 所有 需要使用的 精靈子類
    • 提供游戲的 相關(guān)工具

代碼實現(xiàn)

  • 新建 plane_main.py 文件,并且設(shè)置為可執(zhí)行
  • 編寫 基礎(chǔ)代碼
import pygame
from plane_sprites import *


class PlaneGame(object):
  """飛機大戰(zhàn)主游戲"""

  def __init__(self):
    print("游戲初始化")

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


if __name__ == '__main__':
  # 創(chuàng)建游戲?qū)ο?
  game = PlaneGame()

  # 開始游戲
  game.start_game()

2.3 游戲初始化部分

完成 init() 代碼如下:

def __init__(self):
  print("游戲初始化")
  
  # 1. 創(chuàng)建游戲的窗口
  self.screen = pygame.display.set_mode((480, 700))
  # 2. 創(chuàng)建游戲的時鐘
  self.clock = pygame.time.Clock()
  # 3. 調(diào)用私有方法,精靈和精靈組的創(chuàng)建
  self.__create_sprites()

def __create_sprites(self):
  pass

使用 常量 代替固定的數(shù)值

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

應(yīng)用場景

  • 在開發(fā)時,可能會需要使用 固定的數(shù)值,例如 屏幕的高度 是 700
  • 這個時候,建議 不要 直接使用固定數(shù)值,而應(yīng)該使用 常量
  • 在開發(fā)時,為了保證代碼的可維護性,盡量不要使用 魔法數(shù)字

常量的定義

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

常量的好處

  • 閱讀代碼時,通過 常量名 見名之意,不需要猜測數(shù)字的含義
  • 如果需要 調(diào)整值,只需要 修改常量定義 就可以實現(xiàn) 統(tǒng)一修改

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

代碼調(diào)整

  • 在 plane_sprites.py 中增加常量定義
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):
  """開始游戲"""
  
  print("開始游戲...")
    
  while True:
  
    # 1. 設(shè)置刷新幀率
    self.clock.tick(60)
    
    # 2. 事件監(jiān)聽
    self.__event_handler()
    
    # 3. 碰撞檢測
    self.__check_collide()
    
    # 4. 更新精靈組
    self.__update_sprites()
    
    # 5. 更新屏幕顯示
    pygame.display.update()

def __event_handler(self):
  """事件監(jiān)聽"""
  
  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():
  """游戲結(jié)束"""

  print("游戲結(jié)束")
  pygame.quit()
  exit()

03. 準備游戲精靈組

3.1 確定精靈組

在這里插入圖片描述

3.2 代碼實現(xiàn)

創(chuàng)建精靈組方法

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

更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python游戲開發(fā)技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對大家Python程序設(shè)計有所幫助。

相關(guān)文章

  • C++和python實現(xiàn)阿姆斯特朗數(shù)字查找實例代碼

    C++和python實現(xiàn)阿姆斯特朗數(shù)字查找實例代碼

    這篇文章主要給大家介紹了關(guān)于C++和python實現(xiàn)阿姆斯特朗數(shù)字查找的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Django把SQLite數(shù)據(jù)庫轉(zhuǎn)換為Mysql數(shù)據(jù)庫的過程

    Django把SQLite數(shù)據(jù)庫轉(zhuǎn)換為Mysql數(shù)據(jù)庫的過程

    之前我們默認使用的是SQLite數(shù)據(jù)庫,我們開發(fā)完成之后,里面有許多數(shù)據(jù),如果我們想轉(zhuǎn)換成Mysql數(shù)據(jù)庫,那我們先得把舊數(shù)據(jù)從SQLite導(dǎo)出,然后再導(dǎo)入到新的Mysql數(shù)據(jù)庫里去,這篇文章主要介紹了Django如何把SQLite數(shù)據(jù)庫轉(zhuǎn)換為Mysql數(shù)據(jù)庫,需要的朋友可以參考下
    2023-05-05
  • 利用Python找出刪除自己微信的好友并將他們自動化刪除

    利用Python找出刪除自己微信的好友并將他們自動化刪除

    你是否有微信被刪了好友不自知,還傻傻的給對方發(fā)消息,結(jié)果出現(xiàn)了下圖中那尷尬的一幕的經(jīng)歷呢?其實我們可以用Python提前把他們找出來并自動化刪除避免尷尬的
    2023-01-01
  • Python使用XPath解析HTML的方法詳解

    Python使用XPath解析HTML的方法詳解

    XPath是一種用于選擇XML文檔中節(jié)點的語言,它可以通過路徑表達式來定位節(jié)點。本文將介紹Python中使用XPath解析HTML文檔的方法和技巧,需要的可以參考下
    2023-05-05
  • Python實現(xiàn)將wav轉(zhuǎn)amr,并轉(zhuǎn)換成hex數(shù)組

    Python實現(xiàn)將wav轉(zhuǎn)amr,并轉(zhuǎn)換成hex數(shù)組

    這篇文章主要介紹了Python實現(xiàn)將wav轉(zhuǎn)amr,并轉(zhuǎn)換成hex數(shù)組方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • python清除字符串里非數(shù)字字符的方法

    python清除字符串里非數(shù)字字符的方法

    這篇文章主要介紹了python清除字符串里非數(shù)字字符的方法,涉及Python使用re模塊正則替換操作字符串的技巧,需要的朋友可以參考下
    2015-07-07
  • python實現(xiàn)關(guān)閉第三方窗口的方法

    python實現(xiàn)關(guān)閉第三方窗口的方法

    今天小編就為大家分享一篇python實現(xiàn)關(guān)閉第三方窗口的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • 使用python裝飾器計算函數(shù)運行時間的實例

    使用python裝飾器計算函數(shù)運行時間的實例

    下面小編就為大家分享一篇使用python裝飾器計算函數(shù)運行時間的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Django實現(xiàn)靜態(tài)文件緩存到云服務(wù)的操作方法

    Django實現(xiàn)靜態(tài)文件緩存到云服務(wù)的操作方法

    這篇文章主要介紹了Django實現(xiàn)靜態(tài)文件緩存到云服務(wù)的操作方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • python面試題小結(jié)附答案實例代碼

    python面試題小結(jié)附答案實例代碼

    這篇文章主要介紹了python面試題小結(jié),本文通過實例代碼相結(jié)合的形式給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04

最新評論

鹰潭市| 大同县| 太和县| 山阴县| 乐安县| 博罗县| 子长县| 雷波县| 武鸣县| 六枝特区| 沭阳县| 襄垣县| 精河县| 大埔区| 南川市| 锦州市| 扶余县| 平罗县| 保亭| 太康县| 通城县| 仙游县| 邮箱| 安达市| 潮安县| 宜春市| 德钦县| 朝阳县| 德兴市| 桂东县| 勃利县| 大新县| 和龙市| 郧西县| 武川县| 祁门县| 万安县| 崇仁县| 秭归县| 鄂州市| 福建省|