Bonjour à tous je suis étudiant et j'apprends depuis janvier le langage python.
Je dois actuellement réaliser un jeu de mémory ou chaque carte est une lettre. J'ai presque terminé, mais j'ai des problèmes avec la dernière fonction.
Voici l'énoncé:
Créez une fonction action(ligne,colonne)pour retourner une carte. On distinguera s'il s'agit de la première ou deuxième carte du tour. Lorsque l'on retourne la deuxième carte, les deux cartes restent à découvert si elles sont identiques.
Le sujet complet est disponible ici.
Après plusieurs essais, voila ma meilleure tentative (apparemment l'indentation ne marche pas sa ne va pas faciliter le travail

):
carte=0
lettre1=""
def action(ligne,colonne):
global carte
global lettre1
if carte==0: #Autrement dit je retourne la première carte
for lig in range (nombreCases):
for col in range (nombreCases):
if decouvert[lig][col]==False:
canvas.delete (y0 +c*(lig+.5),x0+c*(col+.5))
canvas.delete (y0 +c*(lig+.5),x0+c*(col+.5)) #Je cache les deux cartes précedemment tirées si elles ne sont pas identiques
canvas.create_text (y0 +c*(ligne+.5),x0+c*(colonne+.5),text=matriceLettres[ligne][colonne]) #J'affiche la carte
carte=1
lettre1=matriceLettres[ligne][colonne] #je mémorise la valeur de la carte
else: #je tire la deuxième carte
carte=0
canvas.create_text (y0 +c*(ligne+.5),x0+c*(colonne+.5),text=matriceLettres[ligne][colonne])
lettre2=matriceLettres[ligne][colonne]
if lettre1==lettre2: #Si les deux cartes sont les mêmes
decouvert[ligne][colonne]=True #sa c'étais dans la question 2. Cela indique que la carte est trouvée et qu'il faut la laisser affichée.
if fini():
termine.config(text="La partie est finie") #Sa sa indique que si toutes les cartes on la valeur True, la partie est finie
Mon problème c'est qu'avec cette fonction, seule la deuxième carte prends la valeur True, je ne voit pas comment je peux le faire pour la première. C'est un peu la même chose au début:
for lig in range (nombreCases):
for col in range (nombreCases):
if decouvert[lig][col]==False:
canvas.delete (y0 +c*(lig+.5),x0+c*(col+.5))
canvas.delete (y0 +c*(lig+.5),x0+c*(col+.5))
Il faudrait que je mémorise le lig et le col des 2 cartes précédentes.
Je ne sais pas si vous allez réussir à me suivre avec ce seul bout de code. Je peux si vous le souhaitez écrire tout mon programme.
En esperant avoir été clair et avoir des réponses, merci d'avance.