Bonjour � tous,

Voici l'�nonc�:


Exercice 8.21:
�crivez un programme qui fait appara�tre une fen�tre avec un canevas et un bouton. Dans le canevas, tracez un rectangle gris fonc�,
lequel repr�sentera une route, et par-dessus, une s�rie de rectangles jaunes cens�s repr�senter un passage pour pi�tons.
Ajoutez quatre cercles color�s pour figurer les feux de circulation concernant les pi�tons et les v�hicules. Chaque utilisation du
bouton devra provoquer le changement de couleur des feux:

Nom : 8.21.png
Affichages : 1086
Taille : 3,2 Ko




Mon code n'est pas repr�sentatif de l'image ci-dessus, il est plus grand au niveau des proportions et surement moins bien cadr� mais s'en rapproche �norm�ment

Voici mon code:

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
from tkinter import *
 
def change_coul():
    global c
    if c ==0:
        #Feu
        can.create_oval(115-15,185-15,115+15,185+15,fill= coul[0])
        can.create_oval(430-15,185-15,430+15,185+15,fill= coul[1])
        can.create_oval(115-15,300-15,115+15,300+15,fill= coul[1])
        can.create_oval(430-15,300-15,430+15,300+15,fill= coul[0])
        c=1
    else:
        #Feu
        can.create_oval(115-15,185-15,115+15,185+15,fill= coul[1])
        can.create_oval(430-15,185-15,430+15,185+15,fill= coul[0])
        can.create_oval(115-15,300-15,115+15,300+15,fill= coul[0])
        can.create_oval(430-15,300-15,430+15,300+15,fill= coul[1])
        c = 0
 
def rectangle(x,y,y1,x1, coul):
    i = 0
    while i < 8:
        can.create_rectangle(x,y,x+v,y+d, fill=coul)
        i+=1
        x+=v*2
 
 
coul = ["red","green"]
c = 0
v = 15
d = 100
fen = Tk()
can = Canvas(fen, width = 500, height = 500, bg="silver")
# ROUTE
can.create_rectangle(150,0,400,500, fill="grey")
#PASSAGE PIETON
i = 0
while i < 8:
    rectangle(160,200,20,250, "yellow")
    i+=1
#Feu
can.create_oval(115-15,185-15,115+15,185+15,fill= coul[1])
can.create_oval(430-15,185-15,430+15,185+15,fill= coul[0])
can.create_oval(115-15,300-15,115+15,300+15,fill= coul[0])
can.create_oval(430-15,300-15,430+15,300+15,fill= coul[1])
 
Button(fen, text="feu rouge", command=change_coul).pack(side=BOTTOM)
can.pack()
 
fen.mainloop()
Mes Questions:

j'aurais souhait� savoir si une m�thode assez simple permettrait d'all�ger la partie feu, car �a rajoute 12 lignes et donc grossi le code.

Savoir �galement, si comme la question du dessus, une fa�on de faire plus ad�quate aurait �t� pr�f�rable ?

Merci pour les courageux et bonne lecture.