-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathplayer.cpp
More file actions
81 lines (62 loc) · 2.52 KB
/
player.cpp
File metadata and controls
81 lines (62 loc) · 2.52 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
//
// Created by iDarkDuck on 2018-10-19.
//
//#define TEST_PLAYER
#include "player.h"
Player::Player(const string &name) : name(name), nRubies(0), active(true), endOfGame(false), side(Side::Top) {}
string Player::getName() const { return name; }
void Player::setActive(const bool &active) { this->active = active; }
bool Player::isActive() const { return active; }
int Player::getNRubies() const { return nRubies; }
void Player::addReward(const Reward &reward) {
nRubies += reward.getNRubies(), cout << "Awarded " << getName() << ": " << reward << "!" << endl;
}
void Player::setDisplayMode(const bool &endOfGame) { this->endOfGame = endOfGame; }
Side Player::getSide() const { return side; }
void Player::setSide(const Side &side) { this->side = side; }
ostream &operator<<(ostream &os, const Player &player) {
os << player.getName() << ": ";
if (!player.endOfGame)
return (os << player.getSideToString() << " (" << (player.active ? "active" : "inactive") << ")" << endl);
return (os << " " << player.getNRubies() << " rubies" << endl);
}
bool operator<(const Player &lhs, const Player &rhs) { return lhs.getNRubies() < rhs.getNRubies(); }
bool operator>(const Player &lhs, const Player &rhs) { return lhs.getNRubies() > rhs.getNRubies(); }
bool operator==(const Player &l, const Player &r) { return l.getName() == r.getName(); }
bool operator!=(const Player &l, const Player &r) { return l.getName() != r.getName(); }
string Player::getSideToString() const {
if (side == Side::Top) return "top";
else if (side == Side::Bottom) return "bottom";
else if (side == Side::Right) return "right";
else return "left";
}
#ifdef TEST_PLAYER
int main() {
cout << "TEST_PLAYER" << endl;
Player p = Player("Peter");
p.setSide(Side::Top);
cout << "Printing player start of the game " << endl;
cout << p << endl;
assert("Peter" == p.getName());
assert(p.getSide() == Side::Top);
assert(p.isActive() == true);
assert(p.getNRubies() == 0);
RewardDeck &r = RewardDeck::make_RewardDeck();
Reward *reward = r.getNext();
p.addReward(*reward);
assert(p.getNRubies() == reward->getNRubies());
p.setActive(false);
assert(p.isActive() == false);
p.setDisplayMode(true);
cout << "Printing player end of the game " << endl;
cout << p << endl;
Player p1 = Player("Nevin");
assert(p > p1);
assert(p1 < p);
assert(p == p);
assert(p != p1);
Player p2 = Player("Peter");
assert(p == p2);
cout << "Testing Completed" << endl;
}
#endif // TEST_PLAYER