在開發《外星人入侵》小遊戲的過程中,我們要不斷給遊戲新增新功能,通常要引入一些新設定,那我們需要建立乙個類來儲存所有設定,這樣可以避免我們在複雜的**中到處新增新設定。
通過建立乙個類來儲存所有設定,當要修改小遊戲的某些元素時也僅僅只是修改該類中的值就好。
class settings:
'''儲存遊戲《外星人入侵》中所有設定的類'''
def __init__(self):
'''初始化遊戲的設定'''
#初始化螢幕設定
self.screen_width=1200
self.screen_height=800
self.bg_color=(230,230,230)
在這次示例中,我們新增了乙個新類,名為settings。
值得注意的一點是我們需要在主程式檔案中匯入settings類,因此我們需要修改主程式中某些**,除了修改**以外,還需將主程式檔案和此次檔案放在同乙個資料夾下,否則無法匯入。
import sys
import pygame
from settings import settings
class alieninvasion:
'''管理資源和行為的類'''
def __init__(self):
'''初始化遊戲並建立遊戲資源'''
pygame.init()
self.settings=settings()
self.screen=pygame.display.set_mode(
(self.settings.screen_width,self.settings.screen_height))
pygame.display.set_caption("alieninvasion")
def run_game(self):
'''開始遊戲的主迴圈'''
while true:
#監視鍵盤和滑鼠
for event in pygame.event.get():
if event.type==pygame.quit:
sys.exit()
#每次迴圈時都重繪螢幕
self.screen.fill(self.settings.bg_color )
#讓最近繪製的螢幕可見
pygame.display.flip()
if __name__=='__main__':
#建立遊戲例項並執行遊戲
ai=alieninvasion()
ai.run_game()
在主程式檔案中,我們使用**行from settings import settings從檔名settings.py中匯入settings類,並在方法__init__中呼叫pygame.init(),再建立乙個settings例項並將其賦給self.settings。
**行self.screen=pygame.display.set_mode(
self.settings.screen_width,self.settings.screen_height))是表示建立螢幕屬性時,使用self.settings的屬性screen_width和screen_height。
**行self.screen.fill(self.settings.bg_color )是填充螢幕背景色時,也使用了settings的屬性bg_color。
bg_color=(230,230,230)是填充背景色為灰色的乙個狀態。
pygame入門小遊戲(外星人入侵(7) )
我們來移動外星飛船,思想是飛船左右移動,碰到螢幕邊緣後,然後會向下移動 在alien.py中新增方法update def update self 向右移動外星飛船 self.x 1 self.rect.x self.x 然後在主迴圈中更新外星人的位置 ck.update aliens aliens ...
外星人入侵
今天是乙個週末,宿舍的人全部都出去玩了,而我因為太懶乙個人留在了宿舍,連床都不起,吃飯靠的是點外賣。不過,為了好玩,我跟著書本學習打了乙個2d小遊戲,並加入了一點自己的東西。一 遊戲頁面 剛開始我把所有的遊戲螢幕設定都放在了下面 裡,這使得 看起來非常長,和雜亂,所以為了使遊戲方便擴充套件和整個 邏...
Pygame 外星人入侵(7)外星人壓境
二 更加合理地移動 三 小結 在之前的博文中,實現了在螢幕上繪製一大群外星人,現在我們想讓這群外星人動起來,它們的移動遵循著一定的規律。我們首先要實現的是,如何讓一群外星人一起向螢幕右側移動。遊戲引數性質的變數統一存放在 設定模組中的設定類中 6 外星人的屬性 6。1 外星人移動的速度 self.a...