Página principal | Lista de namespace | Lista de archivos

tablero.h

00001 /***********************************************************************************
00002  *  CLASE TABLERO
00003  *  Clase que representa un tablero de street master's que es la encargada de gestionar
00004  *  una partida completa, que relaciona las casillas con los jugadores y el resto de
00005  *  elementos de una partida del juego.
00006  *  Esta clase además de servir para comunicar dichas clases será la encargada de guardar
00007  *  la información propia de una partida.
00008  *
00009  *  Autor: Javier Aragón Zabalegui (PFC para la uc3m: street Master's)
00010  *  Contacto: 100039831@alumnos.uc3m.es
00011  *  version 1.0
00012  **********************************************************************************/
00013 
00014 
00015 #ifndef __TABLERO__
00016 #define __TABLERO__
00017 
00018 #include "cadenas.h"
00019 #include "fichero.h"
00020 
00021 #include "configuracion.h"
00022 
00023 #include "jugador.h"
00024 #include "jugador_reglas.h"
00025 #include "calle.h"
00026 #include "casilla.h"
00027 #include "estacion.h"
00028 #include "impuesto.h"
00029 #include "impuesto5.h"
00030 #include "salida.h"
00031 #include "servicio.h"
00032 #include "carcel.h"
00033 #include "encarceladora.h"
00034 #include "casilla_tarjetas.h"
00035 #include "mazo.h"
00036 #include "banca.h"
00037 
00038 #include <vector>
00039 #include <map>
00040 #include <string>
00041 #include <iostream>
00042 #include <fstream>
00043 using namespace std;
00044 
00045 class tablero {
00046   
00047  private:
00048   //Atributos
00049   bool _partidaAbierta;
00050   string _nombrePartida;
00051   string _ciudad;
00052   string _moneda;
00053   string _fichCasillas;
00054   string _fichSuerte;
00055   string _fichCajaComunidad;  
00056   long _dineroInicial;
00057   int _numJugadores;
00058   static int _numCasillas;
00059   static int _salida;           //Casilla de salida
00060   static int _turno;
00061   int _jugadorActual;           //indica el jugador que controla el juego
00062   static bool _subastas;
00063 
00064   //Relaciones
00070   static vector <casilla*> contiene; 
00071   static vector <jugador*> juega;
00072   map < string, mazo* > _mazo;
00073   static banca* _banca;
00074   
00097   int casilla_tipo_calle ( string linea );
00098 
00103   int casilla_tipo_servicio ( string linea );
00104   
00109   int casilla_tipo_estacion ( string linea );
00110 
00115   int casilla_tipo_impuesto ( string linea );
00116   
00122   int casilla_tipo_impuesto_especial ( string linea );
00123   
00129   int casilla_tipo_salida ( string linea );
00130 
00136   int casilla_tipo_parking ( string linea );
00137   
00142   int casilla_tipo_encarceladora ( string linea );
00143 
00149   int casilla_tipo_carcel ( string linea );
00150   
00156   int casilla_tipo_tarjetas ( string linea );
00157   
00158  public:
00159   
00160   // Constructor por defecto
00161   tablero ();
00162   
00163   // Constructor explícito
00164   tablero ( string nombrePartida, string ciudad, string moneda, string fichCasillas, 
00165             string fichSuerte, string fichCajaComunidad, int numJugadores, int numCasillas,
00166             bool partidaAbierta, int salida, int turno, int jugadorActual, long dineroInicial, 
00167             bool subastas );
00168   
00169   // Copy constructor
00170   tablero (const tablero& right);
00171   
00172   /* OPERADORES */
00173 
00174   // Operador de asignación  
00175   tablero& operator= (const tablero& right);
00176   casilla *operator[](unsigned int i);
00177   
00178   // Operador de salida
00198   friend ostream& operator<< ( ostream& os, tablero &tab );
00199 
00200   // Destructor
00201   ~tablero ();
00202   
00203   // Métodos GET
00204   string get_nombrePartida () const;  
00205   string get_ciudad () const;
00206   string get_moneda () const;
00207   string get_fichCasillas () const;
00208   string get_fichSuerte () const;
00209   string get_fichCajaComunidad () const;
00210   long get_dineroInicial () const;
00211   int get_numJugadores () const;
00212   static int get_numCasillas ();
00213   bool get_partidaAbierta () const;
00214   static int get_salida ();
00215   static int get_turno ();
00216   int get_jugadorActual () const;
00217   static banca *get_banca ();
00218   static bool get_subastas ();
00219   
00220 
00221   // Métodos SET
00222   void set_nombrePartida ( string nombre );
00223   void set_ciudad ( string ciudad );
00224   void set_moneda ( string moneda );
00225   void set_fichCasillas ( string nombreFichero );
00226   void set_fichSuerte ( string nombreFichero );
00227   void set_fichCajaComunidad ( string nombreFichero );
00228   void set_dineroInicial ( long dineroInicial );
00229   void set_numJugadores ( int numJugadores );
00230   static void set_numCasillas ( int numCasillas );
00231   void set_partidaAbierta ( bool abierta );
00232   static void set_salida ( int salida );
00233   static void set_turno ( int turno );
00234   void set_jugadorActual ( int jugadorActual );
00235   void set_mazo ( string tipo, mazo* mazoTarjetas );
00236   static void set_banca ( banca *b );
00237   static void set_subastas ( bool subastas);
00238   
00239   //otros métodos
00240   
00245   string tablero::obtenerNombreJugador ( int numeroJugador );
00246 
00254   int cargar_casillas ();
00255 
00260   int guardar ( string fichero );
00261   
00266   void cargarPropiedades ( jugador *j, string lista );
00267 
00272   void cargarTarjetas ( jugador *j, string lista );
00273 
00279   int cargar ( string fichero, string &prompt );
00280   
00286   bool existenDeudas ();
00287   
00292   bool existenDeudas ( int idJugador);
00293 
00298   string verMorosos ();
00299   
00312   bool pagarDeudas ();
00313 
00319   void redistribuirBienes ( jugador * j );
00320 
00325   void subastarLista ( vector <jugador*> acreedores, list <propiedad*> listaPropiedades, jugador *propietario );
00326 
00333   static void subastarPropiedad ( propiedad *p, vector<jugador*> interesados );
00334   
00340   int declararBancarrota ( int numeroJugador);
00341 
00347   int declararBancarrota ( jugador *j );
00348 
00354   string dibujarTablero ( int casillasArriba, int casillasAbajo, int casillasDcha, int casillasIzqda );
00355 
00360   void anyadir_jugador ( jugador* nuevo );
00361 
00366   void eliminarJugador ( jugador* player );
00367 
00374   int anyadir_casilla ( casilla *nuevo );
00375 
00379   bool repetido ( string nombre );
00380   
00385   int incluir_jugador ( int id, string nombre, string color, int jugadorAuto );
00386 
00391   int incluirBanca ( int numCasas, int numHoteles );
00392 
00398   jugador* buscar_jugador_color ( string color ) const;
00399 
00406   int buscar_jugador_color_int ( string color ) const;
00407 
00413   int buscar_jugador_nombre_int ( string nombre ) const;
00414   
00415   
00416   // Metodos que crean una casilla y la incluyen dentro del tablero 
00417 
00424   void incluir_calle ( int numero_casilla, string nombre, string nombreCorto, string color, 
00425                        long precio, long hipoteca, long alquiler0, long alquiler1, long alquiler2, 
00426                        long alquiler3, long alquiler4, long alquiler_h, int precio_casa, 
00427                        int precio_hotel );
00428 
00435   void incluir_servicio ( int numero_casilla, string nombre, string nombreCorto, long precio, 
00436                           long hipoteca, int multiplicador1, int multiplicador2 );
00437 
00444   void incluir_estacion ( int numero_casilla, string nombre, string nombreCorto, long precio, 
00445                           long hipoteca, long alquiler1, long alquiler2, long alquiler3, 
00446                           long alquiler4 );
00447 
00451   void incluir_impuesto ( int numero_casilla, string nombre, string nombreCorto, int precio );
00452 
00456   void incluir_impuesto_especial ( int numero_casilla, string nombre, string nombreCorto, int precio, 
00457                                    int tpc );
00458 
00463   void incluir_casilla_tarjetas ( int numero_casilla, string nombre, string nombreCorto, string mazo );
00464 
00468   void incluir_salida ( int numero_casilla, string nombre, string nombreCorto, long sueldo );
00469 
00473   void incluir_casilla_generica ( int numero_casilla, string nombre, string nombreCorto );
00474 
00478   void incluir_carcel ( int numeroCasilla, string nombre, string nombreCorto, int maxTurnos, long multa );
00479 
00483   void incluir_encarceladora ( int numeroCasilla, string nombre, string nombreCorto );
00484 
00489   void cerrar ();
00490 
00495   int recolocar ( void );
00496 
00503   bool verificar ( void );
00504 
00510   void colocarJugador ( int numJugador, int numCasilla );
00511 
00518   string elegirOrdenTirada ( void );
00519 
00524   static string dibujarMovimiento ( int casillaOrigen, int casillaDestino );
00525 
00529   static int subastar ( propiedad *p);
00530 
00536   int ofrecerLibertad ( jugador* j );
00537 
00542   string evaluarAccion ( jugador* j, int resultadoAccion );
00543 
00549   string moverJugador ();
00550   
00555   void razonarJugadores ( string &prompt );
00556 
00561   string leyenda ();
00562 
00568   int crearMazo ( string tipo );
00569 
00574   int ver_lista_jugadores ( );
00575   
00581   int ver_jugador ( string color );
00582 
00587   int ver_jugador ( int pos );
00588 
00593   string cambiarJugadorActual ( int nuevoJugadorActual );
00594 
00599   string cambiarJugadorActual ( string campo, string valor );
00600 
00604   string verHipotecables ();
00605   
00609   string verHipotecados ();
00610 
00614   string verConstruibles ();  
00615 
00619   string verConstruidas ();
00620 
00626   int hipotecar ( string atributo, string valor );
00627   
00634   int deshipotecar ( string atributo, string valor );
00635 
00643   int construir ( string atributo, string valor );
00644 
00652   int vender ( string atributo, string valor );
00653   
00658   static casilla* buscarSiguienteCasillaTipo ( jugador* j,string tipo );
00659 
00665   static int buscarSiguienteCasillaTipoInt ( jugador* j, string tipo );
00666   
00671   static void encarcelar ( jugador* j );
00672 
00676   static void colocarJugador ( jugador* j, int numCasilla );
00677   
00682   static int moverA ( jugador* j, int numCasillaFinal );  
00683   
00689   static int mover( jugador* j, int totalDados, bool tiradaDoble, bool salario );
00690 
00695   static int moverAAccion ( jugador* j, int numCasillaFinal );
00696 
00702   static int pagarATodos ( jugador *j, long cantidad );
00703 
00707   static void pagarSalario ( jugador *j, int numCasillaFinal );
00708 
00712   void verBanca ();
00713 
00717   void verCasilla ( int num );
00718     
00723   void negociar ();
00724 
00728   static int estacionesLibres ();
00729 
00733   static int serviciosOcupados ();
00734 
00738   static int totalPropiedades ();
00739   
00743   int propiedadesLibres ();
00744   
00748   static int obtenerCasasDisponibles();
00749 
00753   static int obtenerHotelesDisponibles();
00754   
00758   bool jugadorClienteIA ();
00759 
00763   bool existeClienteIA ();
00764 
00770   void utilidadEsperadaHipotecar ( long cantidad );
00771 
00777   void utilidadEsperadaVender ( long cantidad );
00778 
00783   void utilidadEsperadaDeshipotecar ( long cantidad );
00784 
00790   void utilidadEsperadaConstruir ( long cantidad );
00791 
00796   void mostrarLog ( string colorJugador, string tipoLog );
00797 
00801   void guardarLog ();  
00802 
00803 };
00804 
00805 /* GET */
00806 
00807 inline string tablero::get_nombrePartida () const
00808 {
00809   return _nombrePartida;
00810 }
00811 
00812 inline string tablero::get_ciudad () const
00813 {
00814   return _ciudad;
00815 }
00816 
00817 inline string tablero::get_moneda () const
00818 {
00819   return _moneda;
00820 }
00821 
00822 inline string tablero::get_fichCasillas () const
00823 {
00824   return _fichCasillas;
00825 }
00826 
00827 inline string tablero::get_fichSuerte () const
00828 {
00829   return _fichSuerte;
00830 }
00831 
00832 inline string tablero::get_fichCajaComunidad () const
00833 {
00834   return _fichCajaComunidad;
00835 }
00836 
00837 inline long tablero::get_dineroInicial () const
00838 {
00839   return _dineroInicial;
00840 }
00841 
00842 inline int tablero::get_numJugadores () const
00843 {
00844   return _numJugadores;
00845 }
00846 
00847 inline int tablero::get_numCasillas ()
00848 {
00849   return _numCasillas;
00850 }
00851 
00852 inline bool tablero::get_partidaAbierta () const
00853 {
00854   return _partidaAbierta;
00855 }
00856 
00857 inline int tablero::get_salida ()
00858 {
00859   return tablero::_salida;
00860 }
00861 
00862 inline int tablero::get_turno ()
00863 {
00864   return tablero::_turno;
00865 }
00866 
00867 inline int tablero::get_jugadorActual () const
00868 {
00869   return _jugadorActual;
00870 }
00871 
00872 inline banca *tablero::get_banca ()
00873 {
00874   return _banca;
00875 }
00876 
00877 inline bool tablero::get_subastas ()
00878 {
00879   return _subastas;
00880 }
00881 
00882 /* SET */
00883 
00884 inline void tablero::set_nombrePartida ( string nombre )
00885 {
00886   _nombrePartida = nombre;
00887 }
00888 
00889 inline void tablero::set_ciudad ( string ciudad )
00890 {
00891   _ciudad = ciudad;
00892 }
00893 
00894 inline void tablero::set_moneda ( string moneda )
00895 {
00896   _moneda = moneda;
00897 }
00898 
00899 inline void tablero::set_fichCasillas ( string nombreFichero )
00900 {
00901   _fichCasillas = nombreFichero;
00902 }
00903 
00904 inline void tablero::set_fichSuerte ( string nombreFichero )
00905 {
00906   _fichSuerte = nombreFichero;
00907 }
00908 
00909 inline void tablero::set_fichCajaComunidad ( string nombreFichero )
00910 {
00911   _fichCajaComunidad = nombreFichero;
00912 }
00913 
00914 inline void tablero::set_dineroInicial ( long dineroInicial )
00915 {
00916   _dineroInicial = dineroInicial;
00917 }
00918 
00919 inline void tablero::set_numJugadores ( int numJugadores )
00920 {
00921   _numJugadores = numJugadores;
00922 }
00923 
00924 inline void tablero::set_numCasillas ( int numCasillas )
00925 {
00926   _numCasillas = numCasillas;
00927 }
00928 
00929 inline void tablero::set_partidaAbierta ( bool abierta )
00930 {
00931   _partidaAbierta = abierta;
00932 }
00933 
00934 inline void tablero::set_salida ( int salida )
00935 {
00936   tablero::_salida = salida;
00937 }
00938 
00939 inline void tablero::set_turno ( int turno )
00940 {
00941   tablero::_turno = turno;
00942 }
00943 
00944 inline void tablero::set_jugadorActual ( int jugadorActual )
00945 {
00946   _jugadorActual = jugadorActual;
00947 }
00948 
00949 inline void tablero::set_mazo ( string tipo, mazo* mazoTarjetas )
00950 {
00951   _mazo[tipo] = mazoTarjetas;
00952 }
00953 
00954 inline void tablero::set_banca ( banca *b )
00955 {
00956   _banca = b;
00957 }
00958 
00959 inline void tablero::set_subastas ( bool subastas )
00960 {
00961   _subastas = subastas;
00962 }
00963 
00964 #endif

Generado el Fri Jun 30 12:38:29 2006 para Street Master's por  doxygen 1.3.9.1