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,sample
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):
#creation de 5 dès
taille = 50
d = 2* taille
dDispo = [(-d,-d),(-d,d),(d,-d),(d,d),(0,0)]
valDes =[1,2,3,4,5,6]
for i in dDispo:
x,y = self.larg/2,self.haut/2
j = randrange(0,len(valDes)) # recupere une valeur d'index au hazard dans dDispo
# pop() retourne la valeur à l'index j et retire l'element de la liste
self.des.append(FaceDom(self.can,valDes.pop(j),(x+i[0],y+i[1]),taille))
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