Vous êtes ingénieurs en devenir et, pour développer vos compétences en programmation orientée objet et en bonnes pratiques de développement, vous êtes invités à créer une version simplifiée du jeu 2048. Ce jeu devra s'exécuter dans un terminal et permettre une expérience utilisateur fluide et agréable.
Objectifs pédagogiques :
- Approfondir vos connaissances en programmation orientée objet avec le langage C++.
- Mettre en pratique les concepts de réflexion préalable, de conception de classes, de versionning de code avec Git et de refactoring de code.
- Travailler en équipe pour favoriser la collaboration et l'échange d'idées.
Travail en équipe :
- Formez des groupes de 4 à 6 étudiants pour collaborer sur le projet. La réflexion préalable doit être réalisée en groupe, en identifiant les différentes étapes et en proposant un plan de développement collaboratif.
-
Analyse du problème :
- Prenez le temps de réfléchir aux éléments constitutifs du jeu (plateau de jeu, mécanismes de fusion des tuiles, génération aléatoire de nouvelles tuiles, détection de victoire ou de défaite).
- Identifiez les classes et les méthodes nécessaires pour structurer le code de manière modulaire et maintenable. Pensez à une modélisation efficace en utilisant les concepts de la POO (par exemple, des classes
Grille,Tuile, etJeu). - Livrables à l'issue de cette phase : Un diagramme simplifié des classes que vous allez implémenter, une liste des méthodes à implémenter pour chaque classe, avec leurs descriptions, un plan de travail clair que vous allez suivre pour l'implémentation (ce plan servira également de base pour le versioning Git).
-
Mise en œuvre :
- Implémentez le jeu en respectant les étapes de développement suivantes :
- Initialisation du jeu : Le jeu doit commencer avec une grille 4x4, contenant deux tuiles (2 ou 4) placées aléatoirement.
- Déplacement des tuiles : Implémentez les mouvements (haut, bas, gauche, droite) avec la logique de fusion des tuiles de même valeur.
- Ajout de nouvelles tuiles : Après chaque mouvement, une nouvelle tuile (valeur 2 ou 4) doit apparaître dans une case libre.
- Conditions de fin de jeu : Le jeu doit pouvoir détecter une victoire (une tuile de 2048 atteinte) et une défaite (aucun mouvement possible).
- Implémentez le jeu en respectant les étapes de développement suivantes :
-
Fonctionnalités supplémentaires (facultatif) :
- Ajoutez des fonctionnalités pour afficher le score actuel et enregistrer le score maximum atteint.
- Implémentez une option pour recommencer une partie ou quitter le jeu.
- Utilisez Git pour versionner votre code. Chaque membre du groupe doit contribuer et réaliser des commits significatifs avec des messages explicites.