Jeu de Memory

Description du projet

Le jeu de Memory est composé de 10 paires de cartes identiques. Elles sont mélangées et retournées faces cachées sur un plateau de jeu.

On peut retourner deux cartes de son choix pour voir leurs faces. Si les deux cartes sont identiques elles sont enlevées du plateau, sinon on les retourne de nouveau faces cachées. On recommence ainsi jusqu'à ce qu'il n'y ait plus de carte sur le plateau.

On veut réaliser ce jeu en javascript. Le plateau aura la forme suivante :

Pour retourner une carte on cliquera tout simplement dessus.

Il faudra prévoir la gestion de fin de partie et offrir la possibilité au joueur de recommencer.

Proposition de solution

Vue du jeu

L'interface utilisateur du jeu est écrite en HTML :

<table id="tapis">
<tr>
	<td><img src="fondcarte.png"/></td>
	...
	<td><img src="fondcarte.png"/></td>
</tr>

	...

</table>

Il s'agit d'un élément <table> constitué de 4 lignes et 5 colonnes. Chaque cellule de la table contient un élément <img> affichant par défaut fondcarte.png qui est la représentation d'une carte de dos. Les motifs des cartes retournées sont dans les fichiers carte1.png, carte2.png, etc.

Toutes les images utilisées ont été téléchargées sur le site openclipart.

Représentation interne du jeu

Les 20 cartes du jeu sont numérotées comme sur le schéma ci-dessous :

Chacune de ces cartes possède un motif et un état. Il y a 10 motifs numérotés de 1 à 10 qui figurent chacun deux fois et pour les états il a été décidé d'utiliser le codage suivant :

Ces données sont conservées dans les tableaux motifsCartes et etatsCartes :

var motifsCartes=[1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10];

//0:face cachée;1:face visible;-1 enlevée
var etatsCartes=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];

Par exemple, pour connaître les caractéristiques de la carte numérotée 5 il faut regarder le contenu des variables motifsCartes[5] et etatsCartes[5].

Par défaut les numéros de motifs se suivent et les états de toutes les cartes ont la valeur 0 (cartes faces cachées au début du jeu).

Enfin on utilise deux variables supplémentaires :

var cartesRetournees=[];

var nbPairesTrouvees=0;

cartesRetournees sert à conserver les numéros des cartes qui sont faces visibles à un moment donné du jeu et nbPairesTrouvees compte le nombre de paires de cartes identiques déjà découvertes par le joueur.

Code source complet du jeu de Memory