Vous êtes sur la page 1sur 2

LIF 1 TD 10 : Le Dmineur

Objectifs :

rviser toutes les notions abordes jusqu prsent dans les travaux dirigs et travaux pratiques. Au travers dun exemple de conception, analyser un problme et concevoir sa solution pas pas.

Il sagit dans cette sance de TD ainsi que dans la sance de TP qui suivra (TP 8) de raliser un jeu de dmineur. Dans le TD, les dclarations de types et les sous-programmes demands devront tre crits en langage C/C++.

Principe du jeu : L' objectif est de trouver les mines qui sont caches alatoirement par l'ordinateur dans les cases du tableau. Si la case choisie contient une mine, la partie est perdue. Si la case choisie ne contient pas de mine alors apparatra un chiffre indiquant le nombre de mines qui se trouvent dans les 8 cases qui touchent directement la case slectionne. Par exemple si le numro dcouvert est un 2, cela indique qu' il y a 2 mines caches parmi les 8 cases qui touchent directement celle choisie. Attention : seul un affichage en mode texte sera demand. Construction du jeu : 1- Structures de donnes : a. Dfinir 3 constantes Taille_Grille_X, Taille_Grille_Y et Mines permettant de fixer les paramtres gnraux du jeu. Dans lexemple prcdent, on aura comme valeurs respectives (9, 9 et 10). b. Dfinir une structure case_grille comportant deux informations : un entier reprsentant le contenu de cette case (-1 si mine, 0..8 pour le nombre de mines dans les cases adjacentes) un boolen permettant de savoir si cette case a dj t choisie par lutilisateur. Cette valeur indiquera si la case doit tre dvoile lutilisateur lors de laffichage. c. Dfinir la grille de jeu comme tant un tableau 2D de case_grille. Pour des besoins ultrieurs, nous allons volontairement surdimensionner la grille de jeu en ajoutant une ligne supplmentaire en haut et en bas et une colonne supplmentaire droite et gauche. 2- Initialisation de la grille de jeu : crire un sous-programme permettant dinitialiser la grille de jeu. Pour chacune des cases de la grille du jeu, la valeur numrique sera initialise 0 et le boolen dcouvert la valeur "false".

3- Positionnement alatoire des bombes sur la grille de jeu : crire un sous programme permettant de positionner alatoirement Mines bombes sur la grille de jeu. Attention, avant de placer une mine, on vrifiera que la case est "libre". 4- Remplissage complet de la grille de jeu . Dans ce sous programme, nous allons pour chacune des cases (hors mine) compter le nombre de mines dans toutes les cases adjacentes. Pour viter une gestion trop complexe des cases du pourtour, nous avons, dans la dclaration, pris soin de rajouter des cellules supplmentaires. crire le sous programme permettant de remplir la grille avec ces valeurs. Exemple pour le calcul de la case i, j : j-1 i-1 i i+1 j 2 j+1

5- Affichage de la grille de jeu. La grille de jeu est stocke en interne sous forme dun tableau de structures case_grille contenant une valeur numrique (nombre de mines ou -1) et un boolen indiquant si la case doit tre affiche ou non. Pour rendre la grille plus lisible pour lutilisateur, les cases non dvoiles seront affiches avec le symbole -, les cases contenant une mine (-1) avec le caractre M et les autres cases avec la valeur numrique correspondant au nombre de mines dans les cases adjacentes. crire un sous programme permettant dafficher le contenu de la grille de jeu.: Exemple pour une grille de taille 5*5 avec 4 mines. 0/f 0/f 0/f 0/f 0/f 0/f 0/f 0/f 1/f 1/f 2/f -1/f 1/f 0/f 0/f 1/f -1/f 3/t 2/f 2/t 0/f 0/f 1/t 1/f 2/t -1/f 1/t 0/f 0/f 1/f 1/f 1/t 1/t 1/f 0/f 0/f -1/t 1/f 0/t 0/t 0/t 0/f 0/f 0/f 0/f 0/f 0/f 0/f 0/f 3 2 1 2 1 1 1 0 0 0

Grille stocke Jeu

Grille affiche

1- Choix dune case : crire un sous programme qui demande lutilisateur les coordonnes de la case sonder. 2- Jeu : crire le sous programme permettant de recommencer le choix dune case jusqu la fin de la partie. 3- Fin de partie : la partie sarrte quand toutes les cases ont t dcouvertes sauf celles contenant des mines (partie gagne) ou bien lorsquune mine est touche (partie perdue). crire le programme principal permettant de jouer au dmineur.

Vous aimerez peut-être aussi