Caramelized 2022-04-17 16:10 采纳率: 100%
浏览 15
已结题

飞机大战项目拆分辅助方法失败

飞机大战项目 按照从入门到实践这本书上的代码敲的,结果到拆分辅助方法这一步出错了


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()

img

我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

2条回答 默认 最新

  • A Python 萌新花花 2022-04-17 16:33
    关注

    根据代码的编译逻辑和你的代码来说,你的这个checkevent 必须在调用之前就得定义。就是说,你把while放在updatescreen后面应该就行了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月25日
  • 已采纳回答 4月17日
  • 创建了问题 4月17日

悬赏问题

  • ¥15 2024-五一综合模拟赛
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