Le jeu
Placement d’un jeton au bon endroit
Ecrire la fonction makeAMove () de profil :
void makeAMove (mat & grid, const maPosition & pos, const char & direction)
Cette fonction permute, dans la grille, le nombre situé initialement à la position pos (aux coordonnées pos.abs, pos.ord)
avec la case de destination selon
la valeur du caractère direction.
Detection d’une suite de nombres identiques sur la même colonne
Ecrire le corps de la fonction atLeastThreeInAColumn () de profil :
bool atLeastThreeInAColumn (const mat & grid, maPosition & pos, unsigned & howMany);
Cette fonction parcourt la grille afin de trouver une suite d’au moins 3 nombres identiques sur la même colonne. Elle renvoie vrai si une telle suite a été trouvée, faux sinon.
Si elle a renvoyée vrai, on a une suite de howMany tous égaux à partir des coordonnées pos.
Detection d’une suite de nombres identiques sur la même ligne
Ecrire le corps de la fonction atLeastThreeInARow () de profil :
bool atLeastThreeInARow (const mat & grid, maPosition & pos, unsigned & howMany);
Cette fonction parcours la grille afin de trouver une suite d’au moins 3 nombre identiques sur la même ligne. Elle renvoie vrai si une telle suite a été trouvée, faux sinon.
Si elle a renvoyée vrai, on a une suite de howMany tous égaux à partir des coordonnées pos.
Suppression dans une colonne
Ecrire le corps de la fonction removalInColumn () de profil :
void removalInColumn (mat & grid, const maPosition & pos, unsigned howMany);
Cette fonction supprime les howMany nombres identiques de la colonne pos.abs à partir de la ligne pos.ord, remonte ceux qui sont en dessous et complète la ligne avec la constante KImpossible.
Suppression dans une ligne
Ecrire le corps de la fonction removalInRow () de profil :
void removalInRow (mat & grid, const maPosition & pos, unsigned howMany);
Cette fonction supprime les howMany nombres identiques de la ligne pos.ord à partir de la colonne pos.abs, remonte ceux qui sont en dessous et complète la ligne avec la constante KImpossible. Pour écrire cette fonction, on doit s’appuyer sur la fonction removalInColumn ().
L’algorithme principal
Le but de cette partie est d’écrire la fonction main () .
Cette fonction :
- initialise la grille du jeu ainsi que le nombre de coup maximal;
- entre dans une boucle tant qu’on n’a pas atteint le nombre maximal de coups :
- affiche la grille;
- affiche un petit menu donnant les consignes de déplacement;
- saisit les coordonnées du nombre à deplacer ainsi que le déplacement souhaité;
- fait les tests de suppression en ligne / colonne;
- fait les suppression si besoin;
- met à jour le score si besoin;
- affiche le score final.