-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbettingSystem.cpp
115 lines (101 loc) · 3.47 KB
/
bettingSystem.cpp
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
/*
* kjs170430_Project4/bettingSystem.cpp
* Copyright 2017, Kristopher Sewell, All rights reserved.
*
* Course: CE1337 Section: 501 Project: 4
*/
#include "bettingSystem.hpp"
BettingSystem::BettingSystem() {
game = new RouletteWheel();
}
BettingSystem::~BettingSystem() {
delete game;
}
void BettingSystem::getWinners() {
game->roll();
std::cout << "\n\nThe ball falls in " << game->getRoll() << " slot!\n\n";
for (Participant* p : m_player) {
for (int i = 0; i < p->getSIZE(); i++) {
BetMessage* msg = p->getBet(i);
int type;
msg->good() ? type = msg->getType() : type = -1; //if msg is valid get type
if (type == BetMessage::Type::Single) {
if (msg->getValue() == game->getRoll()) {
p->PayOut(msg->getWager() * 36);
}
} else if (type == BetMessage::Type::Color) {
if (game->isBlack() && msg->getValue() == BetMessage::TypeValue::Black) {
p->PayOut(msg->getWager() * 2);
}
else if (game->isRed() && msg->getValue() == BetMessage::TypeValue::Red) {
p->PayOut(msg->getWager() * 2);
}
} else if (type == BetMessage::Type::Modulo) {
if (game->isEven() && msg->getValue() == BetMessage::TypeValue::Even) {
p->PayOut(msg->getWager() * 2);
}
else if (game->isOdd() && msg->getValue() == BetMessage::TypeValue::Odd) {
p->PayOut(msg->getWager() * 2);
}
} else if (type == BetMessage::Type::Group) {
if (msg->getValue() == BetMessage::TypeValue::Lower && game->getRoll() < 13 && game->getRoll() != 0) {
p->PayOut(msg->getWager() * 3);
}
else if (msg->getValue() == BetMessage::TypeValue::Upper && game->getRoll() > 24) {
p->PayOut(msg->getWager() * 3);
}
else if (msg->getValue() == BetMessage::TypeValue::Middle && game->getRoll() > 12 && game->getRoll() < 25) {
p->PayOut(msg->getWager() * 3);
}
} else if (type == BetMessage::Type::Half) {
if (msg->getValue() == BetMessage::TypeValue::Lower && game->getRoll() < 19 && game->getRoll() != 0) {
p->PayOut(msg->getWager() * 2);
}
else if (msg->getValue() == BetMessage::TypeValue::Upper && game->getRoll() > 18) {
p->PayOut(msg->getWager() * 2);
}
} else if (type == BetMessage::Type::Column) {
if (game->getRoll() != 0) {
if (msg->getValue() == BetMessage::TypeValue::Third && game->getRoll() % 3 == 0) {
p->PayOut(msg->getWager() * 3);
}
else if (msg->getValue() == BetMessage::TypeValue::Second && game->getRoll() % 3 == 2) {
p->PayOut(msg->getWager() * 3);
}
else if (msg->getValue() == BetMessage::TypeValue::First && game->getRoll() % 3 == 1) {
p->PayOut(msg->getWager() * 3);
}
}
}
}
p->delBetArray();
}
}
string BettingSystem::getParticipantName(Participant& p) {
bool done = false;
unsigned i = 0;
string name = "NONE";
while (!done && i < m_player.size()) {
if (m_player.at(i) == &p) {
name = m_player.at(i)->getName();
done = true;
}
i++;
}
return name;
}
void BettingSystem::joinGame(Participant& p) {
m_player.push_back(&p);
p.initBank();
}
void BettingSystem::leaveGame(Participant& p) {
bool done = false;
unsigned i = 0;
while (!done && i < m_player.size()) {
if (m_player.at(i) == &p) {
m_player.at(i) = nullptr;
done = true;
}
i++;
}
}