您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關如何使用Python寫一個小游戲的方法的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
本人電腦是windows 10、python3.6,pygame下載地址: 傳送門
請自行下載對應python版本的pygame 運行以下命令
$ pip install wheel $ pip install pygame?1.9.3?cp36?cp36m?win_amd64.whl
創建Pygame窗口及響應用戶輸入
新建一個文件夾alien_invasion,并在文件夾中新建alien_invasion.py文件,輸入如下代碼。
import sys import pygame def run_game(): #initialize game and create a dispaly object pygame.init() screen = pygame.display.set_mode((1200,800)) pygame.display.set_caption("Alien Invasion") # set backgroud color bg_color = (230,230,230) # game loop while True: # supervise keyboard and mouse item for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() # fill color screen.fill(bg_color) # visualiaze the window pygame.display.flip() run_game()
運行上述代碼,我們可以得到一個灰色界面的窗口:
$ python alien_invasion.py
為了在寫游戲的過程中能便捷地創建一些新功能,下面額外編寫一個settings模塊,其中包含一個Settings類,用于將所有設置存儲在一個地方。這樣在以后項目增大時修改游戲的外觀就更加容易。 我們首先將alien_invasion.py中的顯示屏大小及顯示屏顏色進行修改。 首先在alien_invasion文件夾下新建python文件settings.py,并向其中添加如下代碼:
class Settings(object): """docstring for Settings""" def __init__(self): # initialize setting of game # screen setting self.screen_width = 1200 self.screen_height = 800 self.bg_color = (230,230,230)
然后再alien_invasion.py中導入Settings類,并使用相關設置,修改如下:
import sys import pygame from settings import Settings def run_game(): #initialize game and create a dispaly object pygame.init() ai_settings = Settings() screen = pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height)) pygame.display.set_caption("Alien Invasion") # set backgroud color bg_color = (230,230,230) # game loop while True: # supervise keyboard and mouse item for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() # fill color screen.fill(ai_settings.bg_color) # visualiaze the window pygame.display.flip() run_game()
接下來,我們需要將飛船加入游戲中。為了在屏幕上繪制玩家的飛船,我們將加載一幅圖像,再使用Pygame()方法blit()繪制它。 在游戲中幾乎可以使用各種類型的圖像文件,但是使用位圖(.bmp)文件最為簡單,這是因為Pygame默認加載位圖。雖然其他類型的圖像也能加載,但是需要安裝額外的庫。我們推薦去免費的圖片素材網站上去找圖像: 傳送門 。我們在主項目文件夾(alien_invasion)中新建一個文件夾叫images,將如下bmp圖片放入其中。
接下來,我們創建飛船類ship.py:
import pygame class Ship(): def __init__(self,screen): #initialize spaceship and its location self.screen = screen # load bmp image and get rectangle self.image = pygame.image.load('image/ship.bmp') self.rect = self.image.get_rect() self.screen_rect = screen.get_rect() #put spaceship on the bottom of window self.rect.centerx = self.screen_rect.centerx self.rect.bottom = self.screen_rect.bottom def blitme(self): #buld the spaceship at the specific location self.screen.blit(self.image,self.rect)
最后我們在屏幕上繪制飛船,即在alien_invasion.py文件中調用blitme方法:
import sys import pygame from settings import Settings from ship import Settings def run_game(): #initialize game and create a dispaly object pygame.init() ai_settings = Settings() screen = pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height)) ship = Ship(screen) pygame.display.set_caption("Alien Invasion") # set backgroud color bg_color = (230,230,230) # game loop while True: # supervise keyboard and mouse item for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() # fill color screen.fill(ai_settings.bg_color) ship.blitme() # visualiaze the window pygame.display.flip() run_game()
重構:模塊game_functions
在大型項目中,經常需要在添加新代碼前重構既有代碼。重構的目的是為了簡化代碼的結構,使其更加容易擴展。我們將實現一個game_functions模塊,它將存儲大量讓游戲Alien invasion運行的函數。通過創建模塊game_functions,可避免alien_invasion.py太長,使其邏輯更容易理解。
首先我們將管理事件的代碼移到一個名為check_events()的函數中,目的是為了隔離事件循環
import sys import pygame def check_events(): #respond to keyboard and mouse item for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit()
然后我們修改alien_invasion.py代碼,導入game_functions模塊,并將事件循環替換成對函數check_events()的調用:
import sys import pygame from settings import Settings from ship import Ship import game_functions as gf def run_game(): #initialize game and create a dispaly object pygame.init() ai_settings = Settings()
感謝各位的閱讀!關于“如何使用Python寫一個小游戲的方法”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。