python Pygame在动画中“没有响应”

vuv7lop3  于 2023-01-16  发布在  Python
关注(0)|答案(1)|浏览(155)

对于有过Pygame经验的人来说,这是一个开放的问题。我用Pygame做了一个游戏。在这个游戏中,我的角色可以使用W,A,S,D移动。这一切都是可行的。但我也有一些像这样的小动画(伪代码):

while player.x != target_x and player.y != target_y:
    if player.x < target_x:
        player.x += 1
    else:
        player.x -= 1

    if player.y < target_y:
        player.y += 1
    else:
        player.y -= 1
    
    draw() # updates / draws the screen
    clock.tick(30)

我的问题是窗口上的游戏不断崩溃。就像“动画”开始的字符移动。但有时窗口只是去“没有React”和动画冻结。但程序继续。在时间后,它将采取完成动画窗口再次成为React和字符站在它应该在动画结束。所以只有屏幕的更新是个问题,以前有没有人经历过这样的事情?
我不明白我按下一个按钮告诉角色向右走和动画做这件事有什么区别。
注意:动画在过去工作得很好。我有几次“没有React”。但最近它发生得越来越多。几乎每一次都是这样。

wljmcqd8

wljmcqd81#

你必须处理应用程序循环中的事件。分别参见pygame.event.get()pygame.event.pump()
对于游戏的每一帧,你都需要对事件队列进行某种类型的调用,这确保了你的程序可以与操作系统的其他部分进行内部交互。

while player.x != target_x and player.y != target_y:

    pygame.event.pump() # <--- this is missing

    if player.x < target_x:
        player.x += 1
    else:
        player.x -= 1

    if player.y < target_y:
        player.y += 1
    else:
        player.y -= 1
    
    draw() # updates / draws the screen
    clock.tick(30)

相关问题