1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4.  
  5. #include "character_base.h"
  6.  
  7. //#include "player.h"
  8.  
  9. bool evasionCheck = false; // TRUE = CHARACTER HAS EVADED THE ATTACK FALSE = THE CHARACTER HAS NOT EVADED THE HIT.
  10. bool defenseCheck = false; // TRUE = CHARACTER HAS DEFENDED THE ATTACK. FALSE = CHARACTER HAS NOT DEFENDED THE ATTACK.
  11.  
  12. int damageRecieved = 0;
  13. int attackChoice = 0;
  14. int ranNumber = 0; // The placeholder for the actual random number
  15. int maxNumber = 0; //Max number the RNG can go too
  16. int strikeType = 0; // Strike type for determing evasion. 3 = heavy 2 = normal 1 = light.
  17.  
  18. //int srand((unsigned)time(0)); //seeds the RNG to system time
  19.  
  20. class battle
  21. {
  22. //Evasion check method
  23. bool checkEvasion(int strikeType)
  24. {
  25. if (strikeType == 3)
  26. {
  27. if ((randomNumber(50)) > ((enemy.getEvasion) * 5))
  28. {
  29. return true;
  30. }
  31.  
  32. return false;
  33.  
  34. }//end of striketype 3
  35.  
  36. if (strikeType == 2)
  37. {
  38. if ((randomNumber(75)) > ((enemy.getEvasion) * 5))
  39. {
  40. return true;
  41. }
  42.  
  43. return false;
  44. }//end of striketype 2
  45. if (strikeType == 1)
  46. {
  47. if ((randomNumber(125)) > ((enemy.getEvasion) * 5))
  48. {
  49. return true;
  50. }
  51.  
  52. return false;
  53. }//end of striketype 1
  54. }//end of checkEvasion
  55.  
  56.  
  57. //Random Number Method
  58. int randomNumber(int maxNumber)
  59. {
  60. srand((unsigned)time(0)); //seeds the RNG to system time
  61. ranNumber = (rand() % maxNumber);
  62.  
  63. return ranNumber;
  64. }
  65.  
  66.  
  67.  
  68. //Heavy Strike Method
  69. int heavy_strike()
  70. {
  71. damageRecieved = (randomNumber(15) * player.getSrength()) - (enemy.getDefense());
  72.  
  73. evasionCheck = checkEvasion(strikeType);
  74.  
  75. if (evasionCheck == False)
  76. {
  77. if (damageRecieved < enemy.getDefense)
  78. {
  79. defenseCheck = true;
  80. }
  81.  
  82. else
  83. {
  84. defenseCheck = false;
  85. }
  86.  
  87. if (defenseCheck == false && evasionCheck == false)
  88. {
  89. return damageRecieved;
  90. }
  91.  
  92. if (defenseCheck == true)
  93. {
  94. std::cout << "They defended the attack!";
  95.  
  96. return 0;
  97. }
  98.  
  99.  
  100. }
  101.  
  102. if (evasionCheck == true)
  103. {
  104. std::cout << "They evaded the attack!";
  105.  
  106. return 0;
  107. }
  108.  
  109. return 0;
  110. }
  111. //Light strike method
  112. int light_strike()
  113. {
  114. damageRecieved = (randomNumber(5) * player.getSrength()) - (enemy.getDefense());
  115.  
  116. evasionCheck = checkEvasion(strikeType);
  117.  
  118. if (evasionCheck == False)
  119. {
  120. if (damageRecieved < enemy.getDefense)
  121. {
  122. defenseCheck = true;
  123. }
  124.  
  125. else
  126. {
  127. defenseCheck = false;
  128. }
  129.  
  130. if (defenseCheck == false && evasionCheck == false)
  131. {
  132. return damageRecieved;
  133. }
  134.  
  135. if (defenseCheck == true)
  136. {
  137. std::cout << "They defended the attack!";
  138.  
  139. return 0;
  140. }
  141.  
  142. }
  143.  
  144. if (evasionCheck == true)
  145. {
  146. std::cout << "They evaded the attack!";
  147.  
  148. return 0;
  149. }
  150.  
  151. return 0;
  152. }
  153.  
  154. //Normal Strike method
  155. int normal_strike()
  156. {
  157. damageRecieved = (randomNumber(10) * player.getSrength()) - (enemy.getDefense());
  158.  
  159. evasionCheck = checkEvasion(strikeType);
  160.  
  161. if (evasionCheck == False)
  162. {
  163. if (damageRecieved < enemy.getDefense)
  164. {
  165. defenseCheck = true;
  166. }
  167.  
  168. else
  169. {
  170. defenseCheck = false;
  171. }
  172.  
  173. if (defenseCheck == false && evasionCheck == false)
  174. {
  175. return damageRecieved;
  176. }
  177.  
  178. if (defenseCheck == true)
  179. {
  180. std::cout << "They defended the attack!";
  181.  
  182. return 0;
  183. }
  184.  
  185.  
  186. }
  187.  
  188. if (evasionCheck == true)
  189. {
  190. std::cout << "They evaded the attack!";
  191.  
  192. return 0;
  193. }
  194.  
  195. return 0;
  196. }
  197.  
  198.  
  199. battle()
  200. {
  201. do
  202. {
  203. std::cout << "\n\nFIGHT!!";
  204. do
  205. {
  206. std::cout << "\n\n 1 = Heavy Strike\n 2 = Normal Strike \n 3 = Light Strike\n";
  207. std::count << "\n How will you attack? ";
  208. std::cin >> attackChoice;
  209.  
  210. switch(attackChoice) // Determine player's intention for this turn. Heavy, normal or light strikes.
  211. {
  212.  
  213. case 1: // Heavy Strike
  214. strikeType = 3;
  215. damageRecieved = heavy_strike();
  216. enemy.setHealth(damageRecieved);
  217. break;
  218. case 2: // Normal Strike
  219. strikeType = 2;
  220. damageRecieved = normal_strike();
  221. enemy.setHealth(damageRecieved);
  222. break;
  223. case 3: // Light Strike
  224. strikeType = 1;
  225. damageRecieved = light_strike();
  226. enemy.setHealth(damageRecieved);
  227. break;
  228. default:
  229. std::cout << "Make a valid choice before it is too late Gladiator!";
  230. break;
  231. }
  232. }while (attackChoice < 1 || attackChoice > 4);
  233. }while (player.getHealth() > 0 && enemy.getHealth() > 0);
  234.  
  235. }// End of battle()
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245. }