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.)
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
-
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-
-
-
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 -
-
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]
-