Я пытаюсь сделать алгоритм, который играет в шахматы.Он составляет список всех возможных ходов на определенную глубину.Я пытаюсь нарисовать возможные сценарии после каждого хода один за другим, чтобы проверить это.Я использую рекурсивную функцию cr_list, чтобы вычислять ходы в глубину.После выбора хода я изменяю соответствующие позиции задействованных фигур и вызываю функцию рисования, чтобы увидеть разницу. Но холст не обновляется.То, как я использую метод after, кажется неправильным.Я также попытался использовать метод self.canvas.update_idletasks (), но он работает только один раз, а затем перестает меняться снова.После того, как я использую ctrl + c, чтобы остановить программу, она обновляется, и я также печатаю позиции всех частей в функции рисования, и они являются такими, какими они должны быть. Я использую оператор x = input (), чтобы остановить программу, чтобы увидетьизменения.
def draw(self,piece):
if self.flag:
self.canvas.delete('all')
self.flag=1
x=(800-(int(self.n)*int((660/int(self.n)))))/2
y=(800-(int(self.n)*int((660/int(self.n)))))/2
for i in range(int(self.n)):
if i%2==0:
for j in range(int(self.n)):
if j%2==0:
self.canvas.create_rectangle(x,y,x+int((660/int(self.n))),y+int((660/int(self.n))), fill='navajo white')
else:
self.canvas.create_rectangle(x,y,x+int((660/int(self.n))),y+int((660/int(self.n))), fill='saddle brown')
x+=int((660/int(self.n)))
else:
for j in range(int(self.n)):
if j%2==0:
self.canvas.create_rectangle(x,y,x+int((660/int(self.n))),y+int((660/int(self.n))), fill='saddle brown')
else:
self.canvas.create_rectangle(x,y,x+int((660/int(self.n))),y+int((660/int(self.n))), fill='navajo white')
x+=int((660/int(self.n)))
y+=int((660/int(self.n)))
x=(800-(int(self.n)*int((660/int(self.n)))))/2
x=(800-(int(self.n)*int((660/int(self.n)))))/2
y=(800-(int(self.n)*int((660/int(self.n)))))/2
for i in range(16):
if piece[i]!=None:
if (piece[i].pos[0]+piece[i].pos[1])%2==0:
word=piece[i].species+'_aa.ppm'
else:
word=piece[i].species+'_am.ppm'
self.img[i]=tkinter.PhotoImage(file=word)
self.canvas.create_image(x+piece[i].pos[1]*int((660/int(self.n)))+(int((660/int(self.n)))-73)/2,y+piece[i].pos[0]*int((660/int(self.n)))+(int((660/int(self.n)))-73)/2, anchor=tkinter.NW,image=self.img[i])
print(piece[i].pos)
for i in range(16):
if piece[i]!=None:
if (piece[i+16].pos[0]+piece[i+16].pos[1])%2==0:
word=piece[i+16].species+'_ma.ppm'
else:
word=piece[i+16].species+'_mm.ppm'
self.img[i+16]=tkinter.PhotoImage(file=word)
self.canvas.create_image(x+piece[i+16].pos[1]*int((660/int(self.n)))+(int((660/int(self.n)))-73)/2,y+piece[i+16].pos[0]*int((660/int(self.n)))+(int((660/int(self.n)))-73)/2, anchor=tkinter.NW,image=self.img[i+16])
def cr_list(self,i,lm,met,pieces):
# .....
root.after(1000,self.draw(pieces2))
self.cr_list(i2,lm,met,pieces2)
# .....
x=input()
# .....