创建Pygame窗口时遇TypeError:run_game()缺少self参数求助
问题解决:TypeError: AlienInvasion.run_game() missing 1 required positional argument: 'self'
错误原因
你没有正确创建AlienInvasion类的实例,只是把类本身赋值给了变量a1。当调用a1.run_game()时,Python将a1视为类而非实例,无法自动传入代表实例本身的self参数,因此报错。
修复方法
修改主程序段的实例化代码,给类名加上括号,完成实例创建:
if __name__ == '__main__': # 创建游戏实例并运行 a1 = AlienInvasion() # 必须加括号,生成类的实例对象 a1.run_game()
完整修复后的代码
import sys import pygame from settings import Settings class AlienInvasion: """管理游戏资源与行为的总类""" def __init__(self): """初始化游戏,创建资源""" pygame.init() self.bg_color = (230, 230, 230) self.settings = Settings() self.screen = pygame.display.set_mode((self.settings.screen_width, self.settings.screen_height)) pygame.display.set_caption('Alien Invasion') def run_game(self): """启动游戏主循环""" while True: # 监听键鼠事件 for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() # 每次循环重绘屏幕 self.screen.fill(self.settings.bg_color) # 让最近绘制的屏幕可见 pygame.display.flip() if __name__ == '__main__': # 创建游戏实例并运行 a1 = AlienInvasion() a1.run_game()
验证效果
修改后运行程序,将正常显示对应尺寸和背景色的Pygame窗口,点击关闭按钮可正常退出程序。
内容的提问来源于stack exchange,提问作者Bezaleel
相关产品推荐
相关产品推荐

