TProcuraAdversa
Algoritmos de procura adversa
Loading...
Searching...
No Matches
JogoEmLinha.h
Go to the documentation of this file.
1#pragma once
2#include "../TProcuraAdversa.h"
3
5 regular, // jogar em qualquer casa livre
6 gravidade, // jogar na linha de baixo, ou por cima de uma peça
7 // ideias para outras variantes:
8 jogadaDupla, // jogam sempre duas peças, mas a segunda peça + serve para ambos
9 bordasLigadas, // linha de cima liga com a de baixo, coluna da esquerda liga com a da direita
10 zonasOcupadas // algumas céculas já estão ocupadas e ficam inviáveis para uso
11};
12
13typedef struct SJogoEmLinha {
14 int K; // número de marcas em linha
15 int N; // número de linhas do tabuleiro
16 int M; // número de colunas do tabuleiro
17 EVariantesJogo variante; // qual a variante
19
21// CJogo4emLinha class
23// Author: José Coelho
24// Last revision: 2009-03-30
25// Description:
28 public TProcuraAdversa
29{
30public:
32public:
33 CJogoEmLinha(void);
34 ~CJogoEmLinha(void);
35
36 // dados da instância
37 static TJogoEmLinha inst;
38
39 // Cria um objecto que é uma cópia deste
41 // Fica com uma cópia de objecto
42 void Copiar(TProcuraConstrutiva*objecto);
43 // Coloca o objecto no estado inicial da procura
44 void SolucaoVazia(void);
45 // Coloca em sucessores a lista de objectos sucessores (são alocados neste método e têm de ser apagados)
46 // O custo não necessita de ser preenchido, caso seja sempre unitário
47 // chamar o método desta classe após adicionar os sucessores para actualizar geracoes e expansoes
48 void Sucessores(TVector<TNo>&sucessores);
49 // Retorna verdade caso o estado actual seja um estado objectivo
50 bool SolucaoCompleta(void);
51 // Escrever informação de debug sobre o objecto currente
52 // (utilizar variável TProcuraConstrutiva::debug para seleccionar o detalhe pretendido)
53 void Debug(void);
54
55 void ResetParametros();
56
57
58 // Redefinir para poder utilizar os algoritmos informados
59 // O custo desde o nó inicial é tido em conta, esta função deve devolver o custo estimado
60 // nunca sobre estimando, deste estado até ao nó final mais próximo (é um mínimo)
61 // chamar para actualiação de avaliacoes
62 int Heuristica(void);
63
64 const char* Acao(TNo sucessor);
65 void TesteManual(const char* nome);
66 void Codifica(uint64_t estado[OBJETO_HASHTABLE]);
67 int Codigo(char peca) { return peca == 'x' ? 1 : (peca == 'o' ? 2 : 3); }
68 int Indice(int i, int j) { return i * inst.M + j; }
69 char Casa(int i, int j) { return tabuleiro[Indice(i, j)]; }
70 void Casa(int i, int j, char valor) { tabuleiro[Indice(i, j)] = valor; }
71 bool VerLinha(int i, int j, int di, int dj);
72};
struct SJogoEmLinha TJogoEmLinha
EVariantesJogo
Definition JogoEmLinha.h:4
@ regular
Definition JogoEmLinha.h:5
@ zonasOcupadas
Definition JogoEmLinha.h:10
@ bordasLigadas
Definition JogoEmLinha.h:9
@ gravidade
Definition JogoEmLinha.h:6
@ jogadaDupla
Definition JogoEmLinha.h:8
#define OBJETO_HASHTABLE
void Sucessores(TVector< TNo > &sucessores)
Coloca em sucessores a lista de estados sucessores.
int Indice(int i, int j)
Definition JogoEmLinha.h:68
void Debug(void)
Mostra o estado no ecrã, para debug.
const char * Acao(TNo sucessor)
Retorna a ação (movimento, passo, jogada, lance, etc.) que gerou o sucessor.
char Casa(int i, int j)
Definition JogoEmLinha.h:69
bool SolucaoCompleta(void)
Verifica se o estado actual é objectivo (é uma solução completa)
void ResetParametros()
Inicializa os parametros.
CJogoEmLinha(void)
TVector< char > tabuleiro
Definition JogoEmLinha.h:31
void Codifica(uint64_t estado[OBJETO_HASHTABLE])
Codifica o estado para um vetor de inteiros de 64 bits.
int Codigo(char peca)
Definition JogoEmLinha.h:67
static TJogoEmLinha inst
Definition JogoEmLinha.h:5
void Casa(int i, int j, char valor)
Definition JogoEmLinha.h:70
void Copiar(TProcuraConstrutiva *objecto)
bool VerLinha(int i, int j, int di, int dj)
void SolucaoVazia(void)
Coloca o objecto no estado inicial da procura.
void TesteManual(const char *nome)
Inicializa a interação com o utilizador.
~CJogoEmLinha(void)
TProcuraConstrutiva * Duplicar(void)
Cria um objecto que é uma cópia deste.
int Heuristica(void)
Função para calcular quanto falta para o final, o valor da heurística.
Representa um estado no espaço de estados.
Representa um estado no espaço de estados.
EVariantesJogo variante
Definition JogoEmLinha.h:17