Le programme implémente un jeu de combat textuel en C++, où deux personnages armés s'affrontent jusqu'à ce qu'un des deux soit mort.
J'ai re travailler sur un sujet de Programmation Orientée Objet que j'avais réalisé en Python au lycée , mais cette fois-ci je l'ai refait en C++.
SUJET:
On demande pour cette exercice d'implémenter plusieurs classes qui pourront interragir entre elles.
- Une classe
Personnage
ayant pour attributs_nom
et_points_de_vie
, ce dernier étant un entier naturel. Les méthodes à implémenter sont:
nom(self)
qui renvoie le nom du personnage;points_de_vie(self)
qui renvoie le nombre de points de vie restant;est_vivant()
qui n'a nul besoin d'une description. Le personnage est mort lorsqu'il n'a plus de points de vie;blesse(pv)
qui retirepv
points de vie au personnage.
- Une classe
Arme
ayant pour attributs_nom
et_dégâts_min
et_dégâts_max
, ces derniers étant des entiers naturels (dans le bon ordre évidemment). Les méthodes à implémenter sont:
nom(self)
qui renvoie le nom de l'arme;dégât_aléatoire(self)
qui renvoie un nombre aléatoire de dégâts entre les deux bornes définissant cette arme
- Rajouter la possibilité de donner une arme à un personnage: il faudra un attribut supplémentaire, ainsi que redéfinir le constructeur et ajouter quelques méthodes (faites appel à votre bon sens);
- Une classe
Arbitre
ayant pour attributs deux personnages armés_p1
et_p2
. Les méthodes à implémenter sont:
personnage1(self)
etpersonnage2(self)
qui renvoient les deux personnages respectivement.un_round(self)
qui effectue un round de combat entre les deux personnages. Dans un round, un seul personnage tape alternativement sur l'autre (et on échange les rôles au round suivant), en utilisant son arme et en infligeant un nombre aléatoire de dégâts à son adversaire. Par quel mécanisme peut-on alterner entre les deux personnages d'un round à l'autre ? Le personnage n° 1 frappera toujours en premier (ou alors, vous pouvez décider de faire ce choix aléatoirement, à vous de voir);combat(self)
qui simulera un combat complet, c'est-à-dire une alternance de rounds jusqu'à ce que l'un des personnage perde la vie. On affichera le détail des combats dans la console (à l'aide deprint
).