我对使用 pygame 库和一般图形非常陌生。
我有一个递归函数,它通过回溯来解决数独难题。我正在尝试使用 pygame 来可视化这个过程。
每次递归函数尝试新的有效数字时,都会进行以下调用:
self.engine.draw_font(str(num), self.engine.get_position(i, j))
它调用的函数将该数字渲染到新的表面上:
def draw_font(self, string, position, bold=False):
font = pg.font.SysFont(self.font, 25, bold=bold)
textSurface = font.render(string, False, self.colors['text'])
self.update(textSurface, position)
然后我将该表面传输到显示器上,并更新显示器的该部分:
def update(self, surface, position):
rect = pg.Rect(position[0], position[1], 25, 25)
color = self.display.get_at(position)
self.display.fill(color, rect)
self.display.blit(surface, position)
pg.display.update(rect)
这个过程确实运行良好,屏幕上的数字按照我的预期更新。 但是,如果我尝试与显示器进行交互,例如:单击显示器外部,尝试移动显示器,甚至只是最小化显示器,那么 pygame 窗口就会冻结。
我需要做哪些不同的事情才能使我的显示器更易于使用?
pygame.event.get()
pygame.event.pump()
:
对于游戏的每一帧,您都需要对事件队列进行某种调用。这确保您的程序可以在内部与操作系统的其余部分进行交互。
在递归函数开始时调用
pygame.event.pump()
。