Advertisement
Guest User

Untitled

a guest
Nov 19th, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.34 KB | None | 0 0
  1. // SamPatrickHarryMonahanDAC416AE1Project.cpp : Defines the entry point for the console application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <iostream>
  6. #include <Windows.h>
  7. #include <iomanip>
  8.  
  9. #pragma region variables
  10. using namespace std; //eliminates need to write std:: prefix each time
  11. int mainMenuInput; //stores input for the main menu selection
  12. int mainGameInput; //stores input for the main game
  13.  
  14. //----------------------------------------------------------------------
  15.  
  16. bool turnComplete = false;
  17. bool playingGame = false;
  18. bool playGame = false;
  19. bool playerTurn = true;
  20. bool playerHasSufficientEnergy = true;
  21. bool playerHealedThisTurn = false;
  22. bool enemyHasSufficientEnergy = true;
  23. bool enemyHealedThisTurn = false;
  24.  
  25. //----------------------------------------------------------------------
  26.  
  27. int GenerateRandomNumber(int min, int max)
  28. {
  29. srand((unsigned int)time(NULL)); //Creates seed base on system clock
  30. int lower = min, upper = max, range = (upper - lower) + 1; //calculates range
  31. int random = min + rand() % range; //generate a value within the specified range
  32. Sleep(1000);
  33.  
  34. return random;
  35. };
  36.  
  37. //----------------------------------------------------------------------
  38.  
  39. int maxHealth = 100;
  40. int maxEnergy = 100;
  41.  
  42. float standardAttackValue = GenerateRandomNumber(1, 10);
  43. float specialAttackValue = GenerateRandomNumber(2, 20);
  44.  
  45. float standardAttackCost = maxEnergy / 10;
  46. float specialAttackCost = maxEnergy / 2;
  47.  
  48. //----------------------------------------------------------------------
  49.  
  50. float playerHealth = 100;
  51. float playerEnergy = 50;
  52.  
  53. int playerHitChanceBase = 90;
  54. int playerHitChanceModifier = 0;
  55. int playerHitChance = playerHitChanceBase - playerHitChanceModifier;
  56.  
  57. int playerDodgeChanceBase = 50;
  58. int playerDodgeChanceModifier = 0;
  59. int playerDodgeChance = playerDodgeChanceBase - playerDodgeChanceModifier;
  60.  
  61. int playerRechargeRateBase = 9;
  62. int playerRechargeRateModifier = 0;
  63. int playerRechargeRate = playerRechargeRateBase - playerRechargeRateModifier;
  64.  
  65. bool playerHitSuccess;
  66. float playerHit;
  67.  
  68. //----------------------------------------------------------------------
  69.  
  70. float enemyHealth = 100;
  71. float enemyEnergy = 50;
  72. bool enemyWantsToDodge = GenerateRandomNumber(1,2);
  73.  
  74. int enemyHitChanceBase = 50;
  75. int enemyHitChanceModifier = 0;
  76. int enemyHitChance = enemyHitChanceBase - enemyHitChanceModifier;
  77.  
  78. int enemyDodgeChanceBase = 50;
  79. int enemyDodgeChanceModifier = 0;
  80. int enemyDodgeChance = enemyDodgeChanceBase = enemyDodgeChanceModifier;
  81.  
  82. int enemyRechargeRateBase = 9;
  83. int enemyRechargeRateModifier = 0;
  84. int enemyRechargeRate = enemyRechargeRateBase - enemyRechargeRateModifier;
  85.  
  86.  
  87. bool enemyHitSuccess;
  88. float enemyHit;
  89.  
  90. //----------------------------------------------------------------------
  91.  
  92. #pragma endregion variables
  93.  
  94. #pragma region functions
  95.  
  96. #pragma region playerFunctions
  97. //Calculate value for player healing
  98. void healPlayer() {
  99.  
  100. if ((playerEnergy / 2) >= (maxHealth - playerHealth)) {
  101. playerHealth = 100;
  102. }
  103. else {
  104. playerHealth = playerHealth + (playerEnergy / 2);
  105. }
  106. }
  107.  
  108.  
  109. void playerStandardAttack() {
  110.  
  111. unsigned int randomNum = GenerateRandomNumber(0, 100);
  112. playerHitChanceBase = 80;
  113.  
  114. if (playerEnergy < standardAttackCost) {
  115. playerHasSufficientEnergy = false;
  116. turnComplete = false;
  117. return;
  118. }
  119. else {
  120. if (randomNum >= playerHitChance) {
  121. playerHit = 0;
  122. playerHitSuccess = false;
  123. cout << "You missed!";
  124. Sleep(1000);
  125. turnComplete = true;
  126. }
  127. else {
  128. playerHit = standardAttackValue;
  129. playerHitSuccess = true;
  130. playerEnergy -= standardAttackCost;
  131. cout << "You hit!";
  132. Sleep(1000);
  133. turnComplete = true;
  134. }
  135. }
  136.  
  137. }
  138.  
  139. void playerSpecialAttack() {
  140. unsigned int randomNum = GenerateRandomNumber(0, 100);
  141. playerHitChanceBase = 50;
  142. if (playerEnergy < specialAttackCost) {
  143. playerHasSufficientEnergy = false;
  144. turnComplete = false;
  145. return;
  146. }
  147. else {
  148. if (randomNum >= playerHitChance) {
  149. playerHit = 0;
  150. playerHitSuccess = false;
  151. cout << "You missed!";
  152. Sleep(1000);
  153. turnComplete = true;
  154. }
  155. else {
  156. playerHit = specialAttackCost;
  157. playerHitSuccess = true;
  158. playerEnergy -= specialAttackCost;
  159. cout << "You hit!";
  160. Sleep(1000);
  161. turnComplete = true;
  162. }
  163. }
  164. }
  165. //Calculate player recharge rate
  166. void playerRecharge() {
  167.  
  168. enemyHitChanceModifier = enemyHitChanceBase / 10;
  169.  
  170. if (playerEnergy + (playerRechargeRate * 4) >= maxEnergy) {
  171. playerEnergy = maxEnergy;
  172. }
  173. else {
  174. playerEnergy = playerEnergy + (playerRechargeRate * 4);
  175. }
  176. cout << "Recharging!";
  177. Sleep(1000);
  178. turnComplete = true;
  179. }
  180.  
  181. void playerPassiveRecharge() {
  182. if (playerEnergy + (playerRechargeRate) >= maxEnergy) {
  183. playerEnergy = maxEnergy;
  184. }
  185. else {
  186. playerEnergy = playerEnergy + (playerRechargeRate);
  187. }
  188. }
  189.  
  190. void playerDodge() {
  191. enemyHitChanceModifier = ((enemyHitChanceBase / 100) * 30);
  192. playerRechargeRateModifier = playerRechargeRateBase / 2;
  193.  
  194. }
  195.  
  196. #pragma endregion playerFunctions
  197.  
  198. #pragma region enemyFunctions
  199.  
  200. void enemyStandardAttack() {
  201.  
  202. unsigned int randomNum = GenerateRandomNumber(0, 100);
  203. enemyHitChanceBase = 80;
  204.  
  205. if (enemyEnergy < standardAttackCost) {
  206. enemyHasSufficientEnergy = false;
  207. turnComplete = false;
  208. return;
  209. }
  210. else {
  211. if (randomNum >= playerHitChance) {
  212. enemyHit = 0;
  213. enemyHitSuccess = false;
  214. cout << "They missed!";
  215. Sleep(1000);
  216. turnComplete = true;
  217. }
  218. else {
  219. enemyHit = standardAttackValue;
  220. enemyHitSuccess = true;
  221. enemyEnergy -= standardAttackCost;
  222. cout << "They hit!";
  223. Sleep(1000);
  224. turnComplete = true;
  225. }
  226. }
  227.  
  228. }
  229.  
  230. void enemySpecialAttack() {
  231. unsigned int randomNum = GenerateRandomNumber(0, 100);
  232. enemyHitChanceBase = 50;
  233.  
  234. if (enemyEnergy < specialAttackCost) {
  235. enemyHasSufficientEnergy = false;
  236. turnComplete = false;
  237. return;
  238. }
  239. else {
  240. if (randomNum >= enemyHitChance) {
  241. enemyHit = 0;
  242. enemyHitSuccess = false;
  243. cout << "You missed!";
  244. Sleep(1000);
  245. turnComplete = true;
  246. }
  247. else {
  248. enemyHit = specialAttackCost;
  249. enemyHitSuccess = true;
  250. enemyEnergy -= specialAttackCost;
  251. cout << "You hit!";
  252. Sleep(1000);
  253. turnComplete = true;
  254. }
  255. }
  256. }
  257.  
  258. //Calculate enemy recharge rate
  259. void enemyRecharge() {
  260. playerHitChanceModifier = playerHitChanceBase / 10;
  261. if (enemyEnergy + (enemyRechargeRate * 4) >= maxEnergy) {
  262. enemyEnergy = maxEnergy;
  263. }
  264. else {
  265. enemyEnergy = enemyEnergy + (enemyRechargeRate * 4);
  266. }
  267. cout << "Enemy recharging!";
  268. Sleep(1000);
  269. turnComplete = true;
  270. }
  271.  
  272. //Calculate value for enemy healing
  273. void healEnemy() {
  274.  
  275. if ((enemyEnergy / 2) >= (maxHealth - enemyHealth)) {
  276. enemyHealth = 100;
  277. }
  278. else {
  279. enemyHealth = enemyHealth + (enemyEnergy / 2);
  280. }
  281. cout << "Enemy healing!";
  282. }
  283.  
  284. void enemyPassiveRecharge() {
  285. if (enemyEnergy + (enemyRechargeRate) >= maxEnergy) {
  286. enemyEnergy = maxEnergy;
  287. }
  288. else {
  289. enemyEnergy = enemyEnergy + (enemyRechargeRate);
  290. }
  291. }
  292.  
  293. void enemyDodge() {
  294. playerHitChanceModifier = ((playerHitChanceBase / 100) * 30);
  295. enemyRechargeRateModifier = enemyRechargeRateBase / 2;
  296.  
  297. }
  298. #pragma endregion enemyFunctions
  299.  
  300. #pragma endregion functions
  301.  
  302. int main()
  303. {
  304.  
  305. //game loop
  306. while (!playGame) {
  307.  
  308. cout << "Welcome to the Not Pokemon - Please choose an option" << endl;
  309. cout << "1 - Play Game" << "\n" << "2 - Quit" << endl;
  310.  
  311. cin >> mainMenuInput;
  312.  
  313.  
  314.  
  315. if (mainMenuInput == 1) { //playing the game
  316.  
  317. system("CLS");
  318.  
  319. cout << "You chose to play" << "\n" << "\n" << "\n";
  320. while (!playingGame) {
  321. system("CLS");
  322.  
  323.  
  324. cout << setw(14) << "Player" << setw(50) << "Enemy" << endl;
  325. cout << "Health - " << setw(2) << playerHealth << setw(51) << enemyHealth << endl;
  326. cout << "Energy - " << setw(2) << playerEnergy << setw(51) << enemyEnergy << "\n" << endl;
  327.  
  328. cout << "Attack Options - 1: Attack 2: Special Attack 3: Recharge 4: Heal 5:Dodge" << "\n";
  329. if (playerTurn) {
  330. cout << "Its the players turn! Make your move." << "\n" << endl;
  331. turnComplete = false;
  332. playerTurn = false;
  333. enemyHealedThisTurn = false;
  334.  
  335. while (!turnComplete) {
  336.  
  337.  
  338. cin >> mainGameInput;
  339.  
  340. if (mainGameInput == 1) {//Player standard attack
  341.  
  342. playerStandardAttack();
  343. enemyHealth = enemyHealth - playerHit;
  344.  
  345. if ((playerEnergy - standardAttackCost) <= 0) {
  346. cout << "Insufficient energy, Try again!" << endl;
  347. }
  348.  
  349. }
  350. if (mainGameInput == 2) {//Player special attack
  351.  
  352. playerSpecialAttack();
  353. enemyHealth = enemyHealth - playerHit;
  354.  
  355. if ((playerEnergy - specialAttackCost) <= 0) {
  356. cout << "Insufficient energy, Try again!" << endl;
  357. }
  358.  
  359. }
  360. else if (mainGameInput == 3) { //Player recharge
  361.  
  362. playerRecharge();
  363. enemyHitChance -= +10;
  364.  
  365. }
  366. else if (mainGameInput == 4) { //Player healing
  367. if (playerHealedThisTurn == true) {
  368. cout << "You have already healed this turn!";
  369. }
  370. else {
  371. cout << "You are healing!";
  372. healPlayer();
  373. playerHealedThisTurn = true;
  374. }
  375.  
  376. }
  377. else if (mainGameInput == 5) {
  378. playerDodge();
  379. cout << "Getting ready to dodge...";
  380. Sleep(1000);
  381. turnComplete = true;
  382. }
  383. playerPassiveRecharge();
  384. }
  385. }
  386.  
  387. else {
  388. playerHealedThisTurn = false;
  389. //ENEMY TURN
  390. cout << "It is the enemies turn!" << endl;
  391. Sleep(1000);
  392.  
  393. //ENEMY TURN LOGIC HERE
  394. #pragma region enemyAI
  395. int lastEnemyInput;
  396. int enemyGameInput;
  397.  
  398. if (enemyEnergy >= 50 && enemyHealth >= 10) {
  399. enemyGameInput = 2;
  400. cout << "A special attack!" << endl;
  401. Sleep(1000);
  402. }
  403. else if (enemyEnergy >= 10 && enemyHealth > 10) {
  404. enemyGameInput = 1;
  405. }
  406. else if (enemyEnergy < 10 && enemyHealth > 10) {
  407. enemyGameInput = 3;
  408. }
  409. else if (enemyHealth <= 10) {
  410. enemyGameInput = 4;
  411. }
  412.  
  413. else if (enemyHealth <= 10 && enemyWantsToDodge == true) {
  414. enemyGameInput = 5;
  415. }
  416. else {
  417. cout << "oops";
  418. }
  419.  
  420. if (lastEnemyInput = enemyGameInput && enemyHealedThisTurn == false) {
  421. enemyGameInput = 4;
  422. }
  423. else if (lastEnemyInput = enemyGameInput && enemyHealedThisTurn == true) {
  424. enemyGameInput = 3;
  425. }
  426. //----------------------------------------------------------------------
  427. lastEnemyInput = enemyGameInput;
  428.  
  429. #pragma endregion enemyAI
  430.  
  431. //----------------------------------------------------------------------
  432.  
  433. #pragma region enemyInput
  434. if (enemyGameInput == 1) {//Enemy standard attack
  435.  
  436. enemyStandardAttack();
  437. playerHealth = playerHealth - enemyHit;
  438.  
  439. if (enemyHitSuccess == true && enemyHasSufficientEnergy == true) {
  440. cout << "You landed a hit! - Player Health at " << playerHealth << "\n";
  441. playerTurn = true;
  442. turnComplete = false;
  443.  
  444. }
  445. else if (enemyHitSuccess == false && enemyHasSufficientEnergy == true) {
  446. cout << "You missed! - Player Health at " << playerHealth << "\n";
  447. playerTurn = true;
  448. turnComplete = false;
  449.  
  450. }
  451. else {
  452. cout << "You dont have sufficient energy, please try again." << endl;
  453. }
  454.  
  455. }
  456. else if(enemyGameInput == 2) {//Enemy special attack
  457.  
  458. playerHealth = playerHealth - enemyHit;
  459.  
  460. if ((enemyEnergy - specialAttackCost) <= 0) {
  461. cout << "Insufficient energy, Try again!" << endl;
  462. }
  463.  
  464.  
  465. }
  466. else if (mainGameInput == 3) { //Enemy recharge
  467. cout << "Enemy recharging!";
  468. enemyRecharge();
  469. playerHitChance -= +10;
  470. turnComplete = true;
  471. playerTurn = false;
  472. }
  473. else if (mainGameInput == 4) { //Enemy healing
  474. if (enemyHealedThisTurn == true) {
  475. cout << "Enemy already healed this turn!";
  476. }
  477. else {
  478. cout << "You are healing!";
  479. healEnemy();
  480. enemyHealedThisTurn = true;
  481. }
  482.  
  483. }
  484. else if (mainGameInput == 5) {
  485. enemyDodge();
  486. cout << "The enemy attempts to dodge you!";
  487. Sleep(1000);
  488. }
  489. enemyPassiveRecharge();
  490. playerTurn = true;
  491. }
  492. #pragma endregion enemyInput
  493.  
  494.  
  495. }
  496.  
  497. }
  498. else if (mainMenuInput == 2) {
  499. cout << "Thank you for playing" << endl;
  500. exit(0);
  501. }
  502. else {
  503. "There has been an error. Please give a valid input";
  504. }
  505. }
  506. return 0;
  507. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement