Python Pygame不显示最近的更改

Python Pygame不显示最近的更改,python,pygame,Python,Pygame,所以,我有我的数字,我可以在我的地图上以一种旋转的方式导航。我点击这个人物,然后点击一个新的位置,这个人物就会移动到那个位置(立即,没有运行动画或类似的动作)。现在,如果图形在它的方式中遇到了什么,我希望它停止并使pygame显示一个窗口。当窗口打开时,我希望背景中的所有东西都停止,这样我就不能在这段时间内移动我的身影(例如)。我希望在单击按钮后窗口消失。我就是这样做的: if char.colided: DISPLAYSURFACE.blit(window,(5*TIL

所以,我有我的数字,我可以在我的地图上以一种旋转的方式导航。我点击这个人物,然后点击一个新的位置,这个人物就会移动到那个位置(立即,没有运行动画或类似的动作)。现在,如果图形在它的方式中遇到了什么,我希望它停止并使pygame显示一个窗口。当窗口打开时,我希望背景中的所有东西都停止,这样我就不能在这段时间内移动我的身影(例如)。我希望在单击按钮后窗口消失。我就是这样做的:

    if char.colided:
        DISPLAYSURFACE.blit(window,(5*TILESIZE,8*TILESIZE,200,400))
        but_OK=Button('OK', 12*TILESIZE, 9*TILESIZE, 80, 40)
        but_OK.draw()
        a=False
        while not a:
            pygame.event.clear()
            for event in pygame.event.get():
                if event.type == pygame.MOUSEBUTTONDOWN:
                    if but_OK.check_click(event.pos):
                        a=True
        char.colided=False

这一切都很好,但问题是,一旦我的动作使我的图形与一个对象或另一个图形发生碰撞,pygame就不再显示它了。这意味着我进入了while循环,但在屏幕上我的身影没有移动,窗口也没有弹出。更改首先出现在我“隐藏”(例如最小化)pygame窗口之后。我能想到的避免这种情况的唯一方法是在while循环中再次显示所有内容,但这是相当多的东西,所以如果可能的话,我希望避免这种情况。如果有必要,我也可以发送其余的代码,但我现在不想这样做,因为这几乎是400行,我真的不知道在这种情况下哪个部分是重要的

无论你的游戏处于什么状态,你都需要在事件循环中处理3件事情。一个处理事件,两个更新状态,三个绘制和翻转屏幕


在对话框状态事件循环中,您主要处理事件。您正在更新对话框的“状态”(不分配更新,因为它是一个暂停游戏本身的对话框)。但是,您没有绘制或更新屏幕。在进入循环之前,你确实画了一些东西,这意味着只有第一帧会有对话框,但你从来没有调用过翻转屏幕。所以你甚至连那一帧都得不到。

无论你的游戏处于什么状态,你都需要在事件循环中处理3件事情。一个处理事件,两个更新状态,三个绘制和翻转屏幕

在对话框状态事件循环中,您主要处理事件。您正在更新对话框的“状态”(不分配更新,因为它是一个暂停游戏本身的对话框)。但是,您没有绘制或更新屏幕。在进入循环之前,你确实画了一些东西,这意味着只有第一帧会有对话框,但你从来没有调用过翻转屏幕。所以你连那一帧都没有