-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtablero.cpp
More file actions
268 lines (228 loc) · 8.59 KB
/
tablero.cpp
File metadata and controls
268 lines (228 loc) · 8.59 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
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
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
#include "tablero.h"
Tablero::Tablero(){
}
Tablero::~Tablero(){
}
void Tablero::setMatrizTablero(){
//Al puntero le agregamos un array de 10 punteros tipo Box
matrizTablero = new Box*[10];
//A cada uno de los punteros del array, agregamos un array de 10 objetos Box, para completar la matriz
for(int i = 0; i <= 9 ; i++){
*(matrizTablero + i) = new Box[10];
}
}
/*!< Crea los box del tablero */
void Tablero::nuevaPartida(){
setMatrizTablero();
//Se cargara la matriz desde el archivo "nuevaPartida.txt"
ifstream configuracion;
configuracion.open("nuevaPartida.txt");
int coordenadasX = 0;
int coordenadasY = 0;
string aux;
//Carga la matriz
for(int coordenadasY = 0; coordenadasY < 10; coordenadasY ++){
for(int coordenadasX = 0; coordenadasX < 10; coordenadasX ++){
getline(configuracion, aux, '|');
matrizTablero[coordenadasX][coordenadasY].setID(stoi(aux));
if(stoi(aux) == 1 || stoi(aux) == 2){
//Se ingresan los valores iniciales del ejercito
int luchadores, tiradores, magos;
cout << "Configuracion Ejercito " << aux << endl;
cout << "Ingrese cantidad Luchadores: ";
cin >> luchadores;
cout << "Ingrese cantidad Tiradores: ";
cin >> tiradores;
cout << "Ingrese cantidad Magos: ";
cin >> magos;
cout << endl;
//Se configura la cantidad de avatares de cada tipo en el Box
matrizTablero[coordenadasX][coordenadasY].setEjercitoInicial(luchadores, tiradores, magos);
//Se guarda las coordenadas del ejercito
setCoordenadasEjercito(stoi(aux), coordenadasX, coordenadasY);
}else if(stoi(aux) == 9){
matrizTablero[coordenadasX][coordenadasY].setTorretaInicial();
TorretaX = coordenadasX;
TorretaY = coordenadasY;
}
}
}
configuracion.close();
}
/*!< Carga los valores iniciales para una nueva partida */
void Tablero::cargarPartida(){
setMatrizTablero();
//Se cargara la matriz desde el archivo "cargarPartida.txt"
ifstream configuracion;
configuracion.open("partidaGuardada.txt");
string aux;
int coordenadasX = 0;
int coordenadasY = 0;
//La primera linea del archivo es el turno ha empezar
getline(configuracion, aux, '|');
turnoInicial = stoi(aux);
//Carga la matriz
for(int coordenadasY = 0; coordenadasY < 10; coordenadasY ++){
for(int coordenadasX = 0; coordenadasX < 10; coordenadasX ++){
getline(configuracion, aux, '|');
//Se guarda las coordenadas del ejercito
matrizTablero[coordenadasX][coordenadasY].setID(stoi(aux));
if(stoi(aux) == 1 || stoi(aux) == 2){
setCoordenadasEjercito(stoi(aux), coordenadasX, coordenadasY);
}else if(stoi(aux) == 9){
TorretaX = coordenadasX;
TorretaY = coordenadasY;
}
}
}
//Carga las estadisticas de los ejercitos
vector<float> vector;
//Ejercito1
getline(configuracion, aux, '|');
int cantidadLuchadores1 = stoi(aux);
for(int i = 0; i < cantidadLuchadores1; i++){
getline(configuracion, aux, '|');
vector.push_back(stof(aux));
}
getline(configuracion, aux, '|');
int cantidadTiradores1 = stoi(aux);
for(int i = 0; i < cantidadTiradores1; i++){
getline(configuracion, aux, '|');
vector.push_back(stof(aux));
}
getline(configuracion, aux, '|');
int cantidadMagos1 = stoi(aux);
for(int i = 0; i < cantidadMagos1; i++){
getline(configuracion, aux, '|');
vector.push_back(stof(aux));
}
matrizTablero[Ejercito1X][Ejercito1Y].ejercito.setEjercito(cantidadLuchadores1, cantidadTiradores1, cantidadMagos1, vector);
vector.clear();
//Ejercito2
getline(configuracion, aux, '|');
int cantidadLuchadores2 = stoi(aux);
for(int i = 0; i < cantidadLuchadores2; i++){
getline(configuracion, aux, '|');
vector.push_back(stof(aux));
}
getline(configuracion, aux, '|');
int cantidadTiradores2 = stoi(aux);
for(int i = 0; i < cantidadTiradores2; i++){
getline(configuracion, aux, '|');
vector.push_back(stof(aux));
}
getline(configuracion, aux, '|');
int cantidadMagos2 = stoi(aux);
for(int i = 0; i < cantidadMagos2; i++){
getline(configuracion, aux, '|');
vector.push_back(stof(aux));
}
matrizTablero[Ejercito2X][Ejercito2Y].ejercito.setEjercito(cantidadLuchadores1, cantidadTiradores1, cantidadMagos1, vector);
//Valores de Torreta
int valoresTorreta [5];
for(int i = 0; i < 5; i++){
getline(configuracion, aux, '|');
valoresTorreta[i] = stoi(aux);
}
matrizTablero[TorretaX][TorretaY].setTorreta(valoresTorreta);
//Se cierra el archivo plano
configuracion.close();
}
/*!< Lee el archivo y guarda su determinada información en cada uno de los boxes */
void Tablero::guardarPartida(int _Turno){
ofstream guardarPartida;
guardarPartida.open("partidaGuardada.txt");
//Guarda el turno en la primera linea del archivo
guardarPartida << _Turno << " |\n";
//Guarda la matriz
for(int coordenadasY = 0; coordenadasY < 10; coordenadasY ++){
guardarPartida << endl;
for(int coordenadasX = 0; coordenadasX < 10; coordenadasX ++){
guardarPartida << matrizTablero[coordenadasX][coordenadasY].getID() << " |";
}
}
guardarPartida << endl << endl;
//Guarda la informacion de los ejercitos y sus vidas en un vector
//Ejercito 1
int vectorEjercito1 = 0;
int vectorEjercito2 = 0;
guardarPartida << matrizTablero[Ejercito1X][Ejercito1Y].ejercito.Luchadores << " |\n";
for(int i = 0; i < matrizTablero[Ejercito1X][Ejercito1Y].ejercito.Luchadores; i++){
guardarPartida << matrizTablero[Ejercito1X][Ejercito1Y].ejercito.ejercitoAvatar[vectorEjercito1] -> getVida() << " |";
vectorEjercito1 ++;
}
guardarPartida << endl;
guardarPartida << matrizTablero[Ejercito1X][Ejercito1Y].ejercito.Tiradores << " |\n";
for(int i = 0; i < matrizTablero[Ejercito1X][Ejercito1Y].ejercito.Tiradores; i++){
guardarPartida << matrizTablero[Ejercito1X][Ejercito1Y].ejercito.ejercitoAvatar[vectorEjercito1] -> getVida() << " |";
vectorEjercito1 ++;
}
guardarPartida << endl;
guardarPartida << matrizTablero[Ejercito1X][Ejercito1Y].ejercito.Magos << " |\n";
for(int i = 0; i < matrizTablero[Ejercito1X][Ejercito1Y].ejercito.Magos; i++){
guardarPartida << matrizTablero[Ejercito1X][Ejercito1Y].ejercito.ejercitoAvatar[vectorEjercito1] -> getVida() << " |";
vectorEjercito1 ++;
}
guardarPartida << endl << endl;
//Ejercito 2
guardarPartida << matrizTablero[Ejercito2X][Ejercito2Y].ejercito.Luchadores << " |\n";
for(int i = 0; i < matrizTablero[Ejercito2X][Ejercito2Y].ejercito.Luchadores; i++){
guardarPartida << matrizTablero[Ejercito2X][Ejercito2Y].ejercito.ejercitoAvatar[vectorEjercito2] -> getVida() << " |";
vectorEjercito2 ++;
}
guardarPartida << endl;
guardarPartida << matrizTablero[Ejercito2X][Ejercito2Y].ejercito.Tiradores << " |\n";
for(int i = 0; i < matrizTablero[Ejercito2X][Ejercito2Y].ejercito.Tiradores; i++){
guardarPartida << matrizTablero[Ejercito2X][Ejercito2Y].ejercito.ejercitoAvatar[vectorEjercito2] -> getVida() << " |";
vectorEjercito2 ++;
}
guardarPartida << endl;
guardarPartida << matrizTablero[Ejercito2X][Ejercito2Y].ejercito.Magos << " |\n";
for(int i = 0; i < matrizTablero[Ejercito2X][Ejercito2Y].ejercito.Magos; i++){
guardarPartida << matrizTablero[Ejercito2X][Ejercito2Y].ejercito.ejercitoAvatar[vectorEjercito2] -> getVida() << " |";
vectorEjercito2 ++;
}
//Guarda la informacion de la torreta
guardarPartida << endl << endl << matrizTablero[TorretaX][TorretaY].getVidaTorreta() << " |\n";
if(matrizTablero[TorretaX][TorretaY].Norte){
guardarPartida << "1 |\n";
}else{
guardarPartida << "0 |\n";
}
if(matrizTablero[TorretaX][TorretaY].Sur){
guardarPartida << "1 |\n";
}else{
guardarPartida << "0 |\n";
}
if(matrizTablero[TorretaX][TorretaY].Este){
guardarPartida << "1 |\n";
}else{
guardarPartida << "0 |\n";
}
if(matrizTablero[TorretaX][TorretaY].Oeste){
guardarPartida << "1 |";
}else{
guardarPartida << "0 |";
}
guardarPartida.close();
}
/*!< Guarda el estado de la partida actual en el archivo "partidaGuardada" */
void Tablero::imprimirTablero(){
for(int y = 0; y <= 9; y ++){
for(int x = 0; x <= 9; x ++){
cout << matrizTablero[x][y].getID() << "\t";
}
cout << endl << endl;
}
}
/*!< Recorre la matriz del tablero e imprime sus valores, "1" para ejercito 1, "2" para ejercito 2 y "9" para la torreta */
void Tablero::setCoordenadasEjercito(int _Ejercito, int coordenadasX, int coordenadasY){
if(_Ejercito == 1){
Ejercito1X = coordenadasX;
Ejercito1Y = coordenadasY;
}else{
Ejercito2X = coordenadasX;
Ejercito2Y = coordenadasY;
}
}
/*!< Guarda las coordenadas del ejercito */