pygame飞机大战游戏启动时就出现了错误'Game' object has no attribute 'is_game_over'
总是显示“display not set mode”是因为 Pygame 要调用 pygame.display.set_mode 函数来创建窗口:
pygame.init()
pygame.display.set_mode((500, 400)) # 传入一个元组,表示窗口的大小
报错是因为,构造函数要写 __init__
,不是__int__
。
出现错误“Game object has no attribute is_game_over”的原因是因为Python中的游戏类(Game)对象没有定义is_game_over
属性。
要解决这个问题,需要先检查代码中是否定义了is_game_over
属性。如果没有,需要在代码中添加该属性的定义。
检查代码后,发现需要定义is_game_over
属性时,代码中已经使用了None
作为该属性的值。为了避免冲突,可以将is_game_over
属性的值赋为None
,代码如下:
def __init__(self, game_over):
self.game_over = game_over
def is_game_over(self):
return self.game_over is not None
现在,当运行程序时,错误信息会被更正为“Display not set mode”,这是因为程序在运行时没有设置屏幕模式。
要解决这个问题,需要修改代码中的display
变量,使其能够设置屏幕模式。代码如下:
display = pygame.display.set_mode((640, 480))
现在,程序可以正常启动并显示游戏界面。