begin process at 2010 02 09 21:44:44
  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 :2 969

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

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
Source avec Zip WIDGET TKINTER par gaulthier

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture ILLUSTRATION DE SINUS ET DE COSINUS par calogerogigante
Source avec Zip Source avec une capture EQUATION STANDARD DE LA DROITE par calogerogigante
Source avec Zip Source avec une capture I.A. (DÉBUTANT) par Rano Its
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 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. 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] suppression de certaines parties d'un fichier texte [ par Flobertime ] Bonjour, Je souhaiterai supprimer certaines partie d'un fichier texte. Ces parties seraient par exemple de la ligne 1 à la ligne 12 et de 25 à 45. o envoi mail python [ par papousy ] je sais pas pourquoi mais j'arrive pas envoyé un mail à partir de ce présent code: [i]#!/usr/bin/python # -*- coding: iso-8859-1 -*- import smtplib i envoi mail python [ par papousy ] send: 'ehlo [127.0.1.1]\r\n' reply: '250-mwinf2c06.orange.fr\r\n' reply: '250-PIPELINING\r\n' reply: '250-SIZE 28730982\r\n' reply: '250-ETRN\r\n' rep Savoir si le programme lancé par Python est terminé [ par zannguyen ] Bonjour à tous, Je fais un petit script avec Python qui permet d'appeler un autre programme à exécuter. Cet appel est réalisé quand on clique sur un b n'afficher que la date sous Python [ par williammalavelle ] Bonjour, Je suis complétement débutant sous python et je souhaite pouvoir trouver la solution permettant d'afficher la date du jour sans l'heure dans


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

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,780 sec (4)

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