Jeux memory en python

you360 Messages postés 11 Date d'inscription mercredi 30 juillet 2008 Statut Membre Dernière intervention 17 avril 2014 - Modifié par you360 le 20/03/2014 à 15:43
lespinx Messages postés 106 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 23 novembre 2022 - 18 avril 2014 à 21:29
Bonjour,
Nous sommes en Terminal S spécialité ISN et nous devons finir notre projet de jeux memory en python pour fin avril.

Donc nous avons pas mal progréssé dans notre programme cependant nous ne savons pas comment faire pour detecter les couleurs cliqués par l'utilisateur, pouvez vous nous aidez.

Voici un aperçu de notre programme :

from tkinter import*
from random import*
import random
from math import*


def carte():
aleax=50
aleay=100
couleur=["red","red","blue","blue","yellow","yellow","green","green","red","red","blue","blue","yellow","yellow","green","green","red","red","blue","blue","yellow","yellow","green","green","red","red","blue","blue","yellow","yellow","green","green","red","red","blue","blue","yellow","yellow","green","green","red","red","blue","blue","yellow","yellow","green","green","red","red","blue","blue","yellow","yellow","green","green","red","red","blue","blue","yellow","yellow","green","green",]
random.shuffle(couleur)
total, r=0, 0
#print(couleur)

while couleur!=[]:
sel=couleur[0]
"création du terrain de base"
c=0
ligne=0
while ligne<8:
while total<8:
sel=couleur[0]
can.create_rectangle(total*35+20, 10+ligne*50, total*35+40, 50+ligne*50, fill=sel)#à chaque fin de ligne on rajoute +1 pour aller à la ligne suivante jusqu'à atteidnre 8 lignes
del(couleur[0])
total=total+1
ligne=ligne+1
total=0



fen=Tk()
can=Canvas(fen, width=300, height=410, bg='ivory')
can.grid(row=0)
bstop=Button(fen, text='Fin du jeu', command=fen.quit)

carte()
#print(carte)


fen.mainloop()
A voir également:

7 réponses

lespinx Messages postés 106 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 23 novembre 2022 77
21 mars 2014 à 00:14
Bonsoir,

Il y a deux choses à faire:

1- Détecter ou a eu lieu le clic de souris (Voir Event et Binding)
2- Mémoriser la couleur au moment de chaque create_rectangle

Ce n'est pas très compliqué:
1- Activer la détection d'un évenement
#Active la détection de l'évenement <clic gauche> dans les rectangles du canvas
can.bind("<Button-1>", clic_gauche)


A mettre ligne 48 après la création du canvas (clic_gauche étant la procédure qui traitera l'évènement )

2- Mémoriser la couleur
Lors de la création de chaque rectangle, il est possible de lui adjoindre un tag ou étiquette avec un libellé libre, en l'occurrence on mémorisera la couleur.
can.create_rectangle(total*35+20, 10+ligne*50, total*35+40, 50+ligne*50, fill=sel,tags = sel)

3- Ajouter la procédure -clic_gauche-
def clic_gauche(event):
#Pour infos : coordonnées du clic
print ("event.x =", event.x, "event.y =",event.y)

#Lecture du tag courant (a l'endroit du clic)
couleur = can.gettags("current")

#Si on a pas cliqué dans un rectangle -couleur- est vide
if couleur:
print(couleur[0])
else:
print("Mauvais clic")

--
1
Rejoignez-nous