Bonjour, j'ai un soucis que je n'arrive pas à résoudre, j'ai crée en python un programme ayant pour but de résoudre le casse-tête des tour de hanoi avec des animation via turtle, je l'ai fini et il est fonctionnel mais j'aimerai y rajouter un compteur qui compte chaque coup effectué mais je n'y arrive pas.
Voila le programme :
import turtle
import time
fond = turtle.Screen()
fond.setup(800,600)
fond.title('Tower of Hanoi')
fond.bgpic('fond_blanc_gif.gif')
fond.tracer(0)
def hanoi(n,debut,inter,fin):
if n == 0:
pass
else:
hanoi(n-1,debut,fin,inter)
déplacement(debut,fin)
hanoi(n-1,inter,debut,fin)
class Inter_graphique(turtle.Turtle):
def __init__(self, xpos):
super().__init__(shape='square')
self.xpos = xpos
self.up()
self.color('grey')
self.shapesize(10,1)
self.goto(self.xpos,-100)
self.count = 0
self.pos_list = [-180, -160, -140, -120, -100]
self.disques = []
class Disque(turtle.Turtle):
def __init__(self, xpos, ypos, size, color):
super().__init__(shape='square')
self.xpos = xpos
self.ypos = ypos
self.size = size
self.color(color)
self.up()
self.shapesize(1,self.size)
self.goto(self.xpos,self.ypos)
def déplacement_Disque(Disque, Inter_graphique):
while Disque.ycor()<100:
Disque.goto(Disque.xcor(),Disque.ycor()+5)
fond.update()
Disque.goto(Inter_graphique.xcor(),100)
fond.update()
while Disque.ycor()>Inter_graphique.pos_list[Inter_graphique.count]:
Disque.goto(Disque.xcor(),Disque.ycor()-5)
fond.update()
time.sleep(0.5)
def déplacement(debut,fin):
print('on déplace le dique de ',debut,' à ',fin,'!')
if debut == 'Tour 1':
disque_haut = tour1.disques[-1]
start_Inter_graphique = tour1
elif debut == 'Tour 2':
disque_haut = tour2.disques[-1]
start_Inter_graphique = tour2
elif debut == 'Tour 3':
disque_haut = tour3.disques[-1]
start_Inter_graphique = tour3
if fin == 'Tour 1':
Inter_graphique = tour1
elif fin == 'Tour 2':
Inter_graphique = tour2
elif fin == 'Tour 3':
Inter_graphique = tour3
déplacement_Disque(disque_haut,Inter_graphique)
start_Inter_graphique.count-=1
start_Inter_graphique.disques.pop()
Inter_graphique.count+=1
Inter_graphique.disques.append(disque_haut)
tour1 = Inter_graphique(-200)
tour2 = Inter_graphique(0)
tour3 = Inter_graphique(200)
disque1 = Disque(-200, -180, 10, 'orange')
disque2 = Disque(-200, -160, 8, 'blue')
disque3 = Disque(-200, -140, 6, 'red')
disque4 = Disque(-200, -120, 4, 'purple')
disque5 = Disque(-200, -100, 2, 'green')
tour1.count=5
tour1.disques = [disque1,disque2,disque3,disque4,disque5]
hanoi(3, 'Tour 1', 'Tour 2', 'Tour 3')