Bonjour,
Je crée un petit jeu, un simon pour mon projet de bac d'isn.
Le jeu est presque fini lorsqu'un problème sauvage apparait, j'ai fait enormement de test et de recherche mais je n'ai pas trouvé la solution et c'est pour cela que je viens vers vous.
Tout d'abord je suis sur python 3.2 et mon programme s'appuie beaucoup sur une interface tkinter (essentiellement sur des boutons). Ces boutons s'appellent 'Rouge' 'Bleu' 'Jaune' et 'Vert' et sont deja défini dans des fonctions qui marchent (je précise pour dire que le problème ne vient pas d'ici). Leur role est seulement de changer de couleur lorsqu'on appuie dessus.
Mon soucis est le suivant :
Une de mes fonctions choisis au hasard un bouton et le fait changer de couleur comme si il s'activait.
Une autre rejoue les boutons qui on était selectionné au hasard, sachant qu'ils sont enregistrés dans une liste et que cette liste augmente de 1 a chaque tour de jeu
Le problème étant que mes 2 fonctions marchent, mais en même temps. J'aimerais que d'abord la liste soit rejoué puis qu'un bouton au hasard soit joué. J'ai essayé le time.sleep mais si je le place entre les 2 fonctions alors seul la 2éme est executer... J'ai pensé à un probleme de temps car j'ai time.sleep(1) or les boutons sont activés 1seconde donc ils auraient été activé pendant le time.sleep et donc non visible, mais je ne suis pas sûre.
J'ai alors essayé de créer un timer (solution alternative pas très très joli) avec une boucle for qui appelle une fonction quand i == 1 puis l'autre quand i == 1000 sauf qu'il attend la fin de la boucle pour activé les boutons même s'il lance la fonction au bon moment........
Je commence à seché vraiment, je ne sais pas si mon problème est très clair mais en tout cas voici les 2 fonctions en question :
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 def Sequence() : global sequence,s n = len(sequence) print(n) i = 0 for i in range (n) : print("ici sequence !") a = sequence[i] if a == 1 : Rouge.configure(bg="orange") Rouge.after(2000, lambda: Rouge.configure(bg="red")) elif a == 2 : Bleu.configure(bg="blue4") Bleu.after(2000, lambda: Bleu.configure(bg="blue")) time.sleep(1) elif a == 3 : Jaune.configure(bg="white") Jaune.after(2000, lambda: Jaune.configure(bg="yellow")) elif a == 4: Vert.configure(bg="white") Vert.after(2000, lambda: Vert.configure(bg="green")) time.sleep(1) ##Ne fontionne pas return laSequence() def laSequence() : global sequence,s for i in range (1) : time.sleep(1) print('ici hasard!') bouton = ["Rouge","Bleu", "Jaune", "Vert"] hasard=choice(bouton) t=2000 if hasard=="Rouge" : #son1.play() Rouge.configure(bg="orange") Rouge.after(1000, lambda: Rouge.configure(bg="red")) sequence.append(1) elif hasard=="Bleu" : #son2.play() Bleu.configure(bg="blue4") Bleu.after(1000, lambda: Bleu.configure(bg="blue")) sequence.append(2) elif hasard=="Jaune" : #son3.play() Jaune.configure(bg="white") Jaune.after(1000, lambda: Jaune.configure(bg="yellow")) sequence.append(3) elif hasard=="Vert" : #son4.play() Vert.configure(bg="white") Vert.after(1000, lambda: Vert.configure(bg="green")) sequence.append(4) t=t+1000 canvas.after(t, verifSequence) print(sequence)
Partager