-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathedificio.h
More file actions
171 lines (130 loc) · 6.3 KB
/
edificio.h
File metadata and controls
171 lines (130 loc) · 6.3 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
#ifndef EDIFICIO_H
#define EDIFICIO_H
#include <iostream>
using namespace std;
const string BOMBA = "bombas";
const string PIEDRA = "piedra";
const string MADERA = "madera";
const string METAL = "metal";
const string ENERGIA = "energia";
const string COINS = "andycoins";
const string MINA = "mina";
const string ASERRADERO = "aserradero";
const string FABRICA = "fabrica";
const string ESCUELA = "escuela";
const string OBELISCO = "obelisco";
const string PLANTA_ELECTRICA = "planta electrica";
const string MINA_ORO = "mina oro";
class Edificio
{
protected:
int id_jugador;
string nombre;
string diminutivo;
int cantidad_piedra;
int cantidad_madera;
int cantidad_metal;
int brinda;
int maximo_construir;
int construidos_j1;
int construidos_j2;
int vida;
int vida_max;
// PRE: Le paso como parametro la nueva cantidad a modificar.
// POS: Modifica la cantidad de piedra con la nueva cantidad ingresada
void modificar_cantidad_piedra(int nueva_cantidad);
// PRE: Le paso como parametro la nueva cantidad a modificar.
// POS: Modifica la cantidad de metal con la nueva cantidad ingresada
void modificar_cantidad_metal(int nueva_cantidad);
// PRE: Le paso como parametro la nueva cantidad a modificar.
// POS: Modifica la cantidad de madera con la nueva cantidad ingresada
void modificar_cantidad_madera(int nueva_cantidad);
public:
// Constructor
// PRE: -
// POS: Inicializa el edificio con todos los valores en 0
Edificio();
// PRE: -
// POS: Como es una clase abstracta cada edificio va a implementar su nombre, aca se
// establecen las cantidades requeridas a partir del archivo edificios.txt.
Edificio(int id_jugador, int vida, int cantidad_piedra, int cantidad_madera, int cantidad_metal, int maximo_construir);
// PRE: En caso de haberse creado un edificio, se tomaran los valores predeterminados en el edificio selecto.
// POS: Devuelve el nombre del edificio ( getter )
string obtener_nombre();
// PRE: En caso de haberse creado un edificio, se tomaran los valores predeterminados en el edificio selecto.
// POS: Devuelve el diminutivo del edificio, siendo este la primer letra de la palabra ( getter ).
string obtener_diminutivo();
// PRE: En caso de haberse creado un edificio, se tomaran los valores predeterminados en el edificio selecto.
// POS: Devuelve la cantidad de piedra necesaria para construir.
int obtener_cantidad_piedra();
// PRE: En caso de haberse creado un edificio, se tomaran los valores predeterminados en el edificio selecto.
// POS: Devuelve la cantidad de madera necesaria para construir.
int obtener_cantidad_madera();
// PRE: En caso de haberse creado un edificio, se tomaran los valores predeterminados en el edificio selecto.
// POS: Devuelve la cantidad de metal necesaria para construir.
int obtener_cantidad_metal();
//PRE> -
//POST: Devuelve la cantidad de edificios construidos de un determinado jugador.
int obtener_cantidad_construidos();
// PRE: En caso de haberse creado un edificio, se tomaran los valores predeterminados en el edificio selecto.
// POS: Devuelve la cantidad que se encuentran construidos en el mapa hasta el momento.
int obtener_cantidad_construidos(int id_jugador);
// PRE: En caso de haberse creado un edificio, se tomaran los valores predeterminados en el edificio selecto.
// POS: Devuelve la maxima cantidad de edificios que se pueden construir , informacion que viene dada
// en edificio.txt.
int obtener_maximo_construir();
// PRE: En caso de haberse creado un edificio, se tomaran los valores predeterminados en el edificio selecto.
// POS: Devuelve la mitad del material, metodo utilizado en caso de eliminar el edificio.
int obtener_mitad_piedra();
// PRE: En caso de haberse creado un edificio, se tomaran los valores predeterminados en el edificio selecto.
// POS: Devuelve la mitad del material, metodo utilizado en caso de eliminar el edificio.
int obtener_mitad_madera();
// PRE: En caso de haberse creado un edificio, se tomaran los valores predeterminados en el edificio selecto.
// POS: Devuelve la mitad del material, metodo utilizado en caso de eliminar el edificio.
int obtener_mitad_metal();
// PRE: Que la cantidad maxima de edificios no sea menor que la cantidad de edificios construidos.
// POS: Devuelve una resta entre el maximo y la cantidad de edificios construidos, para saber cuantos
// mas puedo construir.
int obtener_cuantos_puedo_construir(int id_jugador);
// PRE: En caso de que se pueda construir edificio sin superar el maximo.
// POS: suma 1 a la cantidad de edificios.
void sumar_cantidad(int id_jugador);
// PRE: En caso de que exista por lo menos 1 edificio creado.
// POS: Resta 1 a cantidad_edificios.
void restar_cantidad(int id_jugador);
// PRE: -
// POS: Por cada uno de los edificios muestra por pantalla su respectivo mensaje.
virtual void mostrar_mensaje() = 0;
// PRE: Dependiendo al edificios que me diriga.
// POS: Devuelve una cierta cantidad de material que brinda el edificio en particular.
virtual int obtener_cantidad_brindada() = 0;
//PRE: -
//POST: Si lo hay, devuelve el id perteneciente al dueño del edificio.
int devolver_id_jugador();
// Destructor
// PRE: -
// POS: -
virtual ~Edificio();
// PRE: Recibe el nombre del material a modificar y la nueva cantidad para modificar.
// POS: Cambia el valor almacenado del material otorgado por la nueva cantidad brindada.
void modificar_cantidad_material(string nombre_material, int nueva_cantidad);
// PRE: -
// POS: Retorna la vida de un edificio.
int devolver_vida();
// PRE: -
// POS: Retorna la vida maxima como entero.
int devolver_vida_max();
// PRE: -
// POS:Le suma uno a la vide del edificio.
void reparar();
// PRE: -
// POS: Le resta la vida al edificio
void atacar();
// PRE: -
// POS: Devuelve el numero de construcciones restantes antes de llegar al maximo de dicho edifico del j1
int obtener_restantes_j1();
// PRE: -
// POS: Devuelve el numero de construcciones restantes antes de llegar al maximo de dicho edifico del j2
int obtener_restantes_j2();
};
#endif // EDIFICIO_H