-
Notifications
You must be signed in to change notification settings - Fork 0
/
jeuVie.py
139 lines (119 loc) · 4.32 KB
/
jeuVie.py
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 time
from threading import Thread
class Etat(Thread):
continuer=True
def __init__(self,jeu):
Thread.__init__(self)
self.jeu = jeu
def run(self):
while Etat.continuer :
self.jeu.commencer()
time.sleep(0.5)
class JeuVie(Canvas):
tableau=[]
continuer=True
def __init__(self,fenetre,width=800,height=800,**kargs):
Canvas.__init__(self,fenetre,width=500,height=600,bg="white",**kargs)
self.nbCase = 30
self.longueur = height / self.nbCase
self.largeur = width / self.nbCase
def dessiner(self):
for j in range(self.nbCase) :
for i in range (self.nbCase):
JeuVie.tableau.append(self.create_rectangle(self.largeur*i,self.longueur*j,self.largeur*(1+i),self.longueur*(1+j), outline="black",tags="white"))
def determinerNumero(self,x,y):
return int(int(y/self.longueur)*(self.nbCase)+int(x/self.largeur+1))
def tuer(self,id):
print("Debut")
nbCasesViavants=0
try:
if self.gettags(id-self.nbCase-1)[0] == "black":
nbCasesViavants += 1
if self.gettags(id-self.nbCase)[0] == "black":
nbCasesViavants += 1
if self.gettags(id-self.nbCase+1)[0] == "black":
nbCasesViavants += 1
if self.gettags(id-1)[0] == "black":
nbCasesViavants += 1
if self.gettags(id+1)[0] == "black":
nbCasesViavants += 1
if self.gettags(id+self.nbCase-1)[0] == "black":
nbCasesViavants += 1
if self.gettags(id+self.nbCase)[0] == "black":
nbCasesViavants += 1
if self.gettags(id+self.nbCase+1)[0] == "black":
nbCasesViavants += 1
print(nbCasesViavants)
except IndexError:
pass
if self.gettags(id)[0] == "black":
if nbCasesViavants == 2 or nbCasesViavants == 3 :
return False
return True
elif self.gettags(id)[0] == "white":
if nbCasesViavants == 3 :
return False
return True
def changerCouleur(self,event):
if(self.gettags(self.determinerNumero(event.x,event.y))[0] == "white"):
self.itemconfig(self.determinerNumero(event.x,event.y),fill="black",tag="black")
else:
self.itemconfig(self.determinerNumero(event.x,event.y),fill="white",tag="white")
def commencer(self):
morts = []
vivants = []
if JeuVie.continuer == True :
for id in JeuVie.tableau :
if (self.tuer(id)):
morts.append(id)
else :
vivants.append(id)
for id in morts:
self.itemconfig(id,fill="white",tags="white")
for id in vivants:
self.itemconfig(id,fill="black",tags="black")
def stopper(self):
for id in JeuVie.tableau :
self.itemconfig(id,fill="white",tags="white")
JeuVie.continuer = False
def pauses():
JeuVie.continuer = False
pause['text'] = "Continuer"
pause['command'] = continuer
def continuer():
JeuVie.continuer = True
pause['text'] = "Pause"
pause['command'] = pauses
def stopper():
canvas.stopper()
commence['text'] = "Commencer"
commence['command'] = recommencer
def recommencer():
JeuVie.continiuer = True
commence['text'] = "Stopper"
commence['command'] = stopper
def commencer() :
etat.start()
commence['text'] = "Stopper"
pause.pack(side="left")
commence['command'] = stopper
def quitter() :
Etat.continuer = False
fenetre.quit()
#Création des éléments
fenetre = Tk()
canvas=JeuVie(fenetre)
etat = Etat(canvas)
quitte=Button(fenetre,text="Quitter",command = quitter)
canvas.dessiner()
canvas.bind('<Button-1>',canvas.changerCouleur)
pause = Button(fenetre,text = "Pause",command = pauses)
titre=Label(fenetre,text="Jeu de la vie")
commence=Button(fenetre,text="Commencer",command = commencer)
#Poistionnement des éléments
titre.pack(side="top")
canvas.pack(side="top",fill=X)
commence.pack(side="left")
quitte.pack(side="right")
fenetre.mainloop()