[Plan du site]
Vous êtes ici ---
> Le Site du Zéro
> Les tutoriels
> Non-Officiels
> Programmation
> Python
> Lecture du tutoriel
Améliorations possibles
Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Notre programme, simple pour commencer, va subir des améliorations. Nous l'améliorerons en plusieurs étapes, afin que rien ne soit trop compliqué.
Je ne sais pas vous, mais je trouve que notre
PPC est un peu serré...
Nous allons donc l'aérer !
Pour cela :
- nous allons glisser le bouton "Quitter" tout en bas ;
- nous allons définir une taille pour la fenêtre (200x250) ;
- lorsqu'on affiche les éléments choisis, le résultat et le score, ils sont tous sur la même ligne, nous allons donc les mettre "un par ligne".
Pour définir une taille par défaut, il faut rajouter :
Code : Python
Ici, on attribue à l'objet "fenetre" la méthode geometry
() avec pour argument la largeur x la hauteur (vous remarquerez qu'on n'utilise pas l'étoile * mais bien la lettre x).
Il faut ajouter ce code juste après la création de l'objet "fen1".
Normallement, vous savez faire, alors au boulot

.
Voici tout de suite le code :
Code : Python 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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170 | # -*- coding: utf-8 -*-
from Tkinter import *
from random import randrange
# Définition des variables
debut = 0
joueur = 0
ordi = 0
nb_pierre = 0
nb_papier = 0
nb_ciseaux = 0
compteur = 0
dernier_gagne = 0
# Définition des fonctions
def choix(element):
"C'est l'élément choisi par le joueur"
global debut, joueur, ordi, nb_pierre, nb_papier, nb_ciseaux, compteur, dernier_gagne
if debut == 0:
ordi = 2
debut = 1
elif nb_pierre > nb_papier and nb_pierre > nb_ciseaux:
ordi = 2
elif nb_papier > nb_ciseaux and nb_papier > nb_pierre:
ordi = 3
elif nb_ciseaux > nb_pierre and nb_ciseaux > nb_papier:
ordi = 1
else:
if dernier_gagne == 1:
ordi = 2
elif dernier_gagne == 2:
ordi = 3
elif dernier_gagne == 3:
ordi = 1
else:
ordi = randrange(1,3)
if element == 1:
nb_pierre += 1
if ordi == 1:
compteur += 1
chaine1.configure(text = "Vous : Pierre")
chaine2.configure(text = "Lui : Pierre")
chaine3.configure(text = "Résultat : Egalité")
chaine4.configure(text = "Score =" + str(compteur))
dernier_gagne = 0
elif ordi == 2:
compteur = compteur - 2
chaine1.configure(text = "Vous : Pierre")
chaine2.configure(text = "Lui : Papier")
chaine3.configure(text = "Résultat : Perdu")
chaine4.configure(text = "Score =" + str(compteur))
dernier_gagne = 0
elif ordi == 3:
compteur = compteur + 2
chaine1.configure(text = "Vous : Pierre")
chaine2.configure(text = "Lui : Ciseaux")
chaine3.configure(text = "Résultat : Gagné")
chaine4.configure(text = "Score =" + str(compteur))
dernier_gagne = 1
elif element == 2:
nb_papier += 1
if ordi == 1:
compteur = compteur + 2
chaine1.configure(text = "Vous : Papier")
chaine2.configure(text = "Lui : Pierre")
chaine3.configure(text = "Résultat : Gagné")
chaine4.configure(text = "Score =" + str(compteur))
dernier_gagne = 0
elif ordi == 2:
compteur += 1
chaine1.configure(text = "Vous : Papier")
chaine2.configure(text = "Lui : Papier")
chaine3.configure(text = "Résultat : Egalité")
chaine4.configure(text = "Score =" + str(compteur))
dernier_gagne = 0
elif ordi == 3:
compteur = compteur - 2
chaine1.configure(text = "Vous : Papier")
chaine2.configure(text = "Lui : Ciseaux")
chaine3.configure(text = "Résultat : Perdu")
chaine4.configure(text = "Score =" + str(compteur))
dernier_gagne = 2
elif element == 3:
nb_ciseaux += 1
if ordi == 1:
compteur = compteur - 2
chaine1.configure(text = "Vous : Ciseaux")
chaine2.configure(text = "Lui : Pierre")
chaine3.configure(text = "Résultat : Perdu")
chaine4.configure(text = "Score =" + str(compteur))
dernier_gagne = 0
elif ordi == 2:
compteur = compteur + 2
chaine1.configure(text = "Vous : Ciseaux")
chaine2.configure(text = "Lui : Papier")
chaine3.configure(text = "Résultat : Gagné")
chaine4.configure(text = "Score =" + str(compteur))
dernier_gagne = 0
elif ordi == 3:
compteur += 1
chaine1.configure(text = "Vous : Ciseaux")
chaine2.configure(text = "Lui : Ciseaux")
chaine3.configure(text = "Résultat : Egalité")
chaine4.configure(text = "Score =" + str(compteur))
dernier_gagne = 3
#Programme principal
fen1 = Tk()
fen1.geometry("200x250")
tex1 = Label(fen1, text="Jeu du Pierre Papier Ciseaux", fg = "red")
tex1.pack()
bou1 = Button(fen1, text="Pierre", command = (lambda: choix(1)))
bou1.pack()
bou2 = Button(fen1, text="Papier", command = (lambda: choix(2)))
bou2.pack()
bou3 = Button(fen1, text="Ciseaux", command = (lambda: choix(3)))
bou3.pack()
bou4 = Button(fen1, text="Quitter", command = fen1.destroy)
bou4.pack(side=BOTTOM)
chaine1 = Label(fen1)
chaine1.pack()
chaine2 = Label(fen1)
chaine2.pack()
chaine3 = Label(fen1)
chaine3.pack()
chaine4 = Label(fen1)
chaine4.pack()
fen1.mainloop()
|
Et les explications :
Dans la condition, afin de faire sauter des lignes, on crée des objets différents pour chaque phrase :
Code : Python1
2
3
4 | chaine1.configure(text = "Vous : Pierre")
chaine2.configure(text = "Lui : Pierre")
chaine3.configure(text = "Résultat : Egalité")
chaine4.configure(text = "Score =" + str(compteur))
|
Ensuite, on ajoute la taille de la fenêtre :
Code : Python1
2 | fen1 = Tk()
fen1.geometry("200x250")
|
Puis, on glisse le bouton "Quitter" en bas :
Code : Python1
2 | bou4 = Button(fen1, text="Quitter", command = fen1.destroy)
bou4.pack(side=BOTTOM)
|
Et enfin, on n'oublie pas d'associer la méthode pack
() à nos objets "chaine1", "chaine2", "chaine3" et "chaine4" :
Code : Python1
2
3
4
5
6
7
8 | chaine1 = Label(fen1)
chaine1.pack()
chaine2 = Label(fen1)
chaine2.pack()
chaine3 = Label(fen1)
chaine3.pack()
chaine4 = Label(fen1)
chaine4.pack()
|
Alors, c'était si difficile que ça ? Non ? Bon bah on continue les améliorations alors.
Vous ne trouvez pas notre
PPC tristounet

?
Alors nous allons l'égayer avec des couleus

.
- le message "Resultat = Gagné" sera en bleu ;
- le message "Resultat = Egalité" sera en orange foncé ;
- le message "Resultat = Perdu" sera en rouge foncé ;
- le message avec l'élément Pierre sera en bleu foncé ;
- le message avec l'élément Papier sera en cyan foncé ;
- le message avec l'élement Ciseaux sera en pourpre ;
- le score sera en vert foncé.
Vous devez à peu près voir le résultat, quand on change d'élément, la couleur change, si l'ordinateur change subitement, la couleur le suit. Quant au résultat, si le joueur perd des points, le rouge foncé le rappelle à l'ordre...
Cette amélioration n'est pas seulement esthétique, elle est non seulement fonctionnelle mais en plus dynamisante, car le changement de couleur enlève le statisme du jeu.
Voici une amélioration qui ne devrait pas vous demander de grands effort (car la suite elle, demandera d'énormes efforts

).
Bon, je vous aide : la méthode configure
() peut prendre comme argument fg="", comme la classe Label
().
Voici la solution :
Code : Python 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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169 | # -*- coding: utf-8 -*-
from Tkinter import *
from random import randrange
# Définition des variables
debut = 0
joueur = 0
ordi = 0
nb_pierre = 0
nb_papier = 0
nb_ciseaux = 0
compteur = 0
dernier_gagne = 0
# Définition des fonctions
def choix(element):
"C'est l'élément choisi par le joueur"
global debut, joueur, ordi, nb_pierre, nb_papier, nb_ciseaux, compteur, dernier_gagne
if debut == 0:
ordi = 2
debut = 1
elif nb_pierre > nb_papier and nb_pierre > nb_ciseaux:
ordi = 2
elif nb_papier > nb_ciseaux and nb_papier > nb_pierre:
ordi = 3
elif nb_ciseaux > nb_pierre and nb_ciseaux > nb_papier:
ordi = 1
else:
if dernier_gagne == 1:
ordi = 2
elif dernier_gagne == 2:
ordi = 3
elif dernier_gagne == 3:
ordi = 1
else:
ordi = randrange(1,3)
if element == 1:
nb_pierre += 1
if ordi == 1:
compteur += 1
chaine1.configure(text = "Vous : Pierre", fg="dark blue")
chaine2.configure(text = "Lui : Pierre", fg="dark blue")
chaine3.configure(text = "Résultat : Egalité", fg="dark orange")
chaine4.configure(text = "Score =" + str(compteur), fg="dark green")
dernier_gagne = 0
elif ordi == 2:
compteur = compteur - 2
chaine1.configure(text = "Vous : Pierre", fg="dark blue")
chaine2.configure(text = "Lui : Papier", fg="dark cyan")
chaine3.configure(text = "Résultat : Perdu", fg="dark red")
chaine4.configure(text = "Score =" + str(compteur), fg="dark green")
dernier_gagne = 0
elif ordi == 3:
compteur = compteur + 2
chaine1.configure(text = "Vous : Pierre", fg="dark blue")
chaine2.configure(text = "Lui : Ciseaux", fg="purple")
chaine3.configure(text = "Résultat : Gagné", fg="blue")
chaine4.configure(text = "Score =" + str(compteur), fg="dark green")
dernier_gagne = 1
elif element == 2:
nb_papier += 1
if ordi == 1:
compteur = compteur + 2
chaine1.configure(text = "Vous : Papier", fg="dark cyan")
chaine2.configure(text = "Lui : Pierre", fg="dark blue")
chaine3.configure(text = "Résultat : Gagné", fg="blue")
chaine4.configure(text = "Score =" + str(compteur), fg="dark green")
dernier_gagne = 0
elif ordi == 2:
compteur += 1
chaine1.configure(text = "Vous : Papier", fg="dark cyan")
chaine2.configure(text = "Lui : Papier", fg="dark cyan")
chaine3.configure(text = "Résultat : Egalité", fg="dark orange")
chaine4.configure(text = "Score =" + str(compteur), fg="dark green")
dernier_gagne = 0
elif ordi == 3:
compteur = compteur - 2
chaine1.configure(text = "Vous : Papier", fg="dark cyan")
chaine2.configure(text = "Lui : Ciseaux", fg="purple")
chaine3.configure(text = "Résultat : Perdu", fg="dark red")
chaine4.configure(text = "Score =" + str(compteur), fg="dark green")
dernier_gagne = 2
elif element == 3:
nb_ciseaux += 1
if ordi == 1:
compteur = compteur - 2
chaine1.configure(text = "Vous : Ciseaux", fg="purple")
chaine2.configure(text = "Lui : Pierre", fg="dark blue")
chaine3.configure(text = "Résultat : Perdu", fg="dark red")
chaine4.configure(text = "Score =" + str(compteur), fg="dark green")
dernier_gagne = 0
elif ordi == 2:
compteur = compteur + 2
chaine1.configure(text = "Vous : Ciseaux", fg="purple")
chaine2.configure(text = "Lui : Papier", fg="dark cyan")
chaine3.configure(text = "Résultat : Gagné", fg="blue")
chaine4.configure(text = "Score =" + str(compteur), fg="dark green")
dernier_gagne = 0
elif ordi == 3:
compteur += 1
chaine1.configure(text = "Vous : Ciseaux", fg="purple")
chaine2.configure(text = "Lui : Ciseaux", fg="purple")
chaine3.configure(text = "Résultat : Egalité", fg="dark orange")
chaine4.configure(text = "Score =" + str(compteur), fg="dark green")
dernier_gagne = 3
#Programme principal
fen1 = Tk()
fen1.geometry("200x250")
tex1 = Label(fen1, text="Jeu du Pierre Papier Ciseaux", fg = "red")
tex1.pack()
bou1 = Button(fen1, text="Pierre", command = (lambda: choix(1)))
bou1.pack()
bou2 = Button(fen1, text="Papier", command = (lambda: choix(2)))
bou2.pack()
bou3 = Button(fen1, text="Ciseaux", command = (lambda: choix(3)))
bou3.pack()
bou4 = Button(fen1, text="Quitter", command = fen1.destroy)
bou4.pack(side=BOTTOM)
chaine1 = Label(fen1)
chaine1.pack()
chaine2 = Label(fen1)
chaine2.pack()
chaine3 = Label(fen1)
chaine3.pack()
chaine4 = Label(fen1)
chaine4.pack()
fen1.mainloop()
|
Pour les explications, cette fois, il n'y en a pas des tonnes :
Code : Python1
2
3
4 | chaine1.configure(text = "Vous : Pierre", fg="dark blue")
chaine2.configure(text = "Lui : Pierre", fg="dark blue")
chaine3.configure(text = "Résultat : Egalité", fg="dark orange")
chaine4.configure(text = "Score =" + str(compteur), fg="dark green")
|
il suffisait juste de rajouter l'argument fg="" avec la bonne couleur

.
Vous souvenez-vous du
PPC en mode console ? lorsqu'on quittait le programme, on avait droit à des statistiques.
Pour le mode fenêtre, lorsqu'on clique sur "Quitter", la fenêtre se ferme... Et c'est tout.
Nous allons donc modifier ceci !
Bien, on va remplacer le bouton "Quitter" par un bouton "Fin".
Celui-ci ne va pas effacer la fenêtre, il va effacer son contenu (ne paniquez pas, je vais vous expliquer comment on fait), et il va le remplacer par les statistiques, ainsi qu'un nouveau bouton : un bouton "Quitter" qui effacera la fenêtre !
Pour les statistiques, je veux :
- le nombre de Pierres utilisé par le joueur;
- le nombre de Papiers utilisé par le joueur;
- le nombre de Ciseaux utilisé par le joueur;
- et son score.
Comment effacer le contenu d'une fenêtre
Prenons une fenêtre avec un texte et un bouton "Effacer" :
Code : Python1
2
3
4
5
6
7
8 | from Tkinter import *
fenetre1 = Tk()
texte1 = Label(fenetre1, text="texte")
texte1.pack()
bouton1 = Button(fenetre1, text="Effacer", command=)
bouton1.pack()
fenetre1.mainloop()
|
Pour que le bouton ait un effet, il faut qu'il appelle une fonction, qu'on nommera effacer
()
On va donc définir cette fonction :
Code : Python1
2
3
4
5
6
7
8
9 | from Tkinter import *
def effacer():
fenetre1 = Tk()
texte1 = Label(fenetre1, text="texte")
texte1.pack()
bouton1 = Button(fenetre1, text="Effacer", command=effacer)
bouton1.pack()
fenetre1.mainloop()
|
Dedans cette fonction, on va utiliser les objets "texte1" et "bouton1" en leur associant la méthode : .destroy
().
Code : Python 1
2
3
4
5
6
7
8
9
10 | from Tkinter import *
def effacer():
bouton1.destroy()
texte1.destroy()
fenetre1 = Tk()
texte1 = Label(fenetre1, text="texte")
texte1.pack()
bouton1 = Button(fenetre1, text="Effacer", command=effacer)
bouton1.pack()
fenetre1.mainloop()
|
Et voilà le tout.
Bon, je vous laisse 2, 3 difficultés, histoire que vous cherchiez par vous même, rendez vous à la correction !
En premier lieu, le code :
Code : Python 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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183 | # -*- coding: utf-8 -*-
from Tkinter import *
from random import randrange
# Définition des variables
debut = 0
joueur = 0
ordi = 0
nb_pierre = 0
nb_papier = 0
nb_ciseaux = 0
compteur = 0
dernier_gagne = 0
# Définition des fonctions
def choix(element):
"C'est l'élément choisi par le joueur"
global debut, joueur, ordi, nb_pierre, nb_papier, nb_ciseaux, compteur, dernier_gagne
if debut == 0:
ordi = 2
debut = 1
elif nb_pierre > nb_papier and nb_pierre > nb_ciseaux:
ordi = 2
elif nb_papier > nb_ciseaux and nb_papier > nb_pierre:
ordi = 3
elif nb_ciseaux > nb_pierre and nb_ciseaux > nb_papier:
ordi = 1
else:
if dernier_gagne == 1:
ordi = 2
elif dernier_gagne == 2:
ordi = 3
elif dernier_gagne == 3:
ordi = 1
else:
ordi = randrange(1,3)
if element == 1:
nb_pierre += 1
if ordi == 1:
compteur += 1
chaine1.configure(text = "Vous : Pierre", fg="dark blue")
chaine2.configure(text = "Lui : Pierre", fg="dark blue")
chaine3.configure(text = "Résultat : Egalité", fg="dark orange")
chaine4.configure(text = "Score =" + str(compteur), fg="dark green")
dernier_gagne = 0
elif ordi == 2:
compteur = compteur - 2
chaine1.configure(text = "Vous : Pierre", fg="dark blue")
chaine2.configure(text = "Lui : Papier", fg="dark cyan")
chaine3.configure(text = "Résultat : Perdu", fg="dark red")
chaine4.configure(text = "Score =" + str(compteur), fg="dark green")
dernier_gagne = 0
elif ordi == 3:
compteur = compteur + 2
chaine1.configure(text = "Vous : Pierre", fg="dark blue")
chaine2.configure(text = "Lui : Ciseaux", fg="purple")
chaine3.configure(text = "Résultat : Gagné", fg="blue")
chaine4.configure(text = "Score =" + str(compteur), fg="dark green")
dernier_gagne = 1
elif element == 2:
nb_papier += 1
if ordi == 1:
compteur = compteur + 2
chaine1.configure(text = "Vous : Papier", fg="dark cyan")
chaine2.configure(text = "Lui : Pierre", fg="dark blue")
chaine3.configure(text = "Résultat : Gagné", fg="blue")
chaine4.configure(text = "Score =" + str(compteur), fg="dark green")
dernier_gagne = 0
elif ordi == 2:
compteur += 1
chaine1.configure(text = "Vous : Papier", fg="dark cyan")
chaine2.configure(text = "Lui : Papier", fg="dark cyan")
chaine3.configure(text = "Résultat : Egalité", fg="dark orange")
chaine4.configure(text = "Score =" + str(compteur), fg="dark green")
dernier_gagne = 0
elif ordi == 3:
compteur = compteur - 2
chaine1.configure(text = "Vous : Papier", fg="dark cyan")
chaine2.configure(text = "Lui : Ciseaux", fg="purple")
chaine3.configure(text = "Résultat : Perdu", fg="dark red")
chaine4.configure(text = "Score =" + str(compteur), fg="dark green")
dernier_gagne = 2
elif element == 3:
nb_ciseaux += 1
if ordi == 1:
compteur = compteur - 2
chaine1.configure(text = "Vous : Ciseaux", fg="purple")
chaine2.configure(text = "Lui : Pierre", fg="dark blue")
chaine3.configure(text = "Résultat : Perdu", fg="dark red")
chaine4.configure(text = "Score =" + str(compteur), fg="dark green")
dernier_gagne = 0
elif ordi == 2:
compteur = compteur + 2
chaine1.configure(text = "Vous : Ciseaux", fg="purple")
chaine2.configure(text = "Lui : Papier", fg="dark cyan")
chaine3.configure(text = "Résultat : Gagné", fg="blue")
chaine4.configure(text = "Score =" + str(compteur), fg="dark green")
dernier_gagne = 0
elif ordi == 3:
compteur += 1
chaine1.configure(text = "Vous : Ciseaux", fg="purple")
chaine2.configure(text = "Lui : Ciseaux", fg="purple")
chaine3.configure(text = "Résultat : Egalité", fg="dark orange")
chaine4.configure(text = "Score =" + str(compteur), fg="dark green")
dernier_gagne = 3
def effacer():
global nb_pierre, nb_papier, nb_ciseaux, compteur
tex1.destroy()
bou1.destroy()
bou2.destroy()
bou3.destroy()
bou4.destroy()
chaine1.configure(text = "Nombre de Pierre utilisés :" + str(nb_pierre), fg="dark blue")
chaine2.configure(text = "Nombre de Papier utilisés :" + str(nb_papier), fg="dark cyan")
chaine3.configure(text = "Nombre de Ciseaux utilisés :" + str(nb_ciseaux), fg="purple")
chaine4.configure(text = "Score =" + str(compteur), fg="dark green")
bou5 = Button(fen1, text="Quitter", command=fen1.destroy)
bou5.pack(side=BOTTOM)
#Programme principal
fen1 = Tk()
fen1.geometry("200x250")
tex1 = Label(fen1, text="Jeu du Pierre Papier Ciseaux", fg = "red")
tex1.pack()
bou1 = Button(fen1, text="Pierre", command = (lambda: choix(1)))
bou1.pack()
bou2 = Button(fen1, text="Papier", command = (lambda: choix(2)))
bou2.pack()
bou3 = Button(fen1, text="Ciseaux", command = (lambda: choix(3)))
bou3.pack()
bou4 = Button(fen1, text="Fin", command=effacer)
bou4.pack(side=BOTTOM)
chaine1 = Label(fen1)
chaine1.pack()
chaine2 = Label(fen1)
chaine2.pack()
chaine3 = Label(fen1)
chaine3.pack()
chaine4 = Label(fen1)
chaine4.pack()
fen1.mainloop()
|
Approchons nous de la fonction effacer
() :
Code : Python 1
2
3
4
5
6
7
8
9
10
11
12
13 | def effacer():
global nb_pierre, nb_papier, nb_ciseaux, compteur
tex1.destroy()
bou1.destroy()
bou2.destroy()
bou3.destroy()
bou4.destroy()
chaine1.configure(text = "Nombre de Pierre utilisés :" + str(nb_pierre), fg="dark blue")
chaine2.configure(text = "Nombre de Papier utilisés :" + str(nb_papier), fg="dark cyan")
chaine3.configure(text = "Nombre de Ciseaux utilisés :" + str(nb_ciseaux), fg="purple")
chaine4.configure(text = "Score =" + str(compteur), fg="dark green")
bou5 = Button(fen1, text="Quitter", command=fen1.destroy)
bou5.pack(side=BOTTOM)
|
Première ligne, on définit la fonction, deuxième (là, le piège était de ne pas oublier cette deuxième ligne), on définit les variables qui seront utilisées dans la fonction.
Ensuite, on efface les boutons et le texte... Et là, pour les messages qu'on affiche, je les réutilise, plutôt que de les effacer pour en créer d'autres, je change juste les paramètres et je garde les couleurs qu'on a utilisées.
Enfin, je crée un dernier bouton.
Et voilà notre magnifique
PPC en mode fenêtre

.
Je tiens à préciser que pour cette partie, je me suis fait aider dans ce
message sur le Forum du SdZ.
Cette fois-ci encore, nous allons optimiser le script au maximum possible. Enfin... Je ne l'optimiserai pas "à fond", car encore une fois, nous ne pouvons pas nous attarder 100 chapitres dessus, car il y a d'autres parties à voir et Ô combien plus intéressantes

.
Commençons par l'
I.A., dans le chapitre précédant nous avions transformé cette partie :
Code : Python 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 | if debut == 0:
ordi = 2
debut = 1
elif nb_pierre > nb_papier and nb_pierre > nb_ciseaux:
ordi = 2
elif nb_papier > nb_ciseaux and nb_papier > nb_pierre:
ordi = 3
elif nb_ciseaux > nb_pierre and nb_ciseaux > nb_papier:
ordi = 1
|
Comme ceci :
Code : Python 1
2
3
4
5
6
7
8
9
10
11
12 | if debut == 0 or ((nb_pierre > nb_papier) and (nb_pierre > nb_ciseaux)):
ordi = 2
debut = 1
elif nb_papier > nb_ciseaux and nb_papier > nb_pierre:
ordi = 3
elif nb_ciseaux > nb_pierre and nb_ciseaux > nb_papier:
ordi = 1
|
Mais nous pouvons faire mieux ! Par exemple cette partie (juste après) :
Code : Python 1
2
3
4
5
6
7
8
9
10
11 | if dernier_gagne == 1:
ordi = 2
elif dernier_gagne == 2:
ordi = 3
elif dernier_gagne == 3:
ordi = 1
|
Nous pouvons faire :
Code : Python1
2
3
4
5
6
7 | if dernier_gagne == 1 or dernier_gagne == 2:
ordi = dernier_gagne + 1
elif dernier_gagne == 3:
ordi = 1
|
Maintenant, nous allons attaquer le plus gros morceau : la condition qui vérifie qui a fait quoi et le résultat. Notre but, quand je dis "optimiser" est de réduire un maximum le nombre de lignes qu'on utilise.
voilà le morceau (92 lignes

) :
Code : Python 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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92 | if element == 1:
nb_pierre += 1
if ordi == 1:
compteur += 1
chaine1.configure(text = "Vous : Pierre", fg="dark blue")
chaine2.configure(text = "Lui : Pierre", fg="dark blue")
chaine3.configure(text = "Résultat : Egalité", fg="dark orange")
chaine4.configure(text = "Score =" + str(compteur), fg="dark green")
dernier_gagne = 0
elif ordi == 2:
compteur = compteur - 2
chaine1.configure(text = "Vous : Pierre", fg="dark blue")
chaine2.configure(text = "Lui : Papier", fg="dark cyan")
chaine3.configure(text = "Résultat : Perdu", fg="dark red")
chaine4.configure(text = "Score =" + str(compteur), fg="dark green")
dernier_gagne = 0
elif ordi == 3:
compteur = compteur + 2
chaine1.configure(text = "Vous : Pierre", fg="dark blue")
chaine2.configure(text = "Lui : Ciseaux", fg="purple")
chaine3.configure(text = "Résultat : Gagné", fg="blue")
chaine4.configure(text = "Score =" + str(compteur), fg="dark green")
dernier_gagne = 1
elif element == 2:
nb_papier += 1
if ordi == 1:
compteur = compteur + 2
chaine1.configure(text = "Vous : Papier", fg="dark cyan")
chaine2.configure(text = "Lui : Pierre", fg="dark blue")
chaine3.configure(text = "Résultat : Gagné", fg="blue")
chaine4.configure(text = "Score =" + str(compteur), fg="dark green")
dernier_gagne = 0
elif ordi == 2:
compteur += 1
chaine1.configure(text = "Vous : Papier", fg="dark cyan")
chaine2.configure(text = "Lui : Papier", fg="dark cyan")
|