“外星人入侵”是書籍《Python程式設計:從入門到實踐》中提供的一個項目,本系列文章将會教大家如何一步步開發這個項目,如果有任何疑問可以在評論區中向我提問。
1.1規劃項目
我們先在系統中建立名為alie_invasion的檔案夾,将項目所有檔案都儲存在這個檔案夾中,以保證相關的import語句正常工作。
開發任何項目,我們必須在編寫代碼前明确項目的目标、制定規劃。我們必須先描述我們要開發的項目。下面來編寫遊戲《外星人入侵》的描述。
在遊戲《外星人入侵》中,玩家控制一艘最初出現在螢幕底部中央的飛船。玩家可以使用箭頭鍵左右移動飛船,還可使用空格鍵射擊。遊戲開始時,一群外星人出現在天空中,并向螢幕下方移動。玩家的任務是射殺這些外星人。玩家将所有外星人都消滅幹淨後,将出現一群新的外星人,其移動速度更快。隻要有外星人撞到玩家的飛船或到達螢幕底部,玩家就損失一艘飛船。玩家損失三艘飛船後,遊戲結束。
開發的第一個階段将建立一艘飛船,它可以左右移動,并能在使用者按空格鍵開火。
1.2安裝pygame
第一種方法是在終端裡直接安裝,輸入pip install pygame,第二種方法是在pycharm的setting中安裝。pygame是我們開發項目的必備子產品
1.3開始遊戲項目
首先建立一個空的pygame視窗。然後讓這個遊戲響應使用者輸入,設定背景色等等。
1.3.1建立pygame視窗及響應使用者輸入
在編輯器中建立檔案alien_invasion.py,建立空的pygame視窗
import sys
import pygame
class AlienInvasion:##管理遊戲資源和行為的類
def __init__(self):##初始化遊戲并建立遊戲資源
pygame.init()##初始化背景設定
self.screen=pygame.display.set_mode((1200,785))##建立顯示視窗
pygame.display.set_caption("Alien Invation")
def run_game(self):##開始遊戲的主循環
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
sys.exit()##當玩家單擊關閉按鈕時,退出遊戲
pygame.display.flip()#讓最近螢幕可見
if __name__=='__main__':##建立遊戲執行個體并運作遊戲
ai=AlienInvasion()
ai.run_game()
1.3.2設定背景色
上述代碼預設建立一個黑色代碼,我們可以加入代碼以設定背景色。
import sys
import pygame
class AlienInvasion:##管理遊戲資源和行為的類
def __init__(self):##初始化遊戲并建立遊戲資源
pygame.init()##初始化背景設定
self.screen=pygame.display.set_mode((1200,785))##建立顯示視窗
pygame.display.set_caption("Alien Invation")
self.bgcolor=(230,230,230)#設定背景色
def run_game(self):##開始遊戲的主循環
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
sys.exit()##當玩家單擊關閉按鈕時,退出遊戲
self.screen.fill(self.bgcolor)#每次循環時重繪螢幕
pygame.display.flip()#讓最近螢幕可見
if __name__=='__main__':##建立遊戲執行個體并運作遊戲
ai=AlienInvasion()
ai.run_game()
主要添加了8和15行代碼。其中顔色可以根據愛好自己設定,這裡的(230,230,230)是淺灰色。
1.3.3建立設定類
為了友善和後期維護添加新功能,我們将所有的設定都存儲在名為settings的子產品中,其中包含Settings的類。當我們後期添加設定時,隻要修改這個子產品即可。
class Settings:
def __init__(self):
self.screen_width=1200
self.screeen_height=785
self.bg_color=(230,230,230)
相對的,因為建立了settings這個類,我們也需要修改alien_invasion,将其中用到的設定替換成從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.screeen_height))##建立顯示視窗
pygame.display.set_caption("Alien Invation")
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()
此時運作程式與之前并未不同,因為我們隻是将設定移到了不同的地方。下一步是在螢幕上添加新元素,我們會在接下來的文章繼續為你帶來相關知識