Anda di halaman 1dari 15

QADIRY M.

L2 Décembre 2010
NICOLAS C.

JEU DE MEMOIRE EN C

Génie informatique Présentation du 06 Décembre


1 / 15
(U. SERRES) 2010
QADIRY M.
L2 Décembre 2010
NICOLAS C.

I. PRÉSENTATION DU JEU
II. OBJECTIF
III. LE MENU
a) Les niveaux de difficulté
b) Les règles du jeu
c) La fin du jeu.
IV. PROBLÈMES RENCONTRÉS
a) Tableau difficile à gérer
b) Remplir le tableau 1 de valeurs aléatoires et
dupliquées
c) Le joueur peut voir ses tentatives passées
V. AMÉLIORATIONS POSSIBLES
VI. COMMENTAIRES PERSONNELS
VII. SOURCES
VIII. GESTION DU PROJET

Génie informatique Présentation du 06 Décembre


2 / 15
(U. SERRES) 2010
QADIRY M.
L2 Décembre 2010
NICOLAS C.

I. PRÉSENTATION
- Un exemple de jeu de mémoire -

Une table de jeu présente des cartes retournées : faces imagées non visibles.
A chaque fois, le joueur retourne deux cartes.
Si les cartes sont identiques, il les laisse retournées (faces imagées visibles) dans
le cas contraire il en retourne deux autres. Le jeu s’achève lorsque toutes les
cartes du jeu sont retournées.
On peut, par ailleurs, définir des scores en chronométrant le jeu ou en comptant
le nombre de tentatives.

II. OBJECTIF
Faire un jeu de mémoire en langage C qui permet au joueur de choisir le niveau
de difficulté.

Génie informatique Présentation du 06 Décembre


3 / 15
(U. SERRES) 2010
QADIRY M.
L2 Décembre 2010
NICOLAS C.

III. LE MENU

Ce menu comporte :
a) les niveaux de difficulté
b) les règles du jeu
c) la fin du jeu.

Génie informatique Présentation du 06 Décembre


4 / 15
(U. SERRES) 2010
QADIRY M.
L2 Décembre 2010
NICOLAS C.

a) Les niveaux de difficultés

Temps de
Niveau de Dimension
réflexion du
difficulté du tableau
joueur

FACILE

3 secondes

MOYEN

5 secondes

DIFFICIL
E
7 secondes

Génie informatique Présentation du 06 Décembre


5 / 15
(U. SERRES) 2010
QADIRY M.
L2 Décembre 2010
NICOLAS C.

b) Les règles du jeu

Ces règles sont simplement affichées et précisent de quelle façon le joueur doit
choisir une carte puisque l’utilisation de la souris n’est pas sollicitée.

c) Fin du jeu

Le joueur décide de quitter le jeu à sa convenance.

Génie informatique Présentation du 06 Décembre


6 / 15
(U. SERRES) 2010
QADIRY M.
L2 Décembre 2010
NICOLAS C.

IV. PROBLÈMES RENCONTRÉS


Dans un premier temps, il fallait définir un tableau de n cartes (entier pair) de
sorte que la table de jeu représente des valeurs (caractères ou numéros) de façon
aléatoire en nombre n/2 dupliquées. On a choisit de représenter les cartes
cachées par un ‘0’ et les cartes visibles par un numéro pour des raisons de
commodité (déclaration des variables en int).

Notre première démarche :


On a défini un tableau à deux dimensions représentant les cartes à jouer :
TableJeu[][].
Pour représenter les cartes de jeu faces visibles : on attribue à chaque case du
tableau une valeur de façon aléatoire. Pour représenter les cartes de jeu
retournées : on attribue un zéro à toutes les cases de ce même tableau.

Fonctions utilisés : srand() ; time() ; rand() ; boucles for.


Bibliothèques utilisées : stdio.h ; time.h ; stdlib.h.

Carte de coordonnées :
Ligne  :2
Colonne  : 4

1 2 3 4 5 6
1

Génie informatique Présentation du 06 Décembre


7 / 15
(U. SERRES) 2010
QADIRY M.
L2 Décembre 2010
NICOLAS C.

Problèmes rencontrés :
a) On a du mal à gérer le tableau sur tout le programme.
b) On a du mal à entrer des valeurs de façons dupliquées et fonction de la
dimension du tableau.
c) Le joueur pouvait voir ces tentatives passées.

Génie informatique Présentation du 06 Décembre


8 / 15
(U. SERRES) 2010
QADIRY M.
L2 Décembre 2010
NICOLAS C.

a) Tableau difficile à gérer

L’utilisation d’un seul tableau ne nous a pas permis d’obtenir le résultat


escompté : duplication des valeurs difficile à réaliser et difficulté de
différenciation entre affectation de valeurs aléatoires et affichages de ces mêmes
valeurs.

L’écran ci-dessous permet de voir les erreurs commises en utilisant un seul


tableau à deux dimensions.

Tableau de valeurs après


cartes retournées

Génie informatique Présentation du 06 Décembre


