Bonjour à tous
J'essaye actuellement de réaliser un programme pour reproduire le mouvement de la fourmi de Langton.
Pour ceux qui ne connaissent pas: on a une grille dont chaque case est soit blanche soit noire (pour ma part toutes les cases sont de la même couleur au début, mais peu importe). Sur une de ces cases, on place une fourmi. Elle avance d'une case, et la case qu'elle vient de quitter change alors de couleur. Si elle est sur une case blanche, elle tourne à droite puis avance, si elle est sur une noire, elle tourne à gauche et avance.
J'ai donc essayé de réaliser ce programme, mais je bloque au niveau de l'affichage. Je ne suis pas très doué en tkinter, mais j'ai réussi sans souci à créer ma grille. Le problème est que j'aimerai voir l'avancement, c'est-à-dire voir les cases changer de couleur au fil du temps. Mais avec mon code, je suis obligé de fermer la fenêtre tkinter pour que ça continue ... J'ai essayé de plusieurs manières, j'ai également cherché sur Internet, mais je n'ai pas trouvé ...
Je sais que mon code n'est pas très optimisé, notamment pour les changements de direction, mais ce n'est pas trop mon problème pour le moment: dès que j'aurai réussi à faire ce que je n'arrive pas à faire, j'essayerai de l'améliorer.Code:# -*-coding:Latin-1-* from tkinter import * class Fourmi: def __init__(self): self.grille={} for a in range(100): for b in range(100): self.grille[a, b]="O" self.sens="h" self.i=0 self.fourmi=[50, 50] while self.i<20000: self.fenetre=Tk() if self.grille[self.fourmi[0], self.fourmi[1]]==".": self.grille[self.fourmi[0], self.fourmi[1]]="O" if self.sens=="h": self.fourmi[0]+=1 self.sens="d" elif self.sens=="b": self.fourmi[0]-=1 self.sens="g" elif self.sens=="d": self.fourmi[1]-=1 self.sens="b" else: self.fourmi[1]+=1 self.sens="h" else: self.grille[self.fourmi[0], self.fourmi[1]]="." if self.sens=="h": self.fourmi[0]-=1 self.sens="g" elif self.sens=="b": self.fourmi[0]+=1 self.sens="d" elif self.sens=="d": self.fourmi[1]+=1 self.sens="h" else: self.fourmi[1]-=1 self.sens="b" self.i+=1 self.canvas=Canvas(self.fenetre, width=792, height=792) for i in range(100): for n in range(100): if self.grille[i, n]=="O": self.canvas.create_rectangle(8*n, 8*i, 8*n+8, 8*i+8, fill="white") else: self.canvas.create_rectangle(8*n, 8*i, 8*n+8, 8*i+8, fill="black") self.canvas.pack() self.fenetre.mainloop() Fourmi()
Donc si quelqu'un pouvait m'éclairer sur la manière de modifier automatiquement l'affichage ...
Merci d'avance
Bonne soirée![]()
-----