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
PB LORS DE L'INSTALLATION SHAREPOINT 2010.PB LORS DE L'INSTALLATION SHAREPOINT 2010. par Patrick Guimonet
Lors de l'installation de SharePoint 2010, j'ai rencontré un problème de plantage à l'étape 5 du configuration Wizard. Ca se termine sur cet écran : Et en analysant le fichier de journalisation, on remarque vers la fin des 15000 et quelques lign...
Cliquez pour lire la suite de l'article par Patrick Guimonet [WF4] AJOUTER DES CONTRAINTES à UNE ACTIVITé (2/2)[WF4] AJOUTER DES CONTRAINTES à UNE ACTIVITé (2/2) par JeremyJeanson
Après mon précédent article qui attaque les contraintes par la fasse Nord de l'Everest. passons à la seconde possibilité offerte par WF4 pour valider une activité : la metadata . Je vous en ai déjà toucher un ou deux mots. La metadata dans WF4 est un élém...
Cliquez pour lire la suite de l'article par JeremyJeanson [WF4] AJOUTER DES CONTRAINTES à UNE ACTIVITé (1/2)[WF4] AJOUTER DES CONTRAINTES à UNE ACTIVITé (1/2) par JeremyJeanson
De WF3 à WF4 pas mal de choses on été changées pour faciliter la vie des développeurs, mais certain points peuvent sembler obscures. comme les contraintes. Pour vous guider, je me lance dans une série de deux articles. Ils présenterons deux approches poss...
Cliquez pour lire la suite de l'article par JeremyJeanson [ASP.NET] NE PAS SE FAIRE AVOIR PAR IHTTPMODULE ET SA MéTHODE INIT()[ASP.NET] NE PAS SE FAIRE AVOIR PAR IHTTPMODULE ET SA MéTHODE INIT() par tja
Beaucoup de développeurs pensent que lorsqu'on créé et enregistre un IHttpModule, il n'en existe qu'une seule instance et la méthode Init() sera appelée qu'une fois.
C'est faux
Cela peut vraiment créer des bugs subtils dont en ne se rend pas compte ...
Cliquez pour lire la suite de l'article par tja [MSTD10] SHAREPOINT 2010 ET TEAM FOUNDATION SERVER[MSTD10] SHAREPOINT 2010 ET TEAM FOUNDATION SERVER par phil
Un post rapide pour vous informer de la disponibilité de la vidéo de ma présentation sur SharePoint 2010 & Team Foundation Server. http://www.microsoft.com/france/vision/mstechdays10/Webcast.aspx?EID=20215d48-02e3-4d43-8c36-e53505c3b316 Dans la ...
Cliquez pour lire la suite de l'article par phil
Forum
MCD LYCéMCD LYCé par Wiliam123
Cliquez pour lire la suite par Wiliam123
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|