飞机大战项目 按照从入门到实践这本书上的代码敲的,结果到拆分辅助方法这一步出错了
import sys
import pygame
from settings import Settings
from ship import Ship
class AlienInvasion:
"""管理游戏资源和行为的类"""
def __init__(self):
"""初始化游戏并创建游戏资源"""
pygame.init() # 初始化背景设置
self.settings = Settings() # 创建Setting类实例并赋值給self.settings
self.screen = pygame.display.set_mode(self.settings.window_size) # 创建一个显示窗口
pygame.display.set_caption("飞机大战") # 设置名称
# 设置背景颜色
self.bg_color = self.settings.bg_color
self.ship = Ship(self) # 创建实例 self表示当前项目实例
def run_game(self): # 控制游戏方法
"""开始游戏主循环"""
while True:
self._check_events()
self._update_screen()
def _check_events(self):
# 监视键盘鼠标的输入 事件循环, 响应输入操作
for event in pygame.event.get(): # 返回一个它在上一次被调用后所有键鼠操作事件的列表
if event.type == pygame.QUIT: # 若点击关闭按钮
sys.exit() # 退出游戏
def _update_screen(self):
# 让背景色填充屏幕 并在每次循环后重绘
self.screen.fill(self.bg_color) # fill 只接受一个实参:一种颜色
self.ship.blitme() # 绘制飞船 是飞船出现在背景图层上
# 让最近绘制的屏幕可见 擦去旧屏幕 绘制新屏幕
pygame.display.flip()
if __name__ == '__main__':
# 创建游戏实例并运行游戏
ai = AlienInvasion()
ai.run_game()