begin process at 2010 07 29 15:51:33
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > DAMIER SIMPLE AVEC TKINTER

DAMIER SIMPLE AVEC TKINTER


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Classé sous :damier, tkinter, python, pions Niveau :Débutant Date de création :05/09/2008 Vu :3 508

Auteur : bastelmann

Ecrire un message privé
Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

 Description

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

  • # -*- 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()
# -*- 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!)


 Sources du même auteur

Source avec une capture HISTOGRAMME ALÉATOIRE

 Sources de la même categorie

Source avec Zip Source avec une capture PYGTK : CODES ET EXPLICATIONS POUR DÉBUTER par loloof64
TK_WATCH :HORLOGE GRAPHIQUE par afranck64
Source avec une capture DESSIN DE DÉS À ÉCHELLE VARIABLE SUR CANVAS par calogerogigante
BOITE DE CONNEXION USER/PASSWORD POUR PYTHON:TK_LOGIN par afranck64
Source avec Zip Source avec une capture CALCUL DE RÉSISTANCES par amaury74

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture [PYTHON] JEU DU PENDU par The_tito
Source avec Zip Source avec une capture CASSE BRIQUE par elnabo
Source avec Zip Source avec une capture EQUATION STANDARD DE LA DROITE par calogerogigante
Source avec Zip CALCULATRICE SIMPLICISTE SOUS TKINTER par elnabo
QUELQUES AFFICHAGES DU SYSTEME par yorukaze

Commentaires et avis

Commentaire de petitmoustique le 31/10/2008 12:39:24 9/10

Je propose avec le clic droit !
Sinon, inutile mais drole ^^ +9

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

help, faire un mastermind en python et en tkinter avant le 24 !!! [ par Crick132 ] je suis &#233;tudiante en 2&#232;me ann&#233;e, je dois r&#233;aliser un mastermind en python avec 8 couleurs et 5 combinaisons possibles.si quelqu'un Probleme avec TKinter [ par titasse ] Bonjour, je debute en python. J'ai un probleme lorsque je veux importer TKinter avec la commande from TKinter import * j'ai le message suivant : Imp Ouverture d'un fichier windows (avec Tkinter) [ par Uims ] Bonjour, Je travaille sous python et Tkinter et j'aurai voulu savoir comment dire a python de demarrer (comme on clique sur un fichier) une applicati Python 2.6 avec Tkinter 8.6 [ par zarash ] Bonjour, Voici mon probleme : Je souhaite utiliser une option du widget text de Tkinter qui n'existe que dans la version 8.6.Il s'agit de la rotation PYTHON TKINTER utilisation de labels [ par bichon3001 ] Bonjour, Je souhaite utiliser l'interface graphique TKinter de Python pour appeler une fonction avec un bouton, et afficher le résultat dans un label. Communication série RS232 en python (PC - PC) [ par dayiri ] Salutje souhaiterais savoir comment ecrire un script python pour faire communiquer deux PC via le port série (RS232). merci pour votre aide Ouvrir un fichier avec un autre programme [ par piche32 ] Bonjour à tous. Je suis débutant en python et je souhaiterais ouvrir un fichier avec google earth depuis un programme en python. J'aimerais savoir qu Débutant, complètement perdu... [ par Mgiv64 ] Bonjour à tous,  J'ai programmé une petite application qui réalise des backup d'un fichier de données (d'une application comptable).Mon programme loca Aide urgente pour un programme python [ par valjean634 ] Bonjour, Voila j'ai un gros probleme, j'ai examen d'informatique lundi , dans trois jours, et je doit présenter un pogramme sur python. Seulement je n Socket Python en SSL et Jabber [ par superzero93 ] Bonsoir à tousJ'ai installé un serveur XMPP Jabber sur une machine virtuelle Debian Lenny 32 bits (noyau 2.6.29 et sans interface graphique), et un cl


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Juillet 2010
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,998 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales