:orphan: .. ex-TP4 .. _TP4_GBM3A: TP4: jeu de rôle (POO) ====================== .. contents:: Table des matières :local: Dans ce T.P., vous coderez un jeu vidéo textuel simulant une bataille entre deux joueurs, à travers leur personnage respectif. Personnages ----------- Il faudra créer une classe `Personnage` comportant les attributs et méthodes communs à tous les personnages. Ensuite, pour chaque type de personnage, vous utiliserez l'héritage depuis la classe `Personnage` pour créer leur classe spécifique. Vous êtes libres du choix des différents personnages (guerrier/archer, abeille/papillon, Link/Mario/Pikachu, etc.), mais ferez au moins deux classes différentes. Les personnages ont chacun des attributs: - nom : à choisir par le joueur en début de partie, - point de vie (PV) : tout le monde commence à 500 PV, - attaque (ATT) : entier entre 0 (aucune attaque), et 100 (attaque maximale), - défense (DEF) : entier entre 0 (défense nulle), et 100 (défense totale, aucune attaque ne peut enlever de PV), - agilité (AGI) : entier entre 0 (agilité nulle) et 100. Les différences entre les différents personnages résideront dans leur point d'attaque et de défense, ainsi que dans leur type d'attaque. *Essayez de ne pas créer des personnages trop déséquilibrés dans leurs statistiques.* Jeu --- La progression du jeu sera gérée par une classe `Jeu`. .. rubric:: Initialisation du jeu Au début du jeu, les joueurs choisissent le type de personnage qu'ils souhaitent incarner, et leur nom. .. rubric:: Combat Les personnages se battent l'un après l'autre. Celui qui commence est choisi de manière aléatoire. Pour chaque action, le joueur aura le choix entre attaquer (`a`) et fuir (`f`), et donnera son choix dans la console. Ces différentes actions doivent faire partie de la classe `Personnage`. Lorsqu'un personnage en attaque un autre, la cible perd alors de la vie en proportion de sa valeur de défense et de la valeur d'attaque de l'assaillant : `vie ennemie -= point d'attaque - point défense/5`. Cependant, il y a également une chance que l'adversaire esquive le coup donné qui dépend de l'agilité de celui-ci : la probabilité d'une esquive de l'ennemie est `Agilité de l'ennemi/100/4`, soit égale à 25% du score d'agilité. Si le personnage choisit de fuir, la probabilité de succès de cette fuite dépendra de son score d'agilité : si le score est de 40, il y aura 20% de succès, soit deux fois moins que le score. À chaque étape du combat, les PV restant de chaque combattant seront affichés. .. rubric:: Fin du jeu Le jeu se termine lorsque l'un des personnages est mort, c-à-d. lorsque ses PV sont à 0, ou s'est enfuit. Pour aller plus loin : - On pourra créer une ou plusieurs attaques spéciales, qui infligeraient de nombreux dégâts, mais avec une probabilité de réussite assez faible. - Vous pouvez ajouter des possibilités de se soigner, de contrer, etc.