Bonsoir à tous !
J'essaie d'animer une balle dans un labyrinthe. L'idée est de la faire avancer dans une direction jusqu'à rencontrer un mur puis de la faire changer de direction aléatoirement. Voici ce que cela donne (méthode associée à la balle) :
Mon problème est que visuellement la balle n'avance pas dans l'affichage Tk alors même que ses coordonnées évoluent bel et bien (j'ai vérifié avec un print). Le problème ne semble pas venir des méthodes move (qui permettent de déplacer la balle dans les 4 directions) : je les ai testées et retestées avec des bind. Self.stop devient faux lorsque la balle rencontre un mur. La aussi cela semble marcher bien d'après l'évolution des coordonnées de la balle.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 def moveAtRandom(self): while self.alive==True: rand=randint(0,3) if rand==0: while self.stop==False: self.moveL() time.sleep(0.5) elif rand==1: while self.stop==False: self.moveR() time.sleep(0.5) elif rand==2: while self.stop==False: self.moveU() time.sleep(0.5) else: while self.stop==False: self.moveD() time.sleep(0.5) self.stop=False
Il ne reste plus que les while. Le code ainsi fait ne fait que planter TK sans message d'erreur aucun. J'ai essayé avec une seule direction, la balle ne se déplace dans le canvas qu'à la fin du while (de sa position initiale, elle va directement à sa position finale). J'ai essayé d'utiliser un multiple threading, sans succès :/ je ne comprends vraiment pas ce qui se passe !
Merci de votre aide !
Partager