Projet de C++ M2 Modélisation Aléatoire C est la guerre! Les Bleus et les Rouges se disputent le même territoire. Chacun de ces deux belligérants est controlé par l un des deux joueurs. Les Rouges sont représentés par des pions rouges et les Bleus sont matérialisés par des pions bleus. Tous ces pions évoluent sur un plateau carré de 20 cases de coté. Vous allez devoir implémenter de quoi faire une partie. Voici les régles du jeu : Type de pions Dans chacun des deux camps il y a les mêmes types de pion, quatre en tout. A savoir : Des châteaux qui produisent des seigneurs, des guerriers, ou des paysans contre des ressources en or. Les châteaux ne se déplacent pas et produisent des ressources. Des seigneurs qui se déplacent, attaquent ou se construisent un château et rentre dedans pour ne plus en sortir. (le mot juste est que les seigneurs se tranforme en château) Des guerriers qui se déplacent et attaquent. Des paysans qui se déplacent ou produisent des ressources. Les pions mobiles peuvent être tués par d autres pions, les châteaux eux sont pris et changent de couleur sans changer de case. Déroulement d une partie Au départ les deux joueurs possèdent chacun un château et un paysan. Un des joueurs commence à jouer. Il donne des ordres a ses pion. Par exemple : transforme toi en château, déplace toi vers cette case, forme un pion, amasse des ressources etc. Puis ensuite il confirme la fin de ses ordres, les actions de ses pions sont exécutés puis c est à l autre joueur de donner ses ordres. Une fois que le deuxième joueur a donné ses ordres, il confirme la fin de ses ordres, ses ordres sont exécutés et alors le premier joueur reprend la main. On continue comme ça jusqu à la fin du jeu. 1
Le jeu prend fin lorqu un des joueurs perd tous ses châteaux. Des précisions sur les règles du jeux sont données après la description du projet. Projet Le but du projet d implémenter de quoi faire une partie entre deux joueurs. Le projet doit être écrit en C++. Il y aura une soutenance qui aura lieu vers la fin du module. Vous avez la possibilité de faire ce projet par groupe deux ou tout seul, cependant gardez à l esprit que deux personnes ayant participées à un même projet n aura pas forcément la même note de projet. Ce phénomène se décidera lors de la soutenance. Vous pouvez utiliser la bibliothèque graphique de Marne-la-Vallée pour afficher du texte, dessiner, utiliser la souris et le clavier et même jouer des sons ou des musiques. C est une bibliothèque conçu pour faire ses premières dents en programmation. Elle utilise la bibliothéque SDL qui est une bibliothèque plus sérieuse (et plus connue). Si vous le souhaitez, vous pouvez utiliser directement la bibliothèque SDL. La bibiliothèque se trouve à cette adresse : http://www-igm.univ-mlv.fr/ boussica/mlv/api/french/html/index.html Votre projet doit pouvoir s exécuter sur les ordinateurs de la salle 2005. C est dans cette salle qu aura lieu la soutenance. Vous devez envoyer les codes sources de votre projet à l adresse sven.defelice@univ-mlv.fr Envoyez une archive zip, tar ou rar. Vous devez y joindre la commande (ou le makefile) qui permer de compiler ces sources dans un fichier que vous appelerez commande ou makefile. Vous aurez le maximum des points si vous arrivez à implémenter tout les aspects du jeu qui sont décrits par ses règles. Voici différents méchanismes qui seront spécialement examinés dans votre programme et rapporteront des points s ils sont bien gérés. Afficher le plateau et les pions et gérer les tours de jeu. Gérer les déplacements des pions et permettre à plusieurs pions d être sur une même case. Gérer la sélection des pions, les ordres possibles (sans forcément les exécuter) et l annulation de ces commandes. Gérer ce que les pions peuvent ou ne peuvent pas faire en fonction des circonstances. 2
Gérer la constructions de pions et les ressources. Gérer les combats. Permettre de sauvegarder et charger une partie. Si un aspect du jeu n est pas précisé par les règles alors vous êtes libre de le concevoir comme vous le voulez. Si par contre des règles vous semble contradictoires ou que vous n êtes pas certain d avoir bien compris une règle envoyez-moi un mail à l adresse : sven.defelice@univ-mlv.fr Aspect du jeu Ressource. Chaque joueur possède une quantité d or qui évolue au cours du jeu. Lorsqu un château reçoit un ordre de construction alors une quantité d or est retiré au joueur possesseur du château. Un ordre de construction ne peut être accepté que si le joueur possède une quantité d or suffisante. Chaque château fournit au joueur qui le possède une certaine quantité d or à chaque tour. Un paysan qui travaille procure aussi une quantité d or à chaque tour. Lorsqu un seigneur se transforme en château il consomme une certaine quantité d or. Déplacement. Lorsqu on demande à un pion mobile de se déplacer vers une case il se déplace en s approchant de cette case tour par tour. Un seigneur est plus rapide et peut se déplacer de une à deux cases par tour. Lors d un tour un paysan et un soldat peuvent se déplacer d une case au plus dans les huits directions (N,S,E,O,SO,SE,NE,NO). Le chemin emprunté pour aller d une case à une autre n est pas imposé. On peut fort bien imaginer qu un pion à qui on a donné un ordre de déplacement lors d un tour soit solicité pour faire une autre action, dans ce cas le pion arrête son déplacement pour commencer une nouvelle action. Combat. Chaque pion possède un nombre entier de point de vie. Lorsque deux pions ennemis se trouvent sur une même case et que l un de ces pion est un combattant alors il y a un combat. Les pions combattants sont le seigneur et le guerrier. Le combat se déroule de la sorte : 3
Le plus fort de tous les combattants attaque toujours en premier le pion ennemis qui possède le plus de point de vie. Ensuite c est le tour du second combattant le plus fort etc. Lorsqu un pion ennemis ne possède plus de point de vie alors si c est un pion mobile alors il disparait du jeu, si c est un château, il change de camp. Si un pion meurt pendant une attaque et qu il reste d autre pion du même camp sur la case le prochain attaquant attaque le pion restant qui possède le plus de point de vie. Un pion ne peut pas lors d un tour se déplacer puis attaquer. Des pions engagés dans un combat ne peuvent pas se déplacer. Un paysan engagé dans un combat ne peut donc rien faire tant que le combat n est pas terminé. Un château qui se trouve sur une case où il y a un combat peut tout de même former des pions. Précisions Un pion ne peut faire au plus q une seule action lors d un tour. Cette action peut être : se déplacer, attaquer, ne rien faire, travailler pour accumuler des ressources, passer du temps à construire un château, passer du temps à former un pion. Le château fournit des ressources à son possesseur à chaque tour, ce n est pas considéré comme une action. Lors d un tour des pions peuvent être créés, d autres peuvent se déplacer d une case ou de deux cases et d autres peuvent accumuler des ressources ou attaquer. Dans tous les cas, lorsqu un pion attaquant traverse une case qui possède un ennemis il est obligé de combattre jusqu à sa mort ou jusqu à la mort de tous ses ennemis. De même si un pion est sur une case et qu au tour précédent un ennemis arrive sur sa case alors ce pion ne pourra se déplacer qu à la mort de tous les ennemis sur sa case (ou de sa propre mort). Un pion qui est attaqué dans ce dernier cas possède donc l avantage car c est lui qui attaque en premier. Un pion a évidemment la possiblité de ne rien faire pendant un tour il suffit d annuler un ordre précédent ou de pas lui donner d ordre. De même une construction ou une formation en cours peut être annulée et la somme d or utilisé restituée. Cependant le temps (le nombre de tours) utilisé sera perdu. Lorsqu une action, commencé lors d un tour précédent, est annulée par un ordre du joueur le joueur peut lui fournir une nouvelle action à faire. Cet action sera exécutée (ou commencera à être exécutée) juste après que le joueur ai confirmé la fin de son tour. Il ne peut y avoir sur une même cases deux châteaux ou deux paysans qui travaille ou un chateau et un paysan qui travaille. Caracteristique des pions : Château Point de vie : 50 4
Attaque : aucune Coût de construction du château : 16 or Ressource par tour : 3 Temps de construction du château : 6 tours Déplacement : aucun Un château peut former des paysans, des guerriers et des seigneurs. Un château ne peut former qu un pion à la fois. Le temps de construction de chacun de ces pions est donné plus bas. Chaque pion formé est placé sur la même case que le château. Dès sa création le château accumule des ressources jusqu à la fin du jeu. C est à dire qu il peut former un pion et accumuler des ressources lors d un même tour. Lorsqu un château est abattu par ses ennemis il change de camp et regagne tous ses points de vie. Paysan Point de vie : 5 Attaque : aucune Coût de construction : 4 or Ressource par tour : 2 lorsqu il travaille Temps de construction : 2 tours Déplacement : au plus 1 case par tour Un paysan peut se déplacer et accumuler des ressources. Un paysan ne peut pas faire les deux à la fois. Un paysan ne peut accumuler des ressources lorsqu il est sur une case occupée par un ennemi ou par un autre paysan déjà en train d accumuler des ressources, ou lorsque la case est occupée par un chateau. Si un paysan a accumulé des ressources lors d un tour alors inutile de lui redemander de le faire au tour suivant, il continuera à produire jusqu à ce qu on lui donne un ordre contraire ou jusqu à ce qu il meurt. Un paysan ne peut fuir un combat il attend jusqu à ce que ses alliés défassent l ennemi ou jusqu à sa mort. Seigneur Point de vie : 10 Attaque : 3 Cout de construction : 7 5
Ressource par tour : n accumule pas de ressource Temps de construction : 4 tours Déplacement : au plus 2 cases par tour. Un seigneur est un combatant qui peut se tranformer en château. Le coût de la transformation d un seigneur en château est donné dans la description du château. Un seigneur ne peut pas se transformer en château sur une case occupée par l ennemi occupée par un paysan occupée par un château. Guerrier Point de vie :17 Attaque : 5 Cout de construction : 5 Ressource par tour : n accumule pas de ressources Temps de construction : 3 tours Déplacement : au plus 1 case par tour Les guerriers se déplacent et combattent. Conseils Il y plusieurs partie de programme à développer, l une est l état jeu, la place des pions, ce qu il sont en train de faire, les ordres qu on peut leur donner etc... L autre partie du programme est l interface c est à dire l affichage et les entrées d information (la souris ou le clavier). Comme l état du jeu ne dépend pas de l interface. Vous n êtes pas obligé d utiliser la bibliothéque pour développer la partie état du jeu. Les différents pions et leur comportement présentent de caractéristiques similaires, utilisez le méchanisme de l héritage du C++. Par exemple tous les pions mobiles peuvent se déplacer, les seigneurs et les guerriers peuvent combattre, tous les pions ont des points de vie etc... Je vous conseille au tout début d essayer de compiler un programme simple avec la bibliothèque graphique pour voir si elle fonctionne. Des exemples de tels programmes sont donnés sur le site de la bibliothèque. 6
Faites régulièrement des essais de compilation et d exécution de votre programme. Voici une capture d écran de jeu pour vous inspirer. Vous n êtes pas du tout obligé de le copier. Couleurs et autres fioritures sont à faire en dernier. 7
Figure 1: Exemple d un plateau de jeu 8