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
| #variante 1
from tkinter import *
from random import randrange
class FaceDom(object):
def __init__(self, can, val, pos, taille =70):
self.can =can
self.val = val
# creation du carré
x, y, c = pos[0], pos[1], taille/2
self.carre = can.create_rectangle(x -c, y-c, x+c, y+c, fill ='ivory', width =2)
d = taille/3
# déclaration de la liste contenant une reference des cercles
self.pList =[]
# liste contenant les coordonnées des cercles
pDispo = [((0,0),), ((-d,d),(d,-d)), ((-d,-d), (0,0), (d,d)),((-d,-d),(-d,d),(d,-d),(d,d)),
((-d,-d),(-d,d),(d,-d),(d,d),(0,0)),((-d,-d),(-d,d),(d,-d),(d,d),(d,0),(-d,0))]
disp = pDispo[self.val -1]
# creation des cercles
for p in disp:
self.cercle(x +p[0], y +p[1], 5, 'red')
def cercle(self, x, y, r, coul):
# ajout des cercles
self.pList.append(self.can.create_oval(x-r, y-r, x+r, y+r, fill=coul))
def effacer(self):
# efface les dès
for p in self.pList:
self.can.delete(p)
self.can.delete(self.carre)
class Projet(Frame):
def __init__(self, larg, haut):
Frame.__init__(self)
self.larg, self.haut = larg, haut
self.can = Canvas(self, bg='dark green', width =larg, height =haut)
self.can.pack(padx =5, pady =5)
self.des=[] #liste contenant les faces des dès
# Creation des boutons
bList = [("A", self.boutA), ("B", self.boutB),
("Quitter", self.boutQuit)]
for b in bList:
Button(self, text =b[0], command =b[1]).pack(side =RIGHT,padx =15, pady =15)
self.pack()
def boutA(self):
rg = len(self.des)/3 #defini le rang
a,da=0,80 #defini le pas pour l'ordonnée
valDes = ''
for i in range(3):
dx,dy = self.larg/10,self.haut/10
x = dx + (rg * 80)
y = dy +a
self.des.append(FaceDom(self.can,randrange(1,7),(x,y),50))
a = a + da
valDes = str(self.des[int(3*rg+i)].val) + valDes # recupere la valeur des 3 dès
if valDes in ('421','412','214','241','142','124'):
self.can.create_text(self.larg/2,self.haut/2,text='Gagné',fill ='ivory',font=('Helvetica', 30))
def boutB(self):
#efface les dès
for i in range(len(self.des)):
self.des[i].effacer()
self.des=[]
def boutQuit(self):
self.master.destroy()
Projet(600, 600).mainloop() |
Partager