微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pygame 无响应 (MACBOOK AIR)

如何解决Pygame 无响应 (MACBOOK AIR)

我制作了我的 python 代码的测试版本,添加了新东西,然后运行它。 shell 窗口显示,但 Pygame 没有。该图标显示,但右键单击它表示程序没有响应。点击它什么也没做。我不知道为什么会发生这种情况,但这是我添加的每一点新代码

orangebombpowerup = Actor("orangebombpowerup")
Powerups = [orangebombpowerup]
randompowerup = randint(0,len(Powerups)-1)
powerupchance = randint(0,35)
def place_Powerup():
    global Powerups
    Powerups[randompowerup].x = randint(10,1250)
    Powerups[randompowerup].y = randint(10,700)
while True:
    if powerupchance == 15:
        Powerups[randompowerup].draw()

这就是我添加到程序中的所有新代码。现在 pygame 只是没有启动。 shell 没有显示任何错误。 Macbook Air ml1,我已经正确安装了所有东西。任何帮助表示赞赏。

解决方法

我无法测试,但 while-loop 在 pygamepygame zeropyglet 或任何 GUI 框架(tkinterpyqtwxPythonPyGTK 等),因为它阻止了 main loop,每个框架都必须从系统获取(键/鼠标/等)事件,将事件发送到小部件/对象、更新值、重绘窗口。

基于 pgzrun documentation,您应该使用 update()(而不是 while),它在每个 frame 中执行(每个 orange_bomb_powerup = Actor("orangebombpowerup") powerups = [orange_bomb_powerup] def place_powerup(): random_powerup = random.choice(powerups) random_powerup.x = random.randint(10,1250) random_powerup.y = random.randint(10,700) def update(): powerup_chance = random.randint(0,35) if powerup_chance == 15: random_powerup = random.choice(powerups) random_powerup.draw() 中可以执行 30 次)第二)并且它不会阻止其他代码。

draw()

或者它应该在 def draw(): screen.clear() powerup_chance = random.randint(0,35) if powerup_chance == 15: random_powerup = random.choice(powerups) random_powerup.draw() 中,用于在每一帧中绘制所有元素。

update

但我认为它会有不同的问题 - 它会在一秒钟内运行 30 FPS 大约 30 次(以获得 timer - 每秒帧数),因此它将非常快速地取代通电,它将是没那么有用。它可能需要一些 pgzero 来减慢速度并每隔几秒钟更改一次。 {{1}} 对此有 Clock

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。