Gestion de la grille
Le but du projet est de réaliser une version simplifiée du célèbre jeu “Candy Crush” (pour plus d’informations voir ici).
Les règles du jeu sont les suivantes :
- Contrairement aux règles du jeu originel, on va essayer de faire des combinaisons de nombres et non de sucreries;
- Un joueur à
KMaxTimescoups pour réaliser le meilleur score; - A chaque tour, il choisit les corrodées d’un numéro de la grille et un déplacement (horizontal ou vertical). Les touches valides de déplacement sont ‘A’ (gauche),
‘Z’ (haut), ‘E’ (droit), ‘S’ (bas). - S’il réussit à faire une combinaison d’au moins 3 chiffres identiques :
- ceux-ci sont supprimés;
- on fait monter les chiffres du dessous;
- Les nouvelles cases vides ne sont plus utilisables;
- le score est cumulé avec le score courant. Le score est la somme du nombre de cases supprimées (par exemple, si on fait une combinaison de 3 chiffres ‘2’ à la suite, le score est augmenté de 6).
- Le but est donc de vider la grille le plus rapidement possible.
La grille est représentée par une matrice de taille NxN.
En conséquence, nous pouvons définir les alias suivants :
typedef vector <unsigned> line; // un type représentant une ligne de la grille
typedef vector <line> mat; // un type représentant la grille
struct maPosition {
unsigned abs;
unsigned ord
}; // une position dans la girlle
Initialisation de la grille
Ecrire la fonction initGrid () de profil :
void initGrid (mat & grid, const size_t & matSize)
Cette fonction a pour but d’initialiser toutes les cases de la grille des nombres tirés au hasard entre 1 et une constante KNbCandies à définir.
Affichage de la grille
Travail à effectuer : écrivez le corps de la fonction displayGrid () de profil :
void displayGrid (const mat & grid)
Cette fonction doit :
- faire appel à la fonction
clearScreen (); - remettre la couleur des caractères à sa valeur par défaut;
- afficher case / case le contenu de la case courante. Si la case n’est pas occupé par un nombre compris entre 1 et
KNbCandies, on affiche une case vide, sinon, on affiche le nombre courant.