00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __MONOPOLIO__
00019 #define __MONOPOLIO__
00020
00021 #include "cadenas.h"
00022 #include "jugador.h"
00023
00024 #include <iostream>
00025 #include <string>
00026 #include <set>
00027 using namespace std;
00028
00029 class calle;
00030 class propiedad;
00031
00032 class monopolio {
00033
00034 private:
00035
00036 string _color;
00037 int _numPropiedades;
00038 string _colorAbreviado;
00039
00040
00041 set <propiedad*> _contienePropiedad;
00042
00043
00044 public:
00045
00046
00047 monopolio ();
00048
00049
00050 monopolio ( string color, int numPropiedades );
00051
00052
00053 monopolio (const monopolio& right);
00054
00055
00056 monopolio& operator= (const monopolio& right);
00057
00058
00059 ~monopolio ();
00060
00061
00062 string get_color () const;
00063 int get_numPropiedades () const;
00064 string get_colorAbreviado () const;
00065 set <propiedad*> get_contienePropiedad ();
00066
00067
00068 void set_color ( string color );
00069 void set_numPropiedades ( int numPropiedades );
00070 void set_colorAbreviado ( string colorAbr );
00071
00072
00073
00077 void anyadirPropiedad ( propiedad* nuevaPropiedad );
00078
00082 bool monopolioCompleto ();
00083
00087 int contarPropiedadesConMismoPropietario ( propiedad *prop );
00088
00092 bool existeConstruido ();
00093
00097 void permitirConstruir ();
00098
00102 void prohibirConstruir ();
00103
00107 void hipotecable ( bool permitido );
00108
00112 int maxConstruido ();
00113
00117 int minConstruido ();
00118
00122 bool esCalleMasConstruida ( calle *c );
00123
00128 bool construible ();
00129
00133 bool estaLibre ();
00134
00139 bool ultimaPropiedad ( jugador *j );
00140
00144 bool unicoPoseedor ( jugador *j );
00145
00149 bool poseeParte ( jugador *j );
00150
00154 bool ultimaPropiedadOtroJugador ( jugador *j );
00155 };
00156
00157 inline string monopolio::get_color () const
00158 {
00159 return _color;
00160 }
00161
00162 inline int monopolio::get_numPropiedades () const
00163 {
00164 return _numPropiedades;
00165 }
00166
00167 inline string monopolio::get_colorAbreviado () const
00168 {
00169 return _colorAbreviado;
00170 }
00171
00172 inline set <propiedad*> monopolio::get_contienePropiedad ()
00173 {
00174 return _contienePropiedad;
00175 }
00176
00177
00178
00179
00180
00181
00182
00183 inline void monopolio::set_color ( string color )
00184 {
00185 _color = color;
00186 }
00187
00188 inline void monopolio::set_numPropiedades ( int numPropiedades )
00189 {
00190 _numPropiedades = numPropiedades;
00191 }
00192
00193 inline void monopolio::set_colorAbreviado ( string colorAbr )
00194 {
00195 _colorAbreviado = colorAbr;
00196 }
00197
00198
00199
00200
00201
00202
00203 #endif