如何解决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 在 pygame
、pygame zero
、pyglet
或任何 GUI 框架(tkinter
、 pyqt
、wxPython
、PyGTK
等),因为它阻止了 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 举报,一经查实,本站将立刻删除。