如何解决我在黑板上新输入的数字显示在 Pygame 中以前的数字之上,我不知道为什么
我正在构建一个数独游戏。 Board 是一个从 0 到 9 的二维数字数组,其中 0 是一个空格。我在用 Pygame 显示我的板时遇到问题。当我在板上选择一个数字 5 的方块并输入一个新数字 7 时,Pygame 假设只显示新输入的数字而不是前一个数字。但相反,它在前一个数字上显示新数字(如图片所示)。后端工作完美意味着例如当我输入 7 时,它会在我的二维阵列板上用 7 代替 5。但由于某种原因,它无法在屏幕上正确显示。我负责绘制的代码块如下,包括图片。
附言我尝试了函数 pygame.event.pump() 和 pygame.display.flip() 但没有任何帮助。
while game_running:
......code dealing with events........
for r in range(9):
for c in range(9):
#draw small rectangle
sm_rect = pygame.Rect(c*sm_rect_width,r*sm_rect_height,sm_rect_width,sm_rect_height)
pygame.draw.rect(game_window,(0,0),sm_rect,1)
#draw large rectangle if it is time
if r%3 == 0 and c%3 == 0:
lrg_rect = pygame.Rect(c/3*lrg_rect_width,r/3*lrg_rect_height,lrg_rect_width,lrg_rect_height)
pygame.draw.rect(game_window,lrg_rect,3)
#draw number
#Render text
if board[r][c] == 0:
txt_surface = font.render(" ",True,pygame.Color('dodgerblue2'))
game_window.blit(txt_surface,(c*sm_rect_width+17,r*sm_rect_height+15))
if board[r][c] > 0:
txt_surface = font.render(str(board[r][c]),r*sm_rect_height+15))
pygame.display.update()
解决方法
感谢 Rabbid76 的建议,我解决了这个问题。
问题是我没有清除每一帧的显示。
屏幕的清除是由函数 screen.fill(color)
完成的,我将它置于 while game_running
循环之外。
我把它放在里面,现在我的屏幕刷新了,电路板可以根据需要工作了。
这里是关于这个问题的更多解决方案: How to clear up screen in pygame?
附言感谢大家的帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。