pygame未响应(macbook air)

gk7wooem  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(351)

我制作了python代码的测试版本,添加了新东西,然后运行它。外壳窗口出现了,但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不显示任何错误。MacBookAir ml1,我已正确安装了所有设备。感谢您的帮助。

cczfrluj

cczfrluj1#

我不能测试它,但是 while -循环不是一个好主意 pygame , pygame zero , pyglet 或任何gui框架( tkinter , pyqt , wxPython , PyGTK ,等等),因为它会阻塞 main loop 每个框架都必须从系统中获取(键/鼠标等)事件,将事件发送到小部件/对象,更新值,重新绘制窗口。
基于 pgzrun 您应该使用的文档 update() (而不是 while )在每一个 frame (每秒可以执行30次)并且不会阻止其他代码。

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

或者它应该在 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次(为了 30 FPS -每秒帧数),因此它将非常快地取代通电,并且不会有多大用处。可能需要一些 timer 放慢速度,每隔几秒钟更换一次。 pgzero 我有这个钟。

相关问题