Advertisement
Guest User

Untitled

a guest
Sep 21st, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.79 KB | None | 0 0
  1. /**
  2. * \ file main.cpp
  3. * \ author Nom de l'equipier 1 - Matricule
  4. * \ brief Ce fichier contient un programme de calcul d'attaque pour le jeu Donjons et Dragons
  5. */
  6.  
  7. #include <algorithm> // Permet d'utiliser les fonctions min et max
  8. #include <iostream> // Permet de faire les entrees/sorties
  9. #include <random>  // Permet d'utiliser les fonctions de génération de nombres aléatoires
  10.  
  11.  
  12. using namespace std;
  13.  
  14. //Module
  15. int GenereDe(int face);
  16. int CalculerPointVie(int, int, int, int);
  17. int CalculerDommageArme(int, int);
  18. int CalculerDommageReel(int, int);
  19. int CalculerAttaque(int, int);
  20.  
  21. int main()
  22. {
  23.    
  24.  
  25.     //Joueur Stats
  26.     int pointVieJoueur = 0,
  27.         nbDeAttaqueJoueur = 0,
  28.         faceAttaqueJoueur = 0,
  29.         faceArmureJoueur = 0,
  30.         pointVieInitJoueur = 0;
  31.     //Ennemi Stats
  32.     int pointVieEnnemi = 0,
  33.         nbDeAttaqueEnnemi = 0,
  34.         faceAttaqueEnnemi = 0,
  35.         faceArmureEnnemi = 0,
  36.         pointVieInitEnnemi = 0;
  37.  
  38.  
  39.  
  40.     // 1. Lecture des entrees
  41.     // 1.1 Lecture des points de vie du joueur
  42.     cout << "Entrez le nombre de point de vie du joueur : ";
  43.     cin >> pointVieJoueur;
  44.  
  45.     // 1.2 Lecture du nombre de DE d'attaque du joueur
  46.     cout << "Entrez le nombre de DE pour calculer l'attaque du joueur : ";
  47.     cin >> nbDeAttaqueJoueur;
  48.  
  49.     // 1.3 Lecture du nombre de face du DE d'attaque du joueur
  50.     cout << "Entrez le nombre de face des DES d'attaque du joueur : ";
  51.     cin >> faceAttaqueJoueur;
  52.  
  53.     // 1.4 Lecture du nombre de face du DE d'armure du joueur
  54.     cout << "Entrez le nombre de face du DE d'armure du joueur : ";
  55.     cin >> faceArmureJoueur;
  56.  
  57.     // 1.5 Lecture des points de vie de l'ennemi
  58.     cout << "Entrez le nombre de point de vie de l'ennemi : ";
  59.     cin >> pointVieEnnemi;
  60.  
  61.     // 1.6 Lecture du nombre de DE d'attaque de l'ennemi
  62.     cout << "Entrez le nombre de DE pour calculer l'attaque de l'ennemi : ";
  63.     cin >> nbDeAttaqueEnnemi;
  64.  
  65.     // 1.7 Lecture du nombre de face du DE d'attaque de l'ennemi
  66.     cout << "Entrez le nombre de face des DES d'attaque de l'ennemi : ";
  67.     cin >> faceAttaqueEnnemi;
  68.  
  69.     // 1.8 Lecture du nombre de face du DE d'armure de l'ennemi
  70.     cout << "Entrez le nombre de face du DE d'armure de l'ennemi : ";
  71.     cin >> faceArmureEnnemi;
  72.  
  73.     // Completez le code du module principal ici
  74.  
  75.  
  76.  
  77.     //2. Calculer le nombre de points de vie restant du joueur(Module CalculerPointVie)
  78.     pointVieJoueur = CalculerPointVie(pointVieInitJoueur, nbDeAttaqueEnnemi, faceAttaqueEnnemi,faceArmureJoueur);
  79.     //3. Calculer le nombre de points de vie restant de l'adversaire
  80.     pointVieEnnemi = CalculerPointVie(pointVieInitEnnemi, nbDeAttaqueJoueur, faceAttaqueJoueur, faceArmureEnnemi);
  81.    
  82.     // 4. Affichage des sorties
  83.     // 4.1 Affichage des points de vie du joueur
  84.     cout << "Point de vie du joueur apres l'attaque : " << pointVieJoueur << endl;
  85.  
  86.     // 4.2 Affichage des points de vie de l'ennemi
  87.     cout << "Point de vie de l'ennemi apres l'attaque : " << pointVieEnnemi << endl;
  88.     return 0;
  89. }
  90.  
  91. // **************************************************************************
  92. // Ce module calcule le nombre de point de vie d'un personnage après une attaque.
  93. int CalculerPointVie(int pointVieInit, int nbDeAttck, int nbFaceDeAttck, int nbFaceDeArmure)
  94. {  
  95.     //1. Calculer les dommages de l'arme (Modules CalculerDommageArme)
  96.     int dommageArme = CalculerDommageArme(nbDeAttck,nbFaceDeAttck);
  97.     //2. Calculer la résistance de l'armure (Module GenereDe)
  98.     int armure = GenereDe(nbFaceDeArmure);
  99.     //3. Calculer les dommages réels effectués (Module CalculDommageReel)
  100.     int dommageReel = CalculerDommageReel(dommageArme,armure);
  101.     //4. Calculer le résultat de l'attaque (Module CalculerAttaque)
  102.     int pointsVieFinaux = CalculerAttaque(pointVieInit,dommageReel);
  103.     //5. retourner le resultat d'attaque
  104.     return pointsVieFinaux;
  105. };
  106. //
  107. //Ce module calcule les dommages effectués par une arme donnée.
  108. int CalculerDommageArme(int nbDeDommage, int nbFaceDesDommage)
  109. {
  110.     //1. Genere un lancer de dé (Module GenereDe)
  111.     int valeurDe = GenereDe(nbFaceDesDommage);
  112.     //2. Calculer le résultat des dégâts
  113.     int dommageArme = nbDeDommage*valeurDe;
  114.     //3. Retourner le résultat
  115.     return dommageArme;
  116. };
  117.  
  118. int CalculerResArmure(int nbDeArmure, int nbFaceDesArmure) {
  119.     //1. Genere un lancer de dé (Module GenereDe)
  120.     int valeurDe = GenereDe(nbDeArmure);
  121.     //2. Calculer le résultat des armures
  122.     int armure = nbDeArmure*valeurDe;
  123.     //3. Retourner le résultat
  124.     return armure;
  125. }
  126. //
  127. //Ce module calcule les dommages réels effectués apr une arme donnée après absorption par une armure.
  128. int CalculerDommageReel(int dommageArme, int valResArmure)
  129. {
  130.     //1. Calculer les dommages infligées
  131.     int dommageInflige = dommageArme - valResArmure;
  132.     //2. S'assurer ques les dommages ne sont pas négatif(module max)
  133.     int dommageEffectue = max(0,dommageInflige);
  134.     //3. Retourner le résultat
  135.     return dommageEffectue;
  136. };
  137. //
  138. // Ce module calcule le résultat d'une attaque contre un joueur
  139. int CalculerAttaque(int pointVieInit, int dommageReelEffectue)
  140. {
  141.     int pointVieFinaux;
  142.     int pointVieReel;
  143.     //1. Calculer les points de vie finaux prévus
  144.     pointVieFinaux = pointVieInit - dommageReelEffectue;
  145.     //2. S'assurer que les points de vie ne sont pas négatif(module Max)
  146.     pointVieReel = max(0,pointVieFinaux);
  147.     //3. Retourner le résultat
  148.     pointVieFinaux = pointVieReel;
  149.     return pointVieFinaux;
  150.  
  151. };
  152.  
  153. // **************************************************************************
  154.  
  155.  
  156.  
  157. /**
  158. * \ brief Genere un lancer de de d'un nombre de face donne.
  159. * \ param [in] Nombre de face du de
  160. * \ return Valeur du de
  161. */
  162. int GenereDe(int face)
  163. {
  164.     // 0. Creation du generateur de nombre aleatoire, avec une racine a 0 (une seule fois)
  165.     static mt19937 generateur(0);
  166.     // 1. Creation d'une distribution uniforme pour l'intervalle specifiee
  167.     uniform_int_distribution<> distribution(1, face);
  168.     // 2. Generation d'un nombre aleatoire selon la distribution uniforme
  169.     return distribution(generateur);
  170. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement