-
Notifications
You must be signed in to change notification settings - Fork 0
/
eraGame.cpp
104 lines (80 loc) · 2.69 KB
/
eraGame.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
#include "eraGame.h"
#include "Board.h"
#include "Stones.h"
#include "JSONParser.h"
#include <cstdlib> //EXIT_SUCCESS; EXIT_FAILURE
int charIntToInt(char charInt)
{
const short int START_ASCII_NUMBERS = 48;
return (charInt - START_ASCII_NUMBERS);
}
PlayersEnum checkArguments(int argc, char **argv)
{
if (argc == 1)
return PlayersEnum::computer;
else if (std::string(argv[1]) == "--player1")
return PlayersEnum::player;
else if (std::string(argv[1]) == "--help")
{
std::cout << "ERA Game is turn-based strategy game between two players.\nThere are 16 unique stones with 4 characteristics, which are placed into 4x4 board. All stones are visible to both players. Player, who completes four stones with at least one same characteristic in row, column or diagonal, is winner." << std::endl;
exit(EXIT_SUCCESS);
}
else
{
std::cerr << "Wrong program parameters." << std::endl;
exit(EXIT_FAILURE);
}
}
int main(int argc, char **argv)
{
PlayersEnum chosenPlayer = checkArguments(argc, argv);
Board eraBoard;
Stones eraStones;
JSONParser eraJSON;
std::string chosenStone, chosenField;
eraBoard.printBoard();
eraStones.printFreeStones();
//step 1
if (chosenPlayer == PlayersEnum::player)
chosenStone = gameLogic::chooseStoneAI(eraStones);
//
else
chosenStone = gameLogic::chooseStonePlayer(eraJSON, eraStones);
while (true)
{
//step 2
//player plays
if (chosenPlayer == PlayersEnum::player)
chosenField = gameLogic::placeStonePlayer(eraJSON, eraBoard, eraStones, chosenStone);
else
chosenField = gameLogic::placeStoneAI(eraBoard, eraStones, chosenStone);
eraBoard.printBoard();
eraStones.printFreeStones();
//step 3
//kdyz hraju ja, tak nehlede na kdo zacal -> vyhra
eraBoard.gameStatus(chosenField, chosenPlayer);
//step 4
if (chosenPlayer == PlayersEnum::player)
chosenStone = gameLogic::chooseStonePlayer(eraJSON, eraStones);
else
chosenStone = gameLogic::chooseStoneAI(eraStones);
//step 5
if (chosenPlayer == PlayersEnum::player)
chosenField = gameLogic::placeStoneAI(eraBoard, eraStones, chosenStone);
else
chosenField = gameLogic::placeStonePlayer(eraJSON, eraBoard, eraStones, chosenStone);
eraBoard.printBoard();
eraStones.printFreeStones();
//step 6
if (chosenPlayer == PlayersEnum::player)
eraBoard.gameStatus(chosenField, PlayersEnum::computer);
else
eraBoard.gameStatus(chosenField, PlayersEnum::player);
//step 7
if (chosenPlayer == PlayersEnum::player)
chosenStone = gameLogic::chooseStoneAI(eraStones);
else
chosenStone = gameLogic::chooseStonePlayer(eraJSON, eraStones);
}
return EXIT_SUCCESS;
}