|
TProcura
Biblioteca em C++ para testes paramétricos de algoritmos, e coleção de algoritmos de procura e otimização
|
#include <JogoDoGalo.h>
Public Member Functions | |
| CJogoDoGalo (void) | |
| ~CJogoDoGalo (void) | |
| TProcuraConstrutiva * | Duplicar (void) |
| Cria um objecto que é uma cópia deste. | |
| void | Copiar (TProcuraConstrutiva *objecto) |
| void | Inicializar (void) |
| Coloca o objecto no estado inicial da procura. | |
| void | Sucessores (TVector< TNo > &sucessores) |
| Coloca em sucessores a lista de estados sucessores. | |
| bool | SolucaoCompleta (void) |
| Verifica se o estado actual é objectivo (é uma solução completa) | |
| void | Debug (bool completo=true) override |
| Mostra o estado no ecrã, para debug. | |
| TString | Acao (TProcuraConstrutiva *sucessor) |
| void | TesteManual (const char *nome) |
| void | Codifica (TBits &estado) |
| Codifica o estado para um vetor de inteiros de 64 bits. | |
| int | Heuristica (void) |
| Função para calcular quanto falta para o final, o valor da heurística. | |
Public Member Functions inherited from TProcuraAdversa | |
| TProcuraAdversa (void) | |
| ~TProcuraAdversa (void) | |
| void | ResetParametros () |
| Método para inicializar os parâmetros (redefinir se forem adicionados parâmetros específicos) | |
| int | MiniMax (int nivel=4) |
| retorna o valor do estado actual, apos procura de profundidade nivel | |
| int | MiniMaxAlfaBeta (int nivel=4, int alfa=-infinito, int beta=+infinito) |
| retorna o valor do estado actual, apos procura de profundidade nivel. Idêntico a MiniMax | |
| void | TesteEmpirico (TVector< int > instancias, TString ficheiro="") override |
| Executa testes empíricos, em todas as configurações guardadas, nas instâncias selecionadas. | |
| void | TesteEmpiricoGestor (TVector< int > instancias, TString ficheiro="") override |
| Teste empírico com modo mestre-escravo (este é o mestre) | |
| void | TesteEmpiricoTrabalhador (TVector< int > instancias, TString ficheiro="") override |
| Teste empírico com modo mestre-escravo (este é o escravo) | |
| void | TesteValidacao (TVector< int > instancias, TVector< int > impossiveis, TVector< int > referencias, TString fichSolucoes, TString fichResultados="") override |
| Executa testes de validação, executando cada solução na instância respetiva, e verificando a sua validade bem como características. | |
| bool | Validar (TVector< TString > solucao) override |
| Verifica a validade de uma solução para a instância atual. | |
| TString | Jogar (TString jogo, int configID) |
| void | PontuacaoJogos (TVector< TString > &jogos) |
| bool | CoerenciaJogo (TVector< TString > &jogos, TVector< TString > &anterior) |
| void | JogoTerminado (TString &jogo) |
| int | ExecutaAlgoritmo () |
| Executa o algoritmo com os parametros atuais. | |
| int | Heuristica (void) |
| chamar após calcular a heurística (grava o valor, dependendo da parametrização) | |
| bool | ExisteHeuritica (void) |
| void | Sucessores (TVector< TNo > &sucessores) |
| Coloca em sucessores a lista de estados sucessores. | |
| int | MaiorAmeaca (TVector< int > &qMin, TVector< int > &qMax, int maxAmeaca) const |
| Utilitário para calculo de uma heurística standard em jogos simples. | |
Public Member Functions inherited from TProcuraConstrutiva | |
| TProcuraConstrutiva (void) | |
| virtual | ~TProcuraConstrutiva (void) |
| virtual void | Copiar (TNo objecto) |
| Fica com uma cópia do objecto. | |
| void | Inicializar (void) override |
| Coloca o objecto no estado inicial da procura. | |
| void | ResetParametros () override |
| Redefinição. Ver TProcura::ResetParametros(). | |
| virtual TString | Acao (TNo sucessor) |
| Retorna a ação (movimento, passo, jogada, lance, etc.) que gerou o sucessor. | |
| virtual bool | Acao (TString acao) |
| Executa a ação (movimento, passo, jogada, lance, etc.) no estado atual. | |
| virtual bool | Distinto (TNo estado) |
| Verifica se o estado actual distinto do fornecido. | |
| void | MostrarSolucao (void) |
| Mostrar solução, seja um caminho ou o próprio estado. | |
| TVector< TString > | Solucao () |
| retorna uma solução no formato do TResultado, para ser gravada em ficheiro de soluções, ou visualizada (pode ser utilizada para mostrar a solução, ou para gravar a solução num formato mais legível) | |
| int | ExecutaAlgoritmo () |
| Executa o algoritmo com os parâmetros atuais. | |
| int64_t | Indicador (int id) override |
| Redefinição. Ver TProcura::Indicador(). | |
| int | LarguraPrimeiro (int limite=0) |
| Executa a procura em largura primeiro, algoritmo cego. | |
| int | CustoUniforme (int limite=0) |
| Executa a procura por custo uniforme, algoritmo cego. | |
| int | ProfundidadePrimeiro (int nivel=0) |
| Executa a procura em profundidade primeiro, algoritmo cego. | |
| int | MelhorPrimeiro (int nivel=0) |
| Executa a procura melhor primeiro, algoritmo informado. | |
| int | AStar (int limite=0) |
| Executa a procura A*, algoritmo informado. | |
| int | IDAStar (int upperBound=0) |
| Executa a procura IDA*, algoritmo informado. | |
| int | BranchAndBound (int upperBound=0) |
| Executa o algoritmo Branch-and-Bound, um algoritmo informado. | |
| void | LimparEstatisticas () override |
| Chamar antes da execução do algoritmo. Limpa valores estatísticos, e fixa o instante limite de tempo para a execução. | |
| void | ExecucaoTerminada () override |
| Chamar após a execução do algoritmo. Grava o tempo consumido. | |
| int | LowerBound () |
| void | NovaLinha (bool tudo=true) |
Public Member Functions inherited from TProcura | |
| TProcura (void) | |
| virtual | ~TProcura (void) |
| virtual void | Gravar (void) |
| virtual bool | Parar (void) |
| Verifica se a procura deve ser interrompida. | |
| virtual void | TesteManual (TString nome) |
| Inicializa a interação com o utilizador. | |
| virtual void | RelatorioValidacao (TVector< TResultado > resultados, TVector< int > referencias) |
| virtual void | main (int argc, char *argv[], TString nome) |
| Inicializa a interação com o utilizador. | |
| virtual TVector< int64_t > | CodificarSolucao () |
| retorna um vetor de inteiros com a codificação da solução (esta codificação será adicionada aos indicadores, no ficheiro CSV de resultados) | |
| bool | TempoExcedido () |
| bool | IteracoesExcedido () |
| int | Parametro (int id) const |
| int & | Parametro (int id) |
| bool | ParametroAtivo (int id, TVector< int > *valores=NULL) const |
Public Attributes | |
| TVector< char > | tabuleiro |
Public Attributes inherited from TProcuraAdversa | |
| bool | minimizar |
| o jogador actual deve minimizar o custo (ou maximizar caso tenha o valor falso) | |
Public Attributes inherited from TProcuraConstrutiva | |
| TNo | pai = NULL |
| Ponteiro para o estado pai, na árvore de procura. | |
| int | custo = 1 |
| Custo total acumulado desde o estado inicial. | |
| int | heuristica = 0 |
| Estimativa para o custo até um estado objetivo, se disponível. | |
| int | debugID = 0 |
| ID do estado, para efeitos de debug. | |
Additional Inherited Members | |
Static Public Member Functions inherited from TProcuraConstrutiva | |
| static void | LibertarVector (TVector< TNo > &vector, int excepto=-1, int maiorQue=-1) |
Static Public Member Functions inherited from TProcura | |
| static int | NovoValor (TString prompt) |
| static TString | NovoTexto (TString prompt) |
| static bool | Debug (ENivelDebug tipo, bool exato, const char *fmt,...) |
| Mostra uma informação de debug, se o nível de debug for suficiente. | |
| static TString | MostraTempo (double segundos) |
| Mostra tempo num formato humano. | |
| static void | MostraCaixa (TVector< TString > titulo, ECaixaParte parte, TVector< int > largura, bool aberta=true, int identacao=0) |
| static void | MostraCaixa (TString titulo, ECaixaParte parte, int largura=70, bool aberta=true, int identacao=0, const char *icon="") |
| static void | MostraCaixa (TVector< TString > textos, int largura=70, bool aberta=true, int identacao=0) |
| static void | Mensagem (TString titulo, const char *fmt,...) |
| static void | MostraConjunto (TVector< int > valores, const char *etiqueta) |
| static void | DebugHSL (float h=-1, float s=1.0, float l=0.2, bool fundo=true) |
| Muda a cor (fundo/letra) com HSL. | |
Static Public Attributes inherited from TProcuraAdversa | |
| static int | infinito = 1000 |
| valor de infinito (vitoria/derrota), omissao 1000 | |
| static bool | completo |
| controlo para indicar se a procura foi realizada de forma completa (c.c. foi cortada) | |
| static int | nivelOK = 0 |
| profundidade máxima no método iterativo | |
| static int | resultadoCompleto = 0 |
| resultado após SolucaoCompleta() retornar true (-1 vitória minimizar, 0 empate, 1 vitória maximizar) | |
Static Public Attributes inherited from TProcuraConstrutiva | |
| static TVector< TNo > | caminho |
| Solução retornada pela procura (os estados devem ser libertados). | |
| static TNo | solucao = NULL |
| Estado objetivo encontrado, retornado pela procura (deve ser libertado). | |
| static int | lowerBound = 0 |
| Valor mínimo que a solução pode apresentar, obtido pela procura. | |
| static int | expansoes = 0 |
| Número de expansões efetuadas. | |
| static int | geracoes = 0 |
| Número de estados gerados. | |
| static int | custoAcao = 0 |
| custo da última ação realizada (Acao(TString)) | |
| static TVector< const char * > | ramo |
| static constexpr const char * | RAMO_ESTADO = " ├■" |
| static constexpr const char * | RAMO_ESTADO2 = " ├□" |
| static constexpr const char * | RAMO_ESTADO_FIM = " └■" |
| static constexpr const char * | RAMO_ESTADO2_FIM = " └□" |
| static constexpr const char * | RAMO_NOVO = " ├─" |
| static constexpr const char * | RAMO_FIM = " └─" |
| static constexpr const char * | RAMO_CONTINUA = " │ " |
| static constexpr const char * | RAMO_VAZIO = " " |
Static Public Attributes inherited from TProcura | |
| static TParametro | instancia = { "",1,1,1 } |
| ID da instância atual, a ser utilizado em SolucaoVazia(). | |
| static TString | ficheiroInstancia = "" |
| prefixo do nome ficheiro de uma instância - editado pelo utilizador Caso não seja nulo, utilizar como prefixo, concatenando com ID da instância, para obter o ficheiro da instância Pode ser utilizado para gravar a instãncia num novo formato, colocando um indicador ativo que é chamado após a execução | |
| static TString | ficheiroGravar = "" |
| prefixo do nome do ficheiro para gravar a instância para ficheiro (terá sido gerada) | |
| static TVector< TParametro > | parametro |
| Parâmetros a serem utilizados na configuração atual. | |
| static TVector< TIndicador > | indicador |
| Indicadores que podem ser calculados após a execução, quer com informação da instãncia, quer com resultado da última corrida. | |
| static TVector< int > | indAtivo |
| static TVector< TVector< int > > | configuracoes |
| Conjuntos de configurações para teste empírico. | |
| static int | resultado = 0 |
| Resultado retornado pelo algoritmo na última execução. | |
| static double | tempo = 0 |
| tempo consumido na última execução. | |
| static int | iteracoes = 0 |
| Número total de iterações realizadas na última execução. | |
| static clock_t | instanteFinal = 0 |
| Instante final (deadline) da corrida atual. | |
| static bool | memoriaEsgotada = false |
| Flag indicando problemas de memória esgotada. | |
| static int | mpiID = 0 |
| MPI - rank do processo. | |
| static int | mpiCount = 1 |
| MPI - número de processos. | |
| static int | modoMPI = 0 |
| Modo MPI. | |
| static int | gravarSolucao = 0 |
| Gravar solução CSV (todas as ações) | |
Protected Member Functions inherited from TProcuraAdversa | |
| int | NoFolha (bool nivel) |
| fim da procura, por corte de nível (ou não haver sucessores), retornar heurística | |
| bool | CorteAlfaBeta (int valor, int &alfa, int &beta) |
| verifica se há um corte alfa/beta, atualizando alfa e beta | |
| int | MetodoIterativo (int alfaBeta) |
| iteração, aumentando o nível progressivamente | |
| int | Pontos (int resultado) |
| converte -infinito, 0, +infinito em -1 (vitória preta), 1 (vitória branca), 0 empate | |
| void | ExecutaTarefa (TVector< TResultadoJogo > &resultados, int inst, int brancas, int pretas, TVector< TVector< int > > *torneio=NULL) |
| Executa uma tarefa num teste empírico. | |
| bool | RelatorioCSV (TVector< TResultadoJogo > &resultados, TString ficheiro) |
| Gera um relatório CSV com os resultados. | |
| void | OrdenarSucessores (TVector< TNo > &sucessores, TVector< int > &id, int nivel) |
| void | SubstituirHT (int indice) |
| bool | ExisteHT () |
| bool | ValorEstado (TValorEstado &valor, int operacao) |
| ler ou gravar o melhor valor conhecido | |
| bool | Utilizavel (TValorEstado &valor, int nivel, int alfa, int beta) |
| ver se o valor obtido é utilizável no contexto atual | |
| void | DebugChamada (bool noFolha, int alfa=0, int beta=0) |
Protected Member Functions inherited from TProcuraConstrutiva | |
| void | DebugExpansao (int sucessor, int sucessores, bool minimizar=true) |
| void | DebugCorte (int sucessores=-1, bool duplo=false) |
| void | DebugSolucao (bool continuar=false) |
| void | DebugChamada (bool noFolha) |
| void | DebugPasso (CListaNo *lista=NULL) |
| void | DebugSucessores (TVector< TNo > &sucessores) |
| void | DebugIteracao (int iteracao, const char *simbolo) |
| void | DebugEstado (bool novaLinha=true) const |
| void | DebugRamo (const char *ramo, const char *folha) |
| void | DebugFolha (bool fimLinha, const char *fmt,...) |
| int | ObjetivoAlcancado (int item, TVector< TNo > &lista) |
| int | ObjetivoAlcancado (TNo estado, bool completa=true) |
| int | SolucaoEncontrada (bool continuar=false) |
| void | CalculaCaminho (bool completa=true) |
| void | VerificaLimites (int limite, int porProcessar, TVector< TNo > &sucessores) |
| void | CalcularHeuristicas (TVector< TNo > &sucessores, TVector< int > *id=NULL, bool sortLB=false) |
| int | SolucaoParcial (int i, TVector< TNo > &sucessores, int iAux=-1, TVector< int > *id=NULL) |
| void | Explorar () |
| definir para explorar manualmente os dados (não definido em TProcura, apenas em TProcuraConstrutiva) | |
| void | MostrarCaminho () |
| unsigned int | Hash () |
| void | LimparHT () |
| bool | ExisteHT () |
Protected Member Functions inherited from TProcura | |
| void | ExecutaTarefa (TVector< TResultado > &resultados, int inst, int conf) |
| Executa uma tarefa num teste empírico. | |
| void | InserirRegisto (TVector< TResultado > &resultados, int inst, int conf) |
| Insere um novo registo de resultados. | |
| int64_t | Registo (TResultado &resultado, int id) |
| Procura um registo com determinado id. | |
| void | Registo (TResultado &resultado, int id, int64_t valor) |
| Atualiza o valor de um registo. | |
| void | MostraParametros (int detalhe=1, TVector< int > *idParametros=NULL, TString titulo="") |
| Mostra os parâmetros atuais. | |
| void | MostraIndicadores () |
| Mostra os indicadores definidos. | |
| void | MostrarConfiguracoes (int detalhe, int atual=-1) |
| Mostra as configurações disponíveis. | |
| bool | EditarIndicadores () |
| Permite ao utilizador editar os indicadores a utilizar. | |
| void | EditarParametros () |
| Permite ao utilizador editar os parâmetros. | |
| void | EditarConfiguracoes () |
| Permite ao utilizador editar as configurações. | |
| void | MostraRelatorio (TVector< TResultado > &resultados, bool ultimo=false) |
| Mostra um relatório dos resultados. | |
| void | ConfiguracaoAtual (TVector< int > ¶metros, int operacao) |
| Grava ou lê a configuração atual. | |
| int | NovaConfiguracao (TVector< int > ¶metros) |
| Adiciona uma nova configuração se ainda não existir. | |
| int | MelhorResultado (TResultado base, TResultado alternativa) |
| Compara dois resultados para determinar o melhor. | |
| void | CalculaTorneio (TVector< TResultado > &resultados) |
| Calcula o torneio entre várias configurações. | |
| void | MostrarTorneio (TVector< TVector< int > > &torneio, bool jogo=false) |
| Mostra os resultados do torneio. | |
| void | BarraTorneio (bool nomes) |
| Mostra a barra de progresso ou nomes do torneio. | |
| TVector< TResultado > | ExtrairConfiguracao (TVector< TResultado > &resultados, int configuracao) |
| Extrai resultados de uma determinada configuração. | |
| void | SolicitaInstancia () |
| Solicita ao utilizador o ID da instância a utilizar, permitindo alterar também o prefixo do ficheiro. | |
| TVector< int > | SolicitaInstancias () |
| Solicita ao utilizador uma lista de instâncias. | |
| bool | RelatorioCSV (TVector< TResultado > &resultados, TString ficheiro, bool parametros=true) |
| Gera um relatório CSV com os resultados. | |
| void | InserirConfiguracoes (TString str, TVector< int > &base) |
| Insere configurações a partir de uma string. | |
| void | InserirConfiguracoes (TVector< int > &base, TVector< int > &produto, TVector< TVector< int > > &valores) |
| Insere configurações gerando o produto cartesiano de valores. | |
| void | AjudaUtilizacao (TString programa) |
| Mostra ajuda de utilização do programa. | |
| void | DebugTabela (ENivelDebug nivel, TVector< int >tabela, TString tipo="", TString prefixo="", int modoCor=0, bool duplaColuna=false) |
| Mostra uma tabela de inteiros, 10 elementos por linha, apenas se o nível de debug for igual ou superior. | |
| bool | JuntarCSV (TString ficheiro) |
| Juntar ficheiros CSV gerados por diferentes processos MPI em um único ficheiro. | |
| void | TesteInicio (TVector< int > &instancias, TVector< int > &configAtual) |
| arranque de teste, auxiliar aos Testes Empíricos | |
| void | TesteFim () |
Static Protected Member Functions inherited from TProcura | |
| static int | Dominio (int &variavel, int min=INT_MIN, int max=INT_MAX) |
| Limita o domínio de um parâmetro inteiro. | |
| static void | InicializaMPI (int argc, char *argv[]) |
| Inicializa o ambiente MPI, se aplicável. | |
| static void | FinalizaMPI () |
| Finaliza o ambiente MPI, se aplicável. | |
| static double | Cronometro (enum ECronometro id=CONT_ALGORITMO, bool inicializar=false) |
| retorna o tempo em segundos desde que o cronómetro foi inicializado | |
Protected Attributes inherited from TProcuraAdversa | |
| int | indiceHT |
Static Protected Attributes inherited from TProcuraAdversa | |
| static TValorEstado | valorHT [TAMANHO_HASHTABLE] |
| static int | reutilizadoAvaliacao |
Static Protected Attributes inherited from TProcuraConstrutiva | |
| static TBits | elementosHT [TAMANHO_HASHTABLE] |
| static int | custoHT [TAMANHO_HASHTABLE] |
| static TBits | estadoCodHT |
| static int | colocadosHT = 0 |
Definition at line 14 of file JogoDoGalo.h.
| CJogoDoGalo::CJogoDoGalo | ( | void | ) |
| CJogoDoGalo::~CJogoDoGalo | ( | void | ) |
Definition at line 7 of file JogoDoGalo.cpp.
| TString CJogoDoGalo::Acao | ( | TProcuraConstrutiva * | sucessor | ) |
Codifica o estado para um vetor de inteiros de 64 bits.
As variáveis de estado devem ser compactadas no vetor de inteiros de 64 bits. Todos os estados codificados têm de ser distintos de 0. Estados distintos, têm de ficar com codificações distintas.
Em diversos problemas, um mesmo estado pode ter múltiplas representações equivalentes. Por exemplo, se um conjunto de inteiros for um estado, este pode ser representado em vetor. No entanto a ordem é irrelevante, dado que é um conjunto. Assim não faz sentido guardar vários estados que sejam representações do mesmo estado. Há que normalizar o estado antes de o guardar, de modo a que seja dado como estado repetido, se uma das duas formas já tiver sido gerada. O exemplo do conjunto de inteiros, a normalização pode ser a ordenação do vetor, constituindo assim um estado único entre todas as formas que o conjunto pode ser representado em vetor. Problemas de tabuleiro, há simetrias que podem gerar várias versões da mesma posição.
Sucessores(). Reimplemented from TProcuraConstrutiva.
Definition at line 156 of file JogoDoGalo.cpp.
| void CJogoDoGalo::Copiar | ( | TProcuraConstrutiva * | objecto | ) |
Mostra o estado no ecrã, para debug.
Esta função deverá mostrar claramente o estado atual, em texto mas da forma mais confortável possível. O formato texto destina-se principalmente a quem implementa o problema, e não utilizadores finais. É importante poder explorar o espaço de estados, para verificar a correta implementação dos sucessores, como também possa ver a árvore de procura dos algoritmos, para árvores pequenas, e assim detectar bugs.
NovaLinha() pode imprimir caracteres que representam os ramos da árvore de procura, criando uma visualização textual que simula a estrutura da procura.Parametro(NIVEL_DEBUG). Um nível menor pode mostrar informações mais sucintas, enquanto um nível maior pode detalhar todas as variáveis do estado.Reimplemented from TProcura.
Definition at line 102 of file JogoDoGalo.cpp.
|
virtual |
Cria um objecto que é uma cópia deste.
Este método tem de ser criado na subclasse, de modo a criar uma cópia do mesmo tipo. O código da subclasse geralmente segue um padrão e pode utilizar o modelo abaixo, aproveitando o método Copiar(). É especialmente útil na função de Sucessores(), na geração de um novo estado.
Implements TProcuraConstrutiva.
Definition at line 10 of file JogoDoGalo.cpp.
Função para calcular quanto falta para o final, o valor da heurística.
A função heurística é crítica para utilizar os algoritmos informados. Deve devolver uma estimativa sem ultrapassar o custo real, do custo que falta para atingir o estado objetivo mais próximo do estado atual. Se a estimativa não ultrapassar o custo real, a heurística será admissível. No entanto, em alguns casos, heurísticas não admissíveis podem ser utilizadas, podendo acelerar a procura, mesmo que ocasionalmente levem a resultados subótimos.
No final, chame a função heurística da superclasse para atualizar as estatísticas e o número de avaliações. Se estiver configurado, esse processo também pode introduzir ruído na heurística, o que pode impactar certos algoritmos de procura.
Esta função pretende-se rápida, e o mais próxima possível do valor real, sem ultrapassar.
Reimplemented from TProcuraConstrutiva.
Definition at line 127 of file JogoDoGalo.cpp.
Coloca o objecto no estado inicial da procura.
Este método inicializa as variáveis de estado no estado inicial vazio. Representa o estado inicial antes de qualquer ação ser realizada na procura. Caso existam dados de instância, deve neste método carregar a instância. A primeira instrução deverá chamar o método da superclasse, conforme modelo em baixo.
Reimplemented from TProcura.
Definition at line 26 of file JogoDoGalo.cpp.
Verifica se o estado actual é objectivo (é uma solução completa)
Este método verifica se o estado atual é objetivo, e portanto temos uma solução completa. A complexidade da verificação depende do problema, podendo ser um teste simples ou envolver múltiplas condições.
Sucessores(), garantindo que a avaliação do objetivo seja feita apenas quando necessário.Implements TProcuraAdversa.
Definition at line 50 of file JogoDoGalo.cpp.
Coloca em sucessores a lista de estados sucessores.
| sucessores | - variável com a lista de estados sucessores a retornar. |
Este é o método principal, que define a árvore de procura. Para o estado atual, duplicar o estado por cada ação / estado que seja sucessor. Alterar as variáveis de estado para corresponderem à ação efetuada no estado sucessor. Caso o custo não seja unitário, definir o custo da ação. Chamar o método da superclasse no final, já que irá atualizar estatísticas, bem como eliminar estados que sejam repetidos, dependendo da parametrização.
Reimplemented from TProcuraConstrutiva.
Definition at line 34 of file JogoDoGalo.cpp.
Definition at line 22 of file JogoDoGalo.h.