Python, jeu de memory

Bonjour, je suis en train de plancher sur un jeu de mémory sur python ( pour un partiel :/ ) , donc je suis en train de suivre les instructions, à savoir :

Question 1 . Définissez les variables globales n que vous initialiserez à 6 et la matrice
matriceLettres qui contient n lignes et n colonnes, chacune des cases de la matrice contiendra
la chaîne vide "".
Définissez une fonction remplissage matrice qui va remplir matriceLettres avec les lettres de
A à R. Pour cela, définissez (dans la fonction) une liste lettres qui contiendra toutes les lettres.
Construisez un dictionnaire dicoLettres où les clefs sont les lettres de A à R et la valeur est 2
pour chaque clef. Remplissez toutes les cases de la matrice en tirant à chaque fois aléatoirement
une lettre dans le dictionnaire. N'oubliez pas de mettre à chaque fois à jour le dictionnaire.

donc pour le coup j'ai fais ça :

def matriceLettres():
n=6
matrice=n*[0]
for i in range(len(matrice)):
matrice[i] = n*[0]

from random import*
def remplissage_matrice(matrix):
dicoLettres={}
lettres=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R"]
matrix=matriceLettres()
for i in lettres:
dicoLettres[i]=2
for a in range(6):
for b in range(6):
c=lettres[randrange(17)]
dicoLettres[c]=dicoLettres[c]-1
if dicoLettres[c]>=0:
matrix[a][b]=c
return matrix

mais il semblerait que cela ne fonctionne pas ... Si quelqu'un pouvait m'éclairer assez rapidement, je lui en serais gré. ( Pour info, j'utilise Python2.6 sur conseil de la prof.)

5 réponses

  1. tout d'abord je ne pense pas que ton code fonctionne car:

    - ta fonction decouvert() n'a pas les même arguments (une fois p,n et c et l'autre que n)
    - pourquoi mettre p et c en arguments de decouvert() alors que tu t'en sers pas?
    - n ne dois pas être considéré comme défini dans la fonction fini()

    heu dis moi si je me trompe mais ta fonction decouvert(n,p,c) crée un matrice initialiser à False et que tu modifies quand le joueurs à trouvé des paires et fini() parcours cette matrice pour voir si il reste au moins 1 False sinon Partie finie

    Si j'ai bien compris le problème alors tu ne termineras jamais ton jeu car à chaque fois que tu exécutes fini()tu appelles decouvert() qui crée une nouvelle matrice de jeu et une initialisée à False
    1. Bah en faite j'ai pris p et c parce que je ne voyait pas comment représenter les 2 élements cliqués dans cette fonction, pour ce qui est la fonction fini, je devrais donc mettre comme argument une matrice directement ? J'avoue que pour ce point là je suis complétement à la "ramasse".
    2. Je suis encore en train de plancher deçu et je reste coinçé avec la seconde partie de la question :

      "Lorsque deux cartes
      identiques seront retournées, les deux cases correspondantes de decouvert seront mises à True."

      je ne vois pas comment "réinterpréter" ça en python .
    3. je sais pas trop mais si tu fais quelque chose du genre
      au moment où tu regardes ce qu'à choisi le joueur, tu fais la vérif si c'est une paire ou non:
      - si oui, tu remplaces False par True dans l'autre matrice
      - si non, tu retournes les cases et le jeu continue

      if matrice_avec_chiffres_a_chercher[a1][b1] == _avec_chiffres_a_chercher[a2][b2]:
           matrice_True_False[a][b] = True
           matrice_True_False[a][b] = True
      else:
           renvoi à la fonction de choix des cases
    4. Donc à ton avis, il faudrait que j'écrive une fonction de choix de case ?
    5. ben je sais pas tu pensais faire comment pour que le joueur choisisse les cases à comparer?

      Fais-tu une interface graphique ou en ligne de commande?
      car si c'est la deuxième solution (même si je pense pas que ce soit la plus adaptée) un simple raw_input() avec une entrée du genre A1 B2 où A correspond à [a] et 1 à [b]