Я делаю игру в крестики-нолики, используя tkinter для GUI, но моя проблема в том, что у меня есть функция (которая делает ходы) для запуска при каждом нажатии кнопки, она не будет автоматическиход, пока я не нажму кнопку (не имеет значения, какая именно), что, следовательно, заполняет индексирование моих ходов, а также означает, что вы должны нажать, прежде чем компьютер сделает ход.
Есть ли в любом случае, я могу получитьсам «компьютер» притворяется, что нажимает кнопку, и, следовательно, запускает функцию?
Вот бит кнопки «make»:
def make_button(n, row, col):
button_list[n] = Button(tk,bg='gray', text = " ", fg='white',height=4,width=8,command=lambda:ttt(n, button_list))
button_list[n].grid(row=row,column=col,sticky = S+N+E+W)
, а вот бит «make move» (его стираниеПримите во внимание тот факт, что в настоящее время компьютерный ход будет играть только в середине или в углах):
def computer_move(buttons, index):
global bclick
buttons["text"] = "O"
COM.add(index)
bclick = True
buttons=StringVar()
bclick = True
corner_moves = {0,2,6,8}
def ttt(n, buttons):
global bclick
if n not in P and n not in COM and bclick == True:
button_list[n]["text"] = "X"
P.add(n)
bclick = False
elif bclick == False and 4 not in COM and 4 not in P:
computer_move(button_list[4], 4)
elif bclick == False:
corners_not_COM = (corner_moves.difference(COM))
corners_not_P_or_COM = (corners_not_COM.difference(P))
list_corners_not_P_or_COM = list(corners_not_P_or_COM)
random_corner_index = random.randint(0,len(list_corners_not_P_or_COM))
random_corner = list_corners_not_P_or_COM[random_corner_index]
computer_move(button_list[random_corner], random_corner)