【學習筆記】《Python從入門到實踐》游戲-Alien Invasion


主模塊alien_invasion.py

 1 #導入兩個庫
 2 from settings import Settings 
 3 from ship import Ship 4 import game_function as gf
 5 import pygame
 6 
 7  
 8 
 9 def run_game():
10 
11   #初始化游戲並創建一個屏幕對象
12 
13   pygame.init()#沒搞清楚初始化有什么用?
14   ai_settings = Settings()#通過ai_settings引用Settings類
15   screen = pygame.display.set_mode(
                      (ai_settings.screen_width,ai_settings.screen_height))#創建一個的窗口,大小由Settings類                                                     里的screen_width和screen_height決定 16    17   pygame.display.set_caption("Alien Invasion")#給窗口標題命名——Alien Invasion 18 19   #為何創建窗口需要保存在變量里,而給窗口命名只需要一個方法? 20 21   #創建一艘飛船
23   ship = Ship()#創建Ship類的實例ship 24 25   #開始游戲的主循環 26 27   while True: 28 29      30 31     #監視鍵盤和鼠標事件 32 33     gf.check_events()
      #更新屏幕
36     gf.update_screen(ai_settings,screen,ship)#gf.update_screen函數有3個參數,分別是ai_settings(Settings類的實例),screen                              (屏幕對象)和ship(Ship類的實例) 37     38 39      40run_game()

 

模塊一 游戲設置settings.py

 1 class Settings():
 2 
 3 """存儲《外星人入侵》的所有設置的類"""
 4 
 5 def __init__(self):
 6 
 7   """初始化游戲的設置"""
 8 
 9   #屏幕設置
10 
11   self.screen_width = 1200
12 
13   self.screen_height = 800
14 
15   self.bg_color = (230,230,230)

 

 

模塊二 添加飛船圖像ship.py

 1 import pygame
 2 
 3 class Ship():
 4     
 5     def __init__(self,screen):
 6         """初始化飛船並設置其初始設置"""
 7         self.screen = screen
 8         
 9         #加載飛船圖像並獲取其外接矩形
10         self.image = pygame.image.load('images/ship.bmp')
11         self.rect = self.image.get_rect()
12         self.screen_rect = screen.get_rect()
13         
14         #將每艘新飛船放在屏幕底部中央
15         self.rect.centerx = self.screen_rect.centerx
16         self.rect.bottom = self.screen_rect.bottom
17 
18     def blitme(self):
19         """在指定位置繪制飛船"""
20         self.screen.blit(self.image,self.rect)

模塊三 游戲運行模塊game_function.py

 1 import sys
 2 
 3 import pygame
 4 
 5 def check_events():
 6     """響應按鍵和鼠標事件"""
 7     for event in pygame.event.get():
 8         if event.type == pygame.QUIT:
 9             sys.exit()
10 
11 def update_screen(ai_settings,screen,ship):
12     """更新屏幕上的圖像,並切換到新屏幕"""
13     #讓每次循環時都重繪屏幕
14     screen.fill(ai_settings.bgcolor)#給窗口添加背景色(參數為背景色),screen.fill = pygame.display.set_mode().fill,
                      ai_settings.bgcolor等於Settings類下的bgcolor對象值
15    ship.blitme()#在指定位置繪制飛船(等價於Ship類下的blitme函數,實質是ship.pygame.display.set_mode().blitme
16 
17 #讓最近繪制的屏幕可見
18 pygame.display.flip()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM