Accueil > > > DAMIER SIMPLE AVEC TKINTER
DAMIER SIMPLE AVEC TKINTER
Information sur la source
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 de la même categorie
Commentaires et avis
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 étudiante en 2ème année, je dois ré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
|
Derniers Blogs
[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Arnault Nouvel et Antoine Dongois Le processus à prendre : Apprendre (découvrir la plateforme) Préparer (documenter l'historique et choisir la méthode de MAJ) Test (Test de MAJ) Implémenter (Effectuer la MAJ) Valid...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOURTECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOUR par ROMELARD Fabrice
Après un retour sur l'histoire des TechDays de Paris et le fait que ce soit le plus gros event MS au monde (du fait de sa gratuité), le président de MS France (Eric Boustoullier) a fait une présentation de la vision Microsoft pour les années à venir...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|