-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.cpp
More file actions
137 lines (115 loc) · 3.25 KB
/
main.cpp
File metadata and controls
137 lines (115 loc) · 3.25 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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#ifndef TESTING
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include "Dice.h"
#include "QwintoPlayer.h"
#include "QwintoRow.h"
#include "QwintoScoreSheet.h"
#include "QwintoPlayer.h"
#include "QwixxPlayer.h"
#include "QwixxRow.h"
#include "QwixxScoreSheet.h"
int main(int argc, char const *argv[])
{
std::vector<Player*> players;
RollOfDice rd;
std::cout << "Welcome to Qwinto/Qwixx" << std::endl;
std::cout << "Please select game version" << std::endl;
std::cout << "Qwinto (1), Qwixx(2)" << std::endl;
//TODO: loop back if input is invalid
int gameVers = 0;
std::cin >> gameVers;
std::cin.ignore(256, '\n');
int playerNum = 0;
std::cout << "How many players?" << std::endl;
std::cin >> playerNum;
std::cin.ignore(256, '\n');
std::vector<std::string> playerNames;
std::string name;
std::cout << std::endl;
for (int i = 0; i < playerNum; i++) {
std::cout << "Player " << i + 1 << " Name: " << std::flush;
std::cin >> name;
std::cin.ignore(256, '\n');
playerNames.push_back(name);
}
std::cout << std::endl;
players.reserve(playerNum);
// Qwinto Game
if (gameVers == 1)
{
for (auto name : playerNames) {
players.push_back(new QwintoPlayer(name));
}
rd.push_back(Dice(Color::RED));
rd.push_back(Dice(Color::YELLOW));
rd.push_back(Dice(Color::BLUE));
}
// Qwixx Game
else if (gameVers == 2)
{
for (auto name : playerNames) {
players.push_back(new QwixxPlayer(name));
}
rd.push_back(Dice(Color::RED));
rd.push_back(Dice(Color::YELLOW));
rd.push_back(Dice(Color::GREEN));
rd.push_back(Dice(Color::BLUE));
rd.push_back(Dice(Color::WHITE_1));
rd.push_back(Dice(Color::WHITE_2));
}
bool endCond = false;
while (!endCond) {
for(auto active_player : players)
{
RollOfDice current_roll = active_player->inputBeforeRoll(rd);
for(auto player : players)
{
player->inputAfterRoll(current_roll);
}
}
//Checking end Condition
for(auto player : players){
endCond = endCond || !*player;
}
}
//print ScoreSheets and Display Winner
int max = 0, score;
std::string winner;
for(auto player : players)
{
score = player->printScoreSheet();
if (score > max)
{
max = score;
winner = player->getName();
}
}
std::cout << "Winner :" << winner << '!' << std::endl;
//delete players
for(auto player : players)
delete player;
/*
Ask player to choose game version, number of players and names of players.
Create the corresponding players and RollOfDice for the game.
while end condition is not reached
next player takes a turn i.e., becomes active
get input from active player before roll
roll dice and show result
print scoresheet of active player
get input from active player after roll
score dice according to input from active player
loop over all non - active players
print scoresheet of non - active player
get input from non - active player
score dice according to input
loop over all players
calculate points for player
print scoresheet
print overall winner
*/
return 0;
}
#endif