有些同事写了一个数独生成器。
这是代码中用未删除的值填充网格的部分。
def placeNumbers(sudoku_array):
font = pygame.font.Font(None, 36)
for row in range(9):
for col in range(9):
if sudoku_array[row, col] != 0:
integer = font.render(str(sudoku_array[row, col]), 1, black)
display.blit(integer, (15 + col * 45, 10 + row * 45))
pygame.display.flip()
现在我们想让清空的单元格(包含零的单元格)可编辑,即将它们转换为文本字段。我们真的不知道该怎么做;任何想法?
看起来像这样:
elif sudoku_array[row, col] == 0:
#create editable text field
#at every position where a zero occurs
以下是数组的示例:
[[7 6 0 0 0 4 2 3 5]
[0 4 8 0 3 5 0 7 6]
[3 9 5 0 0 2 1 0 4]
[1 2 0 5 0 0 3 6 7]
[0 0 9 0 1 6 8 4 2]
[6 0 3 4 2 0 0 9 1]
[0 0 6 8 5 3 0 2 9]
[8 0 2 0 6 9 4 1 0]
[9 3 7 2 4 0 0 5 0]]
编辑:
我找到了部分有效的解决方案。使用pygame网站(http://www.pygame.org/project-Pygame+Forms-1042-.html)中的forms.py,我设法将一个文本框添加到空单元格中。但是,还有一些问题:
以下是代码的下一部分:
if sudoku_array[row,col] == 0:
f = Form(False)
f.add_object('input', Input(' ', ' ', position = 'absolute', top= row*45, left = col * 45, input_bg_color=(0,0,0,0)))
r = f.run(display)