9 / 15
(U. SERRES) 2010
QADIRY M.
L2 Décembre 2010
NICOLAS C.

Solution adoptée : utilisation de deux tableaux à deux dimensions chacun

10 32 27 7
4 10 1 5
27 1 4 8
8 5 32 7
Tableau 1 : tableau de valeurs
Nom sous code blocks : TableJeu[ ][ ]

On rentre de façon aléatoires (n²/2) paires de valeurs dans le tableau où n


représente la dimension du tableau carré. Ce sont ces paires que le joueur devra
découvrir.

0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0

Tableau 2 : tableau de zéros


Nom sous code blocks : affichage[ ][ ]

Tableau rempli de ‘0’ (cartes retournées). Ce tableau va permettre de cacher les


valeurs non découvertes par le joueur.

Génie informatique Présentation du 06 Décembre


10 / 15
(U. SERRES) 2010
QADIRY M.
L2 Décembre 2010
NICOLAS C.

Etape 1 : Le joueur ne voit que le tableau de zéros

0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
Tableau utilisé : tableau 2

Etape 2 : le joueur découvre les cartes en entrant les coordonnées (ex : ligne 3
colonne 4)

col
ligne
1 2 3 4
1 0 0 0 0
2 0 0 0 0
3 0 0 0 8
4 0 0 0 0
Tableaux utilisés : tableau 1 et 2.
La valeur TableJeu[3][4] est affichée pour la ligne i=3 et j=4 et pour toutes les
autres valeurs de i et j on affiche les ‘0’ du tableau 2.

Génie informatique Présentation du 06 Décembre


11 / 15
(U. SERRES) 2010
QADIRY M.
L2 Décembre 2010
NICOLAS C.

Etape 3 : opération répétée jusqu’à obtenir

col
ligne
1 2 3 4
1 10 32 27 7
2 4 10 1 5
3 27 1 4 8
4 8 5 32 7
Tableaux utilisés : tableau 1 et 2.
Le tableau 1 n’a plus de zéro donc la partie se termine.

Génie informatique Présentation du 06 Décembre


12 / 15
(U. SERRES) 2010
QADIRY M.
L2 Décembre 2010
NICOLAS C.

b) Remplir le tableau 1 de valeurs aléatoires et dupliquées

Première proposition : diviser le tableau en deux et faire les boucles


correspondantes pour dupliquer

10 32 27 7
4 8 1 5
27 1 4 10
8 5 32 7
Défaut : la stratégie est vite reconnue par le joueur

Deuxième proposition : utilisation du modulo

Extrait du code :

Resultat = Variable % 3 ;

Les valeurs de résultat auraient été successivement 1, 2, 0, 1, 2 dans un boucle


for avec le résultat déclaré comme entier et initialisé à 0.

Défaut : la valeur 0 doit être cachée.

Solution adoptée : 2 boucles for imbriquées l’une dans l’autre

10 32 27 32
4 10 1 27
5 1 4 8
8 5 7 7

Génie informatique Présentation du 06 Décembre


13 / 15
(U. SERRES) 2010
QADIRY M.
L2 Décembre 2010
NICOLAS C.

c) Le joueur peut voir ses tentatives passées

Le joueur a le visu sur


le tableau précédent

Solution : utilisation des commandes system(), sleep() et clear()

On laisse au joueur le temps de regarder le tableau puis on efface l’écran.

Génie informatique Présentation du 06 Décembre


14 / 15
(U. SERRES) 2010
QADIRY M.
L2 Décembre 2010
NICOLAS C.

V. LES AMÉLIORATIONS POSSIBLES DU


JEU
A. Des animations pour rendre le jeu plus ludique
B. Représenter les cartes par des images et non des numéros
C. Permettre des jeu sur des tableaux non carrés
D. Permettre un mode multi joueur en affichant à la fin de la partie les
scores des différents joueurs.

VI. COMMENTAIRES PERSONNELS


C’est difficile de jongler entre les systèmes Linux et Windows : les deux
systèmes n’utilisant pas CodeBlocks de la même façon.
Nos connaissances ne nous permettent pas de faire un programme avec une
interface graphique avancé donc le jeu reste basique et on reste sur sa faim en
tant que joueur.

VII. SOURCES
« Le langage C. »
Cours du semestre 3 de L2.

VIII. GESTION DU PROJET


Un réseau de PERT ou de GANTT n’était pas les outils les plus indispensables
pour ce projet !
En revanche, nous avons sérieusement manqué de temps.
Nous avons tous les deux travaillé sur le code puis la présentation et enfin le
rapport.
En ce qui concerne le code, nous avions des idées différentes mais nous nous
sommes mis d’accord sur les solutions les plus efficaces pour la bonne mise en
œuvre du programme.
Par exemple, pour le remplissage des valeurs de façon aléatoire du tableau l’un
pensait que c’était la position qui devait être aléatoire et l’autre la valeur …

Génie informatique Présentation du 06 Décembre


15 / 15
(U. SERRES) 2010

Anda mungkin juga menyukai