Я пытаюсь добавить графику для моей простой программы решения судоку. Я хочу, чтобы программа обновляла отображаемую доску судоку в режиме реального времени по мере ее решения (я думал, что сделаю это, вызывая функцию draw_number
после каждого правильно решенного числа, а затем задерживая программу, чтобы она рисовала число , пауза, затем продолжить решение.)
Однако вместо этого программа решает все это в процессе замораживания, а затем отображает все решение сразу, когда оно выполнено.
Вот небольшая пример того, что я пытаюсь сделать, который иллюстрирует проблему:
import pygame
pygame.init()
window = pygame.display.set_mode((600, 600))
board = [
[1,2,3],
[7,5,6],
[4,9,8],
]
def draw_number(r, c, num):
font = pygame.font.Font('freesansbold.ttf', 26)
text = font.render(str(num), True, (0, 0, 0), (255, 255, 255))
text_rect = text.get_rect()
text_rect.center = ((c+1)*48+11, (r+1)*48+11)
window.blit(text, text_rect)
print("Drawing " + str(num) + " at " + str(r+1) + ", " + str(c+1))
pygame.display.update()
run = True
while run:
for i in board:
for j in range(0, 3):
draw_number(board.index(i), j, board[board.index(i)][j])
pygame.display.update()
pygame.time.delay(20)
run = False
pygame.time.delay(5000)
Когда мы запускаем это, простая сетка 3x3 должна рисовать индивидуально, с паузами, но вместо этого она заканчивает циклы for, затем делает паузы на 5000 мс , затем показывает результат в течение доли секунды, а затем закрывает программу.
Я знаю, что я делаю что-то здесь не так, но я новичок в Pygame и не уверен, каков правильный способ сделать это.