Bonjour,

Je suis en terminale S et , avec mon groupe, nous souhaitons créer un jeu dans le même type que celui-ci mais a l'horizontale:

Nom : 4.jpg
Affichages : 372
Taille : 13,5 Ko



J'ai créé une fenêtre avec un Canevas ou j'ai pré-intégré des rectangles qui symbolisent des astéroïdes:

Nom : Sans titre.png
Affichages : 371
Taille : 17,7 Ko

J'ai aussi prédéfini des mouvement d'astéroïde qui sont symbolisés par mes fonctions un, deux , trois etc..

le vaisseau est symbolisé par le pion. Tout marche mais je n'arrive pas a créer une boucle qui ,quand on ne touche pas l'astéroïde avec le pion et que l’astéroïde arrive au bout du canevas , repart sur un autre mouvement symbolisé par les fonctions un,deux,trois etc...
Pour que vous compreniez j'ai simplifier mon code et je voudrai que la fonction un() se répète.
Merci d'avance de l'aide que vous pourrez m'apporter !

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
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
 
from tkinter import *
import random
 
def raz():
    canevas.delete(fen,rectangle)
    canevas.delete(fen,rectangle1)
    canevas.delete(fen,rectangle2)
    canevas.delete(fen,rectangle3)
    canevas.delete(fen,rectangle4)
    canevas.delete(fen,rectangle5)
    canevas.delete(fen,rectangle6)
    canevas.delete(fen,rectangle7)
    canevas.delete(fen,rectangle8)
    canevas.delete(fen,rectangle9)
    canevas.delete(fen,rectangle10)
    canevas.delete(fen,rectangle11)
    canevas.delete(fen,rectangle12)
    canevas.delete(fen,rectangle13)
    canevas.delete(fen,rectangle14)
    return;
 
def definir():
    x,y=610,10
    x1,y1=610,92
    x2,y2=610,174
    x3,y3=610,256
    x4,y4=610,338
    x5,y5=692,10
    x6,y6=692,92
    x7,y7=692,174
    x8,y8=692,256
    x9,y9=692,338
    x10,y10=774,10
    x11,y11=774,92
    x12,y12=774,174
    x13,y13=774,256
    x14,y14=774,338
    rectangle= canevas.create_rectangle(x,y,x+72,y+72,fill='blue')
    rectangle1= canevas.create_rectangle(x1,y1,x1+72,y1+72,fill='orange')
    rectangle2= canevas.create_rectangle(x2,y2,x2+72,y2+72,fill='red')
    rectangle3= canevas.create_rectangle(x3,y3,x3+72,y3+72,fill='grey')
    rectangle4= canevas.create_rectangle(x4,y4,x4+72,y4+72,fill='purple')
    rectangle5= canevas.create_rectangle(x5,y5,x5+72,y5+72,fill='blue')
    rectangle6= canevas.create_rectangle(x6,y6,x6+72,y6+72,fill='orange')
    rectangle7= canevas.create_rectangle(x7,y7,x7+72,y7+72,fill='red')
    rectangle8= canevas.create_rectangle(x8,y8,x8+72,y8+72,fill='grey')
    rectangle9= canevas.create_rectangle(x9,y9,x9+72,y9+72,fill='purple')
    rectangle10= canevas.create_rectangle(x10,y10,x10+72,y10+72,fill='blue')
    rectangle11= canevas.create_rectangle(x11,y11,x11+72,y11+72,fill='orange')
    rectangle12= canevas.create_rectangle(x12,y12,x12+72,y12+72,fill='red')
    rectangle13= canevas.create_rectangle(x13,y13,x13+72,y13+72,fill='grey')
    rectangle14= canevas.create_rectangle(x14,y14,x14+72,y14+72,fill='purple')
    return;
 
 
fen=Tk()
"""fen.geometry('600x430+400+200')"""
"""fen.overrideredirect(1)"""
canevas=Canvas(fen,height=420, width=900)
canevas.pack()
#declaration des variable pour mes rectangles et créations 
x,y=610,10
x1,y1=610,92
x2,y2=610,174
x3,y3=610,256
x4,y4=610,338
x5,y5=692,10
x6,y6=692,92
x7,y7=692,174
x8,y8=692,256
x9,y9=692,338
x10,y10=774,10
x11,y11=774,92
x12,y12=774,174
x13,y13=774,256
x14,y14=774,338
rectangle= canevas.create_rectangle(x,y,x+72,y+72,fill='blue')
rectangle1= canevas.create_rectangle(x1,y1,x1+72,y1+72,fill='orange')
rectangle2= canevas.create_rectangle(x2,y2,x2+72,y2+72,fill='red')
rectangle3= canevas.create_rectangle(x3,y3,x3+72,y3+72,fill='grey')
rectangle4= canevas.create_rectangle(x4,y4,x4+72,y4+72,fill='purple')
rectangle5= canevas.create_rectangle(x5,y5,x5+72,y5+72,fill='blue')
rectangle6= canevas.create_rectangle(x6,y6,x6+72,y6+72,fill='orange')
rectangle7= canevas.create_rectangle(x7,y7,x7+72,y7+72,fill='red')
rectangle8= canevas.create_rectangle(x8,y8,x8+72,y8+72,fill='grey')
rectangle9= canevas.create_rectangle(x9,y9,x9+72,y9+72,fill='purple')
rectangle10= canevas.create_rectangle(x10,y10,x10+72,y10+72,fill='blue')
rectangle11= canevas.create_rectangle(x11,y11,x11+72,y11+72,fill='orange')
rectangle12= canevas.create_rectangle(x12,y12,x12+72,y12+72,fill='red')
rectangle13= canevas.create_rectangle(x13,y13,x13+72,y13+72,fill='grey')
rectangle14= canevas.create_rectangle(x14,y14,x14+72,y14+72,fill='purple')
 
def jouer():
    def Clavier(event):
        """ Gestion de l'événement Appui sur une touche du clavier """
        global PosX,PosY
        touche = event.keysym
        # déplacement vers le haut
        if touche == 'Up':
            PosY -= 82
        # déplacement vers le bas
        if touche == 'Down':
            PosY += 82
        if PosY>374:
            PosY=374
        if PosY<46:
            PosY=46
    # on dessine le pion à sa nouvelle position
        canevas.coords(Pion,PosX -10, PosY -10, PosX +10, PosY +10)
    """position pion + creation"""
    PosX = 40
    PosY = 210
    Pion = canevas.create_oval(PosX-10,PosY-10,PosX+10,PosY+10,width=2,outline='black',fill='red')
    canevas.focus_set()
    canevas.bind('<Key>',Clavier)
    canevas.pack(padx =5, pady =5)
    def un():
        global x, y, x1, y1,PosX,PosY
        #Si la position -72 n'est pas atteint on continue
        if x1>-72:
            x=x-2
            x1=x1-2
            canevas.coords(rectangle,x,y, x+72,y+72)
            canevas.coords(rectangle1,x1,y1, x1+72,y1+72)
            fen.after(10, un)
        #Si la position est atteinte alors on fait une remise a zéro du canevas pour remettre les blocs comme au debut et c est ici le debut de la boucle
        if x1==-72:
            raz()
            definir()
            return;
 
        #Ici nous avons la posibilité que le pion touche le rectangle alors la fenetre se ferme
        if PosX==x-18 and PosY-36==y or PosX==x1-18 and PosY-36==y1:
            fen.destroy()
 
    un()
 
jouer()