天天看點

Python項目實踐:小遊戲外星人入侵(一)開始遊戲項目

作者:抗吧搬運工

“外星人入侵”是書籍《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()           

此時運作程式與之前并未不同,因為我們隻是将設定移到了不同的地方。下一步是在螢幕上添加新元素,我們會在接下來的文章繼續為你帶來相關知識