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() |