Tableau représentant les caractéristiques de chaque civilisation
Présentation du Projet
Ce projet, réalisé dans le cadre du module d'Algorithmique de premier semestre de première année de DUT, consistait à programmer un jeu dont le mode de jeu se basait sur celui de la série de jeux vidéo Civilisation.
Par groupe de quatre, nous avions à rendre deux versions de ce jeu :
- une version basique,
- une version améliorée.
Dans la version basique du jeu, le joueur ne pourra pas choisir de civilisation, il n'aura qu'une ville et deux unités d'armée disponibles. Il pourra se battre contre des petits et grands camps barbares mais cela ne lui rapporte rien. Les bâtiments qu'il pourra améliorer sont la caserne, la mine, la carrière et la ferme.
La version améliorée correspond à la version basique du jeu avec de nombreuses améliorations :
- La réalisation d'un écran titre en accord avec le thème choisi qui était celui d'une lutte entre les animaux "moches", incarnés par le joueur, contre les animaux "beaux /mignons".
- Dès le début du jeu, un mode deux joueurs est proposé, de manière à ce que les deux joueurs peuvent jouer au jeu sur le même ordinateur, avec chacun sa partie et sa colonie.
- À la suite de l'écran titre, le joueur peut choisir entre cinq civilisations différentes auxquelles correspondent toutes des bonus, des unités de combat, des ennemis, des bâtiments, une capitale et une colonie propre.
- Nous avons intégré une nouvelle unité de combat : la cavalerie accessible lorsque la caserne est de niveau 2 minimum.
- Nous avons ajouté deux bâtiments : l'étable, qui augmente la production de nourriture d'une ville, ainsi que le marché, permettant de produire de l'or nécessaire pour acheter des unités de combat.
- Le joueur pourra construire un colon et fonder une deuxième ville, gérable comme la capitale.
- À chaque début de partie, chaque ville se verra attribuer une ressource bonus aléatoirement permettant la construction de versions améliorées des bâtiments.
Les difficultés rencontrées et surmontées
Les principales difficultés ont été lors de l'élaboration de la version améliorée du jeu. En effet, nous avions tout d'abord réalisé les améliorations faciles (l'écran de titre, mise en place de la cavalerie et de l'étable) et intermédiaires (mise en place du marché, création des ressources bonus et les cinq civilisations différentes) avant de s'attaquer à la création de la colonie (amélioration avancée) et à l'élaboration de mode deux joueurs (amélioration experte).
Le problème majeur a donc été la factorisation du code. En effet, nous devions envisager deux joueurs, qui avait donc le choix entre cinq civilisations. Comme vous avez pu le voir dans le tableau ci-dessus, chaque civilisation a des unités de combats et deux villes, une capitale et une colonie avec chacune 6 bâtiments, qui lui sont propres. De ce fait, nous devions trouver un moyen afin d'envisager et de permettre cette multiplicité. Factoriser ce code en unité a été long et compliquer puisqu'il fallait envisager toutes les possibilités mais nous avons réussi, après plusieurs heures.
Une autre difficulté rencontrée mais surmontée, a été la gestion des combats et des unités. En effet, il fallait prendre en compte tous les facteurs relatifs à ces deux fonctionnalités : vérifier que l'utilisateur a une mine, assez de fer et d'or pour recruter un canon, qu'il a une caserne de niveau 2 minimum et assez d'or pour recruter un cavalier, si le joueur attaque un grand camp ou un petit camp ennemi. Il fallait gérer l'ordre de combat des ennemis et du joueur (les cavaliers ne peuvent être attaqués que lorsqu'il n'y a plus de canons ou de soldats) ainsi que le nombre de chaque unité, mettre en place des formules de calcul comprenant les points de vie de chaque unité et leurs points d'attaque.
Enfin, la gestion de l'affichage des erreurs a été assez complexe. En effet, il fallait penser à effacer les erreurs à chaque action de l'utilisateur et ne les afficher que lorsqu'il y en avait une.
Rapport du Projet
Ce que le projet m'a apporté...
Ce projet m'a permis d'approfondir mes connaissances concernant le langage Pascal : notamment sur la gestion des Unités qui ont permis de structurer notre code. J'ai également été la chef de ce projet et j'ai donc pu aborder la notion de gestion de projet en attribuant les tâches et gérant les échéances et l'équipe.