-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBattle.cpp
More file actions
97 lines (86 loc) · 2.35 KB
/
Battle.cpp
File metadata and controls
97 lines (86 loc) · 2.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
// Battle class implementation
// By Nick Verrochi
// Last Modified: 5/8/15
#include "Battle.h"
using namespace std;
Battle::Battle(Player *p, Monster *m) {
player = p;
monster = m;
}
bool Battle::fight() {
while (player->isAlive() && monster->isAlive() && !player->isEscaping()) {
printBattleStats();
if (player->getSpeed() >= monster->getSpeed()) {
playerTurn();
if (monster->isAlive() && !player->isEscaping()) {
monsterTurn();
}
}
else {
monsterTurn();
if (player->isAlive()) {
playerTurn();
}
}
system("pause");
}
system("cls");
printBattleStats();
if (player->isAlive() && !player->isEscaping()) {
player->setExp(player->getExp() + monster->getExpReward());
cout << player->getName() << " has won! Gained " << monster->getExpReward() << " exp! \n";
if (player->getExp() >= player->getExpToNext()) player->levelUp();
player->setHp(player->getHpMax());
player->setMp(player->getMpMax());
delete monster;
system("pause");
return true;
}
else if (player->isEscaping()) {
player->setHp(player->getHpMax());
player->setMp(player->getMpMax());
player->setEscaping(false);
delete monster;
system("pause");
return true;
}
else {
cout << monster->getName() << " has won! \n";
player->setHp(player->getHpMax());
player->setMp(player->getMpMax());
delete monster;
system("pause");
return false;
}
}
void Battle::playerTurn() {
int choice;
bool continueInput = true;
while (continueInput) {
cout << "Please choose a move: \n\n";
player->printMenu();
cout << endl << "Enter the number of your selection: ";
cin >> choice;
try {
player->action(choice, monster);
continueInput = false;
}
catch (string ex) {
cout << ex;
cin.clear();
cin.ignore(80, '\n');
printBattleStats();
}
}
}
void Battle::monsterTurn() {
monster->action(player);
}
void Battle::printBattleStats() {
system("cls");
cout << player->getName() << " " << player->getPlayerClass() << " LVL " << player->getLevel() << " (" << player->getExp() << "/" << player->getExpToNext() << "): \n"
<< "\t HP: " << player->getHp() << "/" << player->getHpMax() << " "
<< "MP: " << player->getMp() << "/" << player->getMpMax() << "\n\n";
cout << monster->getName() << ": \n"
<< "\t HP: " << monster->getHp() << "\n\n";
}