mundo.h

Ir para a documentação deste ficheiro.
00001 
00005 #ifndef _MUNDO__H_
00006 #define _MUNDO__H_
00007 
00008 #include "vetor.h"
00009 #include "biota.h"
00010 
00011 /******************************************************************************/
00012 
00017 struct NohGrao
00018 {
00019     Vetor<float> posicao;
00020     struct NohGrao *proximo;
00021 };
00022 
00027 struct NohParede
00028 {
00029     Vetor<float> inicio;
00030     Vetor<float> fim;
00031     struct NohParede *proximo;
00032 };
00033 
00040 class Mundo
00041 {
00042 protected:
00043 
00044     /* Lista de biotas */
00045     struct NohBiota
00046     {
00047         Biota biota;
00048         struct NohBiota *proximo;
00049     }
00050     nohCabecaBiotas;
00051 
00052     /* Noh do biota selecionado */
00053     struct NohBiota *selecionado;
00054     /* Noh do grao selecionado */
00055     struct NohGrao *grao_selecionado;
00056 
00057     struct NohParede nohCabecaParedes;
00058 
00059     /* Fila de graos */
00060     struct NohGrao nohCabecaGraos, *finalGraos;
00061 
00062     /* Operacoes com graos */
00063     /* remove um grao */
00064     bool removerGrao();
00065 
00066 public:
00067 
00068     /* Estatisticas */
00069     struct
00070     {
00071         /* Contagem de biota e graos */
00072         unsigned int numero_biotas;
00073         unsigned int numero_graos;
00074         unsigned long int ciclos;
00075         unsigned long int mortes;
00076         unsigned long int nascimentos;
00077     }
00078     estatisticas;
00079 
00080     /* Propriedades globais */
00081     struct
00082     {
00083         unsigned int teto_energetico;
00084         unsigned int energia_grao;
00085         unsigned int probabilidade_mutacao;
00086         unsigned int intensidade_mutacao;
00087         unsigned int tamanho_x, tamanho_y;
00088     }
00089     propriedades;
00090 
00091     /* Construtores */
00092     Mundo();
00093     Mundo(unsigned int);
00094     Mundo(unsigned int, unsigned int);
00095     Mundo(unsigned int, unsigned int, unsigned int);
00096 
00097     /* Destructor */
00098     void destroy();
00099 
00100     /* Insere um biota no mundo */
00101     void inserirBiota(Biota);
00102     /* Atualiza todos os biotas e graos do mundo */
00103     void atualizar();
00104 
00105     /* Operacoes com biotas */
00106     bool selecionarBiota(Vetor<float>);
00107     void descelecionarBiota();
00108 
00109     /* Operacoes com graos */
00110     void inserirGrao(Vetor<float>);
00111     void posicionarGrao(Vetor<float>);
00112     bool selecionarGrao(Vetor<float>);
00113     void descelecionarGrao();
00114     void removerGraoSelecionado();
00115     bool graoSelecionado();
00116 
00117     /* abrir e salvar mundo */
00118     void salvarMundo(FILE *);
00119     void abrirMundo(FILE *);
00120 
00121     inline Biota getBiotaSelecionado()
00122     {
00123         if (selecionado)
00124             return selecionado->biota;
00125         else
00126             return Biota();
00127     }
00128 
00129     /* Classes amigas */
00130     friend class Biota;
00131 
00132     /* Funcoes amigas */
00133     void desenhar_mundo(Mundo*);
00134 };
00135 
00136 /******************************************************************************/
00137 
00138 #endif /* #ifndef _MUNDO__H_ */

Gerado em Mon May 4 14:52:59 2009 para Simvida por  doxygen 1.5.8