Damier simple avec tkinter

Contenu du snippet

Voici un programme tout simple qui fait apparaitre un damier, l'utilisateur peut ajouter des pions verts là ou il veut, et des pions rouges de manière aléatoire en cliquant sur le bouton.
Nécéssite d'être amélioré donc j'attend vos commentaires!Merci

Source / Exemple :


# -*- coding: cp1252 -*-

#######Importations des fonctions########

from Tkinter import *
from random import * #pour la génération aléatoire des pions

#######Définition des fonctions##########
def cercle(x, y, r, coul ='red'):#pour le dessin des pions
    "tracé d'un cercle de centre (x,y) et de rayon r"
    can.create_oval(x-r, y-r, x+r, y+r, fill=coul)
    
def remplir(y):#calcul des coord de la ligne
    x=0
    liste=[]
    while x<200:
        liste.append([x,y,x+20,y+20])
        x=x+20
    return liste

def figure_1():
    "dessiner le damier"
    global x,y,damier
    x=0
    y=0
    # Effacer d'abord tout dessin préexistant :
    can.delete(ALL)
    #definition de la matrice du damier
    damier=[]
    while y<200:
        damier.append(remplir(y))#on remplit avec les coordonnées des cases de la ligne
        y=y+20
    a=0
    while a<10:#on trace la premiere partie du damier
        
        al=damier[a]
        b=0
        while b<10:
            al1=al[b]
            can.create_rectangle(al1[0],al1[+1],al1[2],al1[3],fill='black')
            b=b+2   
        a=a+2
    a=1
    while a<10:#on recommence avec un décalage de 1 en abcsisses et un en ordonnées pour la
        #deuxieme partie du damier
        
        al=damier[a]
        b=1
        while b<10:
            al1=al[b]
            can.create_rectangle(al1[0],al1[+1],al1[2],al1[3],fill='black')
            b=b+2   
        a=a+2
    
     
def figure_2():
    """dessiner des pions de manière aléatoire"""
    alea=randrange(10)#on sélectionne une position au hasard sur la matrice
    alea1=randrange(10)
    ligne=damier[alea]#on prend les coordonnées aléatoires
    case=ligne[alea1]
    x=case[0]+10#on centre le pion
    y=case[1]+10
    cercle(x,y,10,'red')#et on le dessine
   

def pointeur(event):
    """Dessine un pion la ou l'utilisateur a cliqué"""
    x=event.x%20
    x=(event.x-x)+10
    y=event.y%20
    y=(event.y-y)+10
    ##print x,y#debugging
    

    
    cercle(x,y,10,'green')

##### Programme principal : ############
global damier
fen = Tk()
can = Canvas(fen, width =200, height =200, bg ='white')
can.bind("<Button-1>", pointeur)
can.pack(side =TOP, padx =5, pady =5)
b1 = Button(fen, text ='damier', command =figure_1)
b1.pack(side =LEFT, padx =3, pady =3)
b2 = Button(fen, text ='pions', command =figure_2)
b2.pack(side =RIGHT, padx =3, pady =3)
b3 = Button(fen, text ='Quitter', command =fen.destroy)
b3.pack(side =BOTTOM,padx =3, pady =3)
fen.mainloop()

Conclusion :


Ce que je cherche a rajouter :
- choix des couleurs de pions
- les deux couleurs se placent a l'aide du clic
- suppression des variables globales ( bah oui j'ai pas réussi a faire autrement, je débute en prog!)

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (bastelmann)