-
Notifications
You must be signed in to change notification settings - Fork 9
/
Executive.cpp
224 lines (188 loc) · 6.29 KB
/
Executive.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
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
#include "Executive.h"
#include "Board.h"
#include "Player.h"
#include <iostream>
using namespace std;
Executive::Executive()
{
}
Executive::~Executive()
{
}
void Executive::run()
{
system("clear");
string tempinput;
cout << "It is time for Batttle Ship!!!\n";
do
{
cout<<"Please entere a number between 1-6 of how many ships you would like to play with this game:\n";
cin>>tempinput;
}while(!(tempinput=="1" || tempinput=="2" || tempinput=="3" || tempinput=="4" || tempinput=="5" || tempinput=="6")); //runs loop until a valid number of ships is entered into the program
ships=stoi(tempinput);
cout<<"you have selected: "<<ships <<" ships to play with \n";
player1ships = ships;
player2ships = ships;
cout << "Place the ships for player 1\n"; // place ships for palyer 1
place_ship(ships, player1);
system("clear");
cout << "Place the ships for player 2\n"; // place ships for palyer 2
place_ship(ships, player2);
system("clear");
game_start(player1,player2,ships);
return;
}
void Executive::place_ship(int size, Player& new_player)
{
string tempinput;
int num = 1; // reocord the size of ship
int row = 0;
char column = ' ';
do{
new_player.getGameBoard(); //returns the hidden board of the player class and prints it
do
{
cout<<"Where would you like to place a ship with size 1x" << num << "?\n";
cout<<"The rest of the ship will extend down or right from your selected coordinate.\n";
cout<<"If the placement is invalid your ship will not be placed and you will be prompted for new placemnet information.\n";
do
{
cout<<"Please enter a number for the row you would wish to place a ship in.\n";
cin>>tempinput;
}while(!(tempinput=="1" || tempinput=="2" || tempinput=="3" || tempinput=="4" || tempinput=="5" || tempinput=="6" || tempinput=="7" || tempinput=="8" || tempinput=="9"));
row=stoi(tempinput);
cout<<"Please enter a letter for the column you wish to place a ship in.\n";
cin>>column;
}while (!new_player.placeShip(row,column,num));// places the ship in the hidden board where the player has specified.
cout << "Placed!\n";
//new_player.getGameBoard(); // a check to make sure that the ship has been put in the correct spot
num++;
} while(num < size+1);
return;
}
void Executive::game_start(Player& player1, Player& player2, int size)
{
int player1_count = 0; //keeps a running total of the number of hits scored on each players side
int player2_count = 0;
int max_count = size*(1+size)/2; //uses the given amount of ships(size) to check how many hits each player can have before they are out of ships.
char player_choice = 'n';
int row = 0;
char column = ' ';
int column_num = 0;
string tempinput;
do
{
cout << "======================PLAYER1=======================\n\n";
cout << "Opponent's Board: choose a coordinate to fire at.\n";
player2.getHiddenBoard();
do
{
cout << "Enter the the row number: "; // get the row
cin>>tempinput;
}while(!(tempinput=="1" || tempinput=="2" || tempinput=="3" || tempinput=="4" || tempinput=="5" || tempinput=="6" || tempinput=="7" || tempinput=="8" || tempinput=="9"));
row=stoi(tempinput);
do
{
cout << "Enter the column character: "; // get the column
cin >> column;
column_num = (char)column - 65;
}while (column_num<0 || column_num >10);//Boundary
system("clear");
if (player2.checkHit(row, column))
{
player2.get_hit(row,column);
player2_count++;
cout << "YOU HIT!\n";
player2.getHiddenBoard();
if (player2_count == max_count) //check if Player1 wins
{
break;
}
}
else
{
cout << "YOU MISSED!\n";
player2.getHiddenBoard();
}
cout << "Do you want to see your Board(y/n)?\n";
cin >> player_choice;
if(player_choice == 'y')
{
cout <<"YOUR BOARD\n";
player1.getGameBoard();
}
do
{
cout << "End Turn(y/n)?\n";
cin >> player_choice;
}while (player_choice != 'y');
system("clear");
do
{
cout << "Player2: Begin Turn(y/n)?\n";
cin >> player_choice;
}while (player_choice != 'y');
system("clear");
cout << "======================PLAYER2=======================\n\n";
cout << "Opponent's Board: choose a coordinate to fire at.\n";
player1.getHiddenBoard();
do
{
cout << "Enter the the row number: "; // get the row
cin>>tempinput;
}while(!(tempinput=="1" || tempinput=="2" || tempinput=="3" || tempinput=="4" || tempinput=="5" || tempinput=="6" || tempinput=="7" || tempinput=="8" || tempinput=="9"));
row=stoi(tempinput);
do
{
cout << "Enter the column character: "; // get the column
cin >> column;
column_num = (char)column - 65;
}while (column_num<0 || column_num >10); //Boundary
system("clear");
if (player1.checkHit(row, column))
{
player1.get_hit(row,column);
player1_count++;
cout << "YOU HIT!\n";
player1.getHiddenBoard();
if (player1_count == max_count) //check if Player2 wins
{
break;
}
}
else
{
cout << "YOU MISS!\n";
player1.getHiddenBoard();
}
cout << "Do you want to see your Board(y/n)?\n";
cin >> player_choice;
if(player_choice == 'y')
{
cout <<"YOUR BOARD\n";
player2.getGameBoard();
}
else{}
do
{
cout << "End Turn(y/n)?\n";
cin >> player_choice;
}while (player_choice != 'y');
system("clear");
do
{
cout << "Player1: Begin Turn(y/n)?\n";
cin >> player_choice;
}while (player_choice != 'y');
system("clear");
}while (player1_count < max_count && player2_count < max_count);
if (player1_count == max_count)
{
cout << "Player2 WINS!\n";
}
else
{
cout << "Player1 WINS!\n";
}
return;
}