【学习笔记】《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()

 

posted @ 2018-05-26 15:06  史达林之剑  阅读(1636)  评论(0编辑  收藏  举报