13-1 星星 :找一幅星星图像,并在屏幕上显示一系列整齐排列的星星。
alien3.py
1 import pygame 2 from pygame.sprite import Sprite 3 class Alien3(Sprite): 4 """表示单个外星人的类""" 5 def __init__(self,screen): 6 """初始化外星人并设置其初始位置""" 7 super(Alien3,self).__init__() 8 self.screen=screen 9 10 #加载外星人图像,并设置其rect属性 11 self.image=pygame.image.load('image/alien.bmp') 12 self.rect=self.image.get_rect() 13 14 #每个外星人最初都在屏幕左上角附近 15 self.rect.x=self.rect.width 16 self.rect.y=self.rect.height 17 18 #存储外星人的准确位置 19 self.x=float(self.rect.x) 20 21 def blitme(self): 22 """在指定位置绘制外星人""" 23 self.screen.blit(self.image,self.rect)
game_function3.py
1 import sys 2 import pygame 3 from alien3 import Alien3 4 5 def create_fleet(screen,aliens): 6 """创建外星人群""" 7 #创建一个外星人,并计算一行可容纳多少个外星人 8 #外星人间距为外星人宽度 9 alien=Alien3(screen) 10 alien_width = alien.rect.width 11 alien_height = alien.rect.height 12 available_space_x = 1000 - 2 * alien_width 13 number_aliens_x = int(available_space_x / (2 * alien_width)) 14 available_apace_y = (500 - (2 * alien_height)) 15 number_rows = int(available_apace_y / (2 * alien_height)) 16 17 #创建外星人群 18 for row_number in range(number_rows): 19 for alien_number in range(number_aliens_x): 20 alien = Alien3(screen) 21 alien.x = alien_width + 2 * alien_width * alien_number 22 alien.rect.x = alien .x 23 alien.y = alien_height + 2 * alien_height * row_number 24 alien.rect.y = alien .y 25 aliens.add(alien)
alien_invasion3.py
1 import sys 2 import pygame 3 from pygame.sprite import Group 4 import game_function3 as gf 5 from alien3 import Alien3 6 7 8 def run_game(): 9 #初始化游戏并创建一个屏幕对象 10 pygame.init() 11 screen=pygame.display.set_mode((1000,500)) 12 bg_color = (230, 230, 230) 13 pygame.display.set_caption("Alien Invasion") 14 aliens=Group() 15 16 while True: 17 for event in pygame.event.get(): 18 if event.type == pygame.QUIT: 19 sys.exit() #若不写这三句退出有影响 20 gf.create_fleet(screen, aliens) 21 screen.fill(bg_color) 22 aliens.draw(screen) 23 pygame.display.flip() 24 25 run_game()
输出:
13-2 更逼真的星星 :为让星星的分布更逼真,可随机地放置星星。本书前面说过,可像下面这样来生成随机数:
from random import randint
random_number = randint(-10,10)
alien3.py
1 import pygame 2 from pygame.sprite import Sprite 3 class Alien3(Sprite): 4 """表示单个外星人的类""" 5 def __init__(self,screen): 6 """初始化外星人并设置其初始位置""" 7 super(Alien3,self).__init__() 8 self.screen=screen 9 10 #加载外星人图像,并设置其rect属性 11 self.image=pygame.image.load('image/alien.bmp') 12 self.rect=self.image.get_rect() 13 14 #每个外星人最初都在屏幕左上角附近 15 self.rect.x=self.rect.width 16 self.rect.y=self.rect.height 17 18 #存储外星人的准确位置 19 self.x=float(self.rect.x) 20 21 def blitme(self): 22 """在指定位置绘制外星人""" 23 self.screen.blit(self.image,self.rect)
game_function3.py
1 import sys 2 import pygame 3 from alien3 import Alien3 4 from random import randint 5 6 def create_fleet(screen,aliens): 7 """创建外星人群""" 8 #创建一个外星人,并计算一行可容纳多少个外星人 9 #外星人间距为外星人宽度 10 alien=Alien3(screen) 11 alien_width = alien.rect.width 12 alien_height = alien.rect.height 13 available_space_x = 1000 - 2 * alien_width 14 number_aliens_x = int(available_space_x / (2 * alien_width)) 15 available_apace_y = (500 - (2 * alien_height)) 16 number_rows = int(available_apace_y / (2 * alien_height)) 17 18 #创建外星人群 19 for row_number in range(number_rows): 20 for alien_number in range(number_aliens_x): 21 alien = Alien3(screen) 22 alien.x = randint(-10,10) + 2 * alien_width * alien_number 23 alien.rect.x = alien .x 24 alien.y = randint(-10,10) + 2 * alien_height * row_number 25 alien.rect.y = alien .y 26 aliens.add(alien)
alien_invasion3.py
1 import sys 2 import pygame 3 from pygame.sprite import Group 4 import game_function3 as gf 5 from alien3 import Alien3 6 7 8 def run_game(): 9 #初始化游戏并创建一个屏幕对象 10 pygame.init() 11 screen=pygame.display.set_mode((1000,500)) 12 bg_color = (230, 230, 230) 13 pygame.display.set_caption("Alien Invasion") 14 aliens=Group() 15 gf.create_fleet(screen, aliens) 16 17 while True: 18 for event in pygame.event.get(): 19 if event.type == pygame.QUIT: 20 sys.exit() #若不写这三句退出有影响 21 22 screen.fill(bg_color) 23 aliens.draw(screen) 24 pygame.display.flip() 25 26 run_game()
输出:
13-3 雨滴 :寻找一幅雨滴图像,并创建一系列整齐排列的雨滴。让这些雨滴往下落,直到到达屏幕底端后消失。
alien.py
1 import pygame 2 from pygame.sprite import Sprite 3 class Alien(Sprite): 4 """表示单个外星人的类""" 5 def __init__(self,screen): 6 """初始化外星人并设置其初始位置""" 7 super(Alien,self).__init__() 8 self.screen=screen 9 10 self.image=pygame.image.load('image/ship.bmp') 11 self.rect=self.image.get_rect() 12 #每个外星人最初都在屏幕左上角附近 13 self.rect.x=self.rect.width 14 self.rect.y=self.rect.height 15 #存储外星人的准确位置 16 self.x = float(self.rect.x) 17 self.y = float(self.rect.y) 18 19 self.speed = 1 20 #self.alien_speed_factor=2 21 22 def blitme(self): 23 """在指定位置绘制外星人""" 24 self.screen.blit(self.image,self.rect) 25 26 def update(self): 27 """向下移动外星人""" 28 self.y += self.speed 29 self.rect.y=self.y
game_function4.py
1 import sys 2 import pygame 3 from alien4 import Alien 4 5 def check_fleet_edges(aliens): 6 #有外星人到达边缘时采取相应措施 7 for alien in aliens: 8 alien.update() 9 if alien.rect.y>600: 10 aliens.remove(alien) 11 12 def create_fleet(screen,aliens): 13 """创建外星人群""" 14 #创建一个外星人,并计算一行可容纳多少个外星人 15 #外星人间距为外星人宽度 16 alien=Alien(screen) 17 alien_width = alien.rect.width 18 alien_height = alien.rect.height 19 available_space_x = 1000 - 2 * alien_width 20 number_aliens_x = int(available_space_x / (2 * alien_width)) 21 available_apace_y = (500 - (2 * alien_height)) 22 number_rows = int(available_apace_y / (2 * alien_height)) 23 24 #创建外星人群 25 #for row_number in range(number_rows): 26 for alien_number in range(number_aliens_x): 27 alien = Alien(screen) 28 alien.x = alien_width + 2 * alien_width * alien_number 29 alien.rect.x = alien .x 30 #alien.y = alien_height + 2 * alien_height * row_number 31 #alien.rect.y = alien .y 32 aliens.add(alien)
alien_invasion4.py
1 import sys 2 import pygame 3 from pygame.sprite import Group 4 import game_function4 as gf 5 #from settings4 import Settings 6 from alien4 import Alien 7 8 def run_game(): 9 #初始化游戏并创建一个屏幕对象 10 pygame.init() 11 screen = pygame.display.set_mode((1000, 500)) 12 bg_color = (230, 230, 230) 13 pygame.display.set_caption("Alien Invasion") 14 aliens = Group() 15 gf.create_fleet(screen, aliens) 16 17 #开始游戏主循环 18 while True: 19 for event in pygame.event.get(): 20 if event.type == pygame.QUIT: 21 sys.exit() #若不写这三句退出有影响 22 23 screen.fill(bg_color) 24 gf.check_fleet_edges(aliens) 25 aliens.draw(screen) 26 pygame.display.flip() 27 run_game()
输出:
13-4 连绵细雨 :修改为完成练习13-3而编写的代码,使得一行雨滴消失在屏幕底端后,屏幕顶端又出现一行新雨滴,并开始往下落。
alien4.py
1 import pygame 2 from pygame.sprite import Sprite 3 class Alien(Sprite): 4 """表示单个外星人的类""" 5 def __init__(self,screen): 6 """初始化外星人并设置其初始位置""" 7 super(Alien,self).__init__() 8 self.screen=screen 9 self.image=pygame.image.load('image/ship.bmp') 10 self.rect=self.image.get_rect() 11 #每个外星人最初都在屏幕左上角附近 12 self.rect.x=self.rect.width 13 self.rect.y=self.rect.height 14 #存储外星人的准确位置 15 self.x = float(self.rect.x) 16 self.y = float(self.rect.y) 17 self.speed = 1 18 19 def blitme(self): 20 """在指定位置绘制外星人""" 21 self.screen.blit(self.image,self.rect) 22 23 def update(self): 24 """向下移动外星人""" 25 self.y += self.speed 26 self.rect.y=self.y
game_function4.py
1 import sys 2 import pygame 3 from alien4 import Alien 4 5 def check_fleet_edges(screen,aliens): 6 # 有外星人到达边缘时采取相应措施 7 flag=False 8 for alien in aliens: 9 alien.update() 10 if alien.rect.y > 400: 11 aliens.remove(alien) 12 flag =True 13 if flag: 14 create_fleet(screen, aliens) 15 flag = False 16 17 def create_fleet(screen,aliens): 18 """创建外星人群""" 19 #创建一个外星人,并计算一行可容纳多少个外星人 20 #外星人间距为外星人宽度 21 alien=Alien(screen) 22 alien_width = alien.rect.width 23 alien_height = alien.rect.height 24 available_space_x = 1000 - 2 * alien_width 25 number_aliens_x = int(available_space_x / (2 * alien_width)) 26 available_apace_y = (500 - (2 * alien_height)) 27 number_rows = int(available_apace_y / (2 * alien_height)) 28 29 #创建外星人群 30 #for row_number in range(number_rows): 31 for alien_number in range(number_aliens_x): 32 alien = Alien(screen) 33 alien.x = alien_width + 2 * alien_width * alien_number 34 alien.rect.x = alien .x 35 #alien.y = alien_height + 2 * alien_height * row_number 36 #alien.rect.y = alien .y 37 aliens.add(alien)
alien_invasion4.py
1 import sys 2 import pygame 3 from pygame.sprite import Group 4 import game_function4 as gf 5 #from settings4 import Settings 6 from alien4 import Alien 7 8 def run_game(): 9 #初始化游戏并创建一个屏幕对象 10 pygame.init() 11 screen = pygame.display.set_mode((1000, 500)) 12 bg_color = (230, 230, 230) 13 pygame.display.set_caption("Alien Invasion") 14 aliens = Group() 15 gf.create_fleet(screen, aliens) 16 17 18 #开始游戏主循环 19 while True: 20 for event in pygame.event.get(): 21 if event.type == pygame.QUIT: 22 sys.exit() #若不写这三句退出有影响 23 24 screen.fill(bg_color) 25 gf.check_fleet_edges(screen,aliens) 26 aliens.draw(screen) 27 pygame.display.flip() 28 run_game()
输出:
13-5 抓球:创建一个游戏,在屏幕地段放置一个玩家可左右移动的角色。让一个球出现在屏幕顶端,且水平位置是随机的,并让这个球以固定的速度往下落。如果角色与球发生碰撞(表示将球抓住了),就让球消失。每当角色抓住球或引球抵达屏幕低端而消失后,都创建一个新球。
settings5.py
1 class Settings(): 2 #存储《外星人入侵》的所有设置的类 3 def __init__(self): 4 #初始化游戏的设置 5 #屏幕设置 6 self.screen_width=1200 7 self.screen_height=700 8 self.bg_color=(230,230,230) 9 #飞船的设置 10 self.ship_speed_factor=1.5 11 self.alien_speed_factor=1
alien5,py
1 import pygame 2 from pygame.sprite import Sprite 3 from random import randint 4 class Alien(Sprite): 5 """表示单个外星人的类""" 6 def __init__(self,ai_settings,screen): 7 """初始化外星人并设置其初始位置""" 8 super(Alien,self).__init__() 9 self.screen=screen 10 self.screen_rect = self.screen.get_rect() 11 self.ai_settings=ai_settings 12 #加载外星人图像,并设置其rect属性 13 self.image=pygame.image.load('image/alien.bmp') 14 self.rect=self.image.get_rect() 15 #每个外星人最初都在屏幕顶端随机位置 16 self.rect.x=randint(0,self.screen_rect.right-self.rect.width) 17 self.rect.y=0 18 #存储外星人的准确位置 19 self.x=float(self.rect.x) 20 self.y = float(self.rect.y) 21 22 def blitme(self): 23 """在指定位置绘制外星人""" 24 self.screen.blit(self.image,self.rect) 25 26 def update(self): 27 """向下移动外星人""" 28 self.y +=self.ai_settings.alien_speed_factor 29 self.rect.y=self.y
ship5.py
1 import pygame 2 from pygame.sprite import Sprite 3 class Ship(Sprite): 4 def __init__(self,ai_settings,screen): 5 #初始化飞船并设置其初始位置 6 super(Ship, self).__init__() 7 self.screen=screen 8 self.ai_settings=ai_settings 9 #加载飞船图像并获取其外接矩形 10 self.image=pygame.image.load('image/ship.bmp') 11 self.rect=self.image.get_rect() 12 self.screen_rect=screen.get_rect() 13 #将每艘新飞船放在屏幕底部中央 14 self.rect.centerx=self.screen_rect.centerx 15 self.rect.bottom=self.screen_rect.bottom 16 #在飞船的属性center中存储小数值 17 self.center=float(self.rect.centerx) 18 19 #移动标志 20 self.moving_right=False 21 self.moving_left = False 22 def update(self): 23 """根据移动标志调整飞船位置""" 24 #更新飞船的center值,而不是rect 25 if self.moving_right and self.rect.right<self.screen_rect.right: 26 self.center+=self.ai_settings.ship_speed_factor 27 if self.moving_left and self.rect.left>0: 28 self.center-=self.ai_settings.ship_speed_factor 29 #根据self.center更新rect对象 30 self.rect.centerx=self.center 31 32 def blitme(self): 33 #在指定位置绘制飞船 34 self.screen.blit(self.image,self.rect)
game_functions5.py
1 import sys 2 import pygame 3 from ship5 import Ship 4 from alien5 import Alien 5 from settings5 import Settings 6 7 def check_keydown_events(event,ai_settings,screen,ship): 8 """响应按键""" 9 if event.key == pygame.K_RIGHT: 10 # 向右移动飞船 11 ship.moving_right = True 12 elif event.key == pygame.K_LEFT: 13 # 向zuo移动飞船 14 ship.moving_left = True 15 elif event.key==pygame.K_q: 16 sys.exit() 17 18 def check_keyup_events(event,ship): 19 """响应松开""" 20 if event.key == pygame.K_RIGHT: 21 # 向右移动飞船 22 ship.moving_right = False 23 elif event.key == pygame.K_LEFT: 24 # 向zuo移动飞船 25 ship.moving_left = False 26 27 def check_events(ai_settings,screen,ship): 28 for event in pygame.event.get(): 29 if event.type == pygame.QUIT: 30 sys.exit() 31 elif event.type==pygame.KEYDOWN: 32 check_keydown_events(event, ai_settings,screen,ship) 33 34 elif event.type==pygame.KEYUP: 35 check_keyup_events(event, ship) 36 37 def update_screen(ai_settings,screen,ship,alien): 38 """更新屏幕上的图像,并切换到新屏幕上""" 39 #每次循环时都重绘屏幕 40 screen.fill(ai_settings.bg_color) 41 ship.draw(screen) 42 alien.draw(screen) 43 #让最近绘制屏幕可见 44 pygame.display.flip() 45 46 def creat_alien(ai_settings,screen,alien): 47 if len(alien)==0: 48 ali=Alien(ai_settings,screen) 49 alien.add(ali) 50 51 def creat_ship(ai_settings,screen,ship): 52 if len(ship)==0: 53 sh=Ship(ai_settings,screen) 54 ship.add(sh) 55 56 def update_aliens(ai_settings,alien,screen,ship): 57 for al in alien: 58 al.update() 59 if al.rect.y>al.screen_rect.bottom: 60 alien.remove(al) 61 collisions = pygame.sprite.groupcollide(alien, ship, True, False)
alien_invasion5.py
1 import sys 2 import pygame 3 from pygame.sprite import Group 4 import game_functions5 as gf 5 from settings5 import Settings 6 from ship5 import Ship 7 from alien5 import Alien 8 9 10 def run_game(): 11 #初始化游戏并创建一个屏幕对象 12 pygame.init() 13 ai_settings=Settings() 14 screen=pygame.display.set_mode( 15 (ai_settings.screen_width,ai_settings.screen_height))#窗口尺寸 16 pygame.display.set_caption("Alien Invasion") 17 #创建一个飞船、一个外星人组合 18 ship=Ship(ai_settings,screen) 19 ship=Group() 20 alien=Group() 21 22 #开始游戏主循环 23 while True: 24 gf.creat_ship(ai_settings, screen, ship) 25 for shi in ship: 26 gf.check_events(ai_settings, screen, shi) 27 shi.update() 28 29 gf.creat_alien(ai_settings,screen, alien) 30 gf.update_aliens(ai_settings, alien, screen, ship) 31 32 gf.update_screen(ai_settings,screen,ship,alien) 33 34 run_game()
输出:
13-6 游戏结束:在为完成练习 13-5 而编写的代码中,跟踪玩家有多少次未将球接着。在未接着求的次数到达三次后,结束游戏。
settings5.py
1 class Settings(): 2 #存储《外星人入侵》的所有设置的类 3 def __init__(self): 4 #初始化游戏的设置 5 #屏幕设置 6 self.screen_width=1200 7 self.screen_height=700 8 self.bg_color=(230,230,230) 9 10 11 #飞船的设置 12 self.ship_speed_factor=1.5 13 self.alien_speed_factor=1 14 self.ship_limit = 3
ship5.py
1 import pygame 2 from pygame.sprite import Sprite 3 class Ship(Sprite): 4 def __init__(self,ai_settings,screen): 5 #初始化飞船并设置其初始位置 6 super(Ship, self).__init__() 7 self.screen=screen 8 self.ai_settings=ai_settings 9 #加载飞船图像并获取其外接矩形 10 self.image=pygame.image.load('image/ship.bmp') 11 self.rect=self.image.get_rect() 12 self.screen_rect=screen.get_rect() 13 #将每艘新飞船放在屏幕底部中央 14 self.rect.centerx=self.screen_rect.centerx 15 self.rect.bottom=self.screen_rect.bottom 16 #在飞船的属性center中存储小数值 17 self.center=float(self.rect.centerx) 18 19 #移动标志 20 self.moving_right=False 21 self.moving_left = False 22 def update(self): 23 """根据移动标志调整飞船位置""" 24 #更新飞船的center值,而不是rect 25 if self.moving_right and self.rect.right<self.screen_rect.right: 26 self.center+=self.ai_settings.ship_speed_factor 27 if self.moving_left and self.rect.left>0: 28 self.center-=self.ai_settings.ship_speed_factor 29 #根据self.center更新rect对象 30 self.rect.centerx=self.center 31 32 def blitme(self): 33 #在指定位置绘制飞船 34 self.screen.blit(self.image,self.rect) 35 36 def center_ship(self): 37 self.center = self.screen_rect.centerx
alien5.py
1 import pygame 2 from pygame.sprite import Sprite 3 from random import randint 4 class Alien(Sprite): 5 """表示单个外星人的类""" 6 def __init__(self,ai_settings,screen): 7 """初始化外星人并设置其初始位置""" 8 super(Alien,self).__init__() 9 self.screen=screen 10 self.screen_rect = self.screen.get_rect() 11 self.ai_settings=ai_settings 12 #加载外星人图像,并设置其rect属性 13 self.image=pygame.image.load('image/alien.bmp') 14 self.rect=self.image.get_rect() 15 #每个外星人最初都在屏幕顶端随机位置 16 self.rect.x=randint(0,self.screen_rect.right-self.rect.width) 17 self.rect.y=0 18 #存储外星人的准确位置 19 self.x=float(self.rect.x) 20 self.y = float(self.rect.y) 21 22 def blitme(self): 23 """在指定位置绘制外星人""" 24 self.screen.blit(self.image,self.rect) 25 26 def update(self): 27 """向下移动外星人""" 28 self.y +=self.ai_settings.alien_speed_factor 29 self.rect.y=self.y
game_stats5.py
1 class GameStats(): 2 """跟踪游戏的统计信息""" 3 def __init__(self,ai_settings): 4 """初始化统计信息""" 5 self.ai_settings=ai_settings 6 self.reset_stats() 7 self.game_active = True 8 9 def reset_stats(self): 10 """初始化在游戏运行期间可能变化的统计信息""" 11 self.ships_left=self.ai_settings.ship_limit
game_functions5.py
1 import sys 2 import pygame 3 from ship5 import Ship 4 from alien5 import Alien 5 from settings5 import Settings 6 from time import sleep 7 from pygame.sprite import Group 8 9 def check_keydown_events(event,ai_settings,screen,ship): 10 """响应按键""" 11 if event.key == pygame.K_RIGHT: 12 # 向右移动飞船 13 ship.moving_right = True 14 elif event.key == pygame.K_LEFT: 15 # 向zuo移动飞船 16 ship.moving_left = True 17 elif event.key==pygame.K_q: 18 sys.exit() 19 20 def check_keyup_events(event,ship): 21 """响应松开""" 22 if event.key == pygame.K_RIGHT: 23 # 向右移动飞船 24 ship.moving_right = False 25 elif event.key == pygame.K_LEFT: 26 # 向zuo移动飞船 27 ship.moving_left = False 28 29 def check_events(ai_settings,screen,ship): 30 for event in pygame.event.get(): 31 if event.type == pygame.QUIT: 32 sys.exit() 33 elif event.type==pygame.KEYDOWN: 34 check_keydown_events(event, ai_settings,screen,ship) 35 36 elif event.type==pygame.KEYUP: 37 check_keyup_events(event, ship) 38 39 def update_screen(ai_settings,screen,ship,alien): 40 """更新屏幕上的图像,并切换到新屏幕上""" 41 #每次循环时都重绘屏幕 42 screen.fill(ai_settings.bg_color) 43 ship.draw(screen) 44 alien.draw(screen) 45 #让最近绘制屏幕可见 46 pygame.display.flip() 47 48 def creat_alien(ai_settings,screen,alien): 49 if len(alien)==0: 50 ali=Alien(ai_settings,screen) 51 alien.add(ali) 52 53 def creat_ship(ai_settings,screen,ship): 54 if len(ship)==0: 55 sh=Ship(ai_settings,screen) 56 ship.add(sh) 57 58 59 60 61 def update_aliens(ai_settings,stats,aliens,screen,ship): 62 for al in aliens: 63 al.update() 64 if al.rect.y>al.screen_rect.bottom: 65 aliens.remove(al) 66 if stats.ships_left > 0: 67 stats.ships_left -= 1 68 else: 69 stats.game_active = False 70 if pygame.sprite.groupcollide(aliens, ship, True, False): 71 sleep(0.5)
alien_invasion5.py
1 import sys 2 import pygame 3 from pygame.sprite import Group 4 import game_functions5 as gf 5 from settings5 import Settings 6 from ship5 import Ship 7 from alien5 import Alien 8 from game_stats5 import GameStats 9 10 11 def run_game(): 12 #初始化游戏并创建一个屏幕对象 13 pygame.init() 14 ai_settings=Settings() 15 screen=pygame.display.set_mode( 16 (ai_settings.screen_width,ai_settings.screen_height))#窗口尺寸 17 pygame.display.set_caption("Alien Invasion") 18 19 stats = GameStats(ai_settings) 20 #创建一个飞船、一个外星人组合 21 ship=Ship(ai_settings,screen) 22 ship=Group() 23 alien=Group() 24 25 #开始游戏主循环 26 while True: 27 gf.creat_ship(ai_settings, screen, ship) 28 for shi in ship: 29 gf.check_events(ai_settings, screen, shi) 30 shi.update() 31 if stats.game_active: 32 gf.creat_alien(ai_settings,screen, alien) 33 gf.update_aliens(ai_settings,stats, alien, screen, ship) 34 else: 35 sys.exit() 36 gf.update_screen(ai_settings,screen,ship,alien) 37 38 run_game()
输出: