-
Notifications
You must be signed in to change notification settings - Fork 3
Documentação
Para a implementação do jogo, foi utilizado a linguagem de programação C++, juntamente com a biblioteca gráfica SDL (Simple DirectMedia Layer). Com isso pudemos usufruir da estrutura de dados Pilha e atrás do método "Pilha Inteligente" para manipular os demais Tipos Abstratos de Dados (TADs), como a seguir:
//Tabela da arquitetura da "PilhaInteligente"
FreeCell |
---|
Aplicação |
-- |
Pilha |
Para o jogo, foi criado as seguintes TADs:
- Carta: nesta TAD é armazenado o número e naipe da carta, como também sua textura e demais métodos de inserir e obter tais dados;
-
Pilhas:
- Pilha: TAD base para as demais pilhas, utilizando nós para referenciar os dados;
- PilhaInteligente: herda publicamente da Pilha e adiciona métodos referentes à interface gráfica;
- PilhaAuxiliar: herda publicamente da PilhaInteligente, porém sobrescreve a verificação de inserção;
- PilhaDefinitiva: herda publicamente da PilhaInteligente, porém sobrescreve a forma de disposição das cartas e a verificação de inserção e remoção;
- PilhaIntermediaria: herda publicamente da PilhaInteligente, porém sobrescreve a verificação de inserção e remoção;
- Baralho: responsável por gerar todos os tipos de cartas e embaralhá-las;
- EventManager: responsável por fazer as principais interações entre a interface e os dados;
- TADs da interface gráfica: demais estruturas de dados provenientes da interface gráfica, utilizadas para fazer as interações gerais do jogo.
Para a base das demais Pilhas, implementamos a seguinte estrutura como "Pilha burra":
template<class T>
class Node {
public:
T value;
Node* right;
Node* left;
Node();
Node(const T);
};
template<class T>
class Stack {
protected:
Node<T> header;
int size;
public:
Stack();
~Stack();
bool isEmpty() const;
void push(const T, bool&);
bool pop(T&);
void clear();
int getSize() const;
Node<T>* peek() const;
};
Com a pilha base definida, partimos para a implementação de pilhas mais especializadas para que não caiba à aplicação verificar demais operações. Pra começar foi implementado uma PilhaInteligente
como uma herança pública de Stack<Carta>
e possuindo, em sua essência, métodos de posicionamento, texturas, renderização, entre outros. Porém, como diferentes pilhas possuem métodos diferentes para verificar os TADs, houve a necessidade da criação de demais classes de Pilha, herdando publicamente de PilhaInteligente
. São estas: PilhaIntermediaria
, PilhaAuxiliar
e PilhaDefinitiva
.
Competição de Jogos Desenvolvidos por Estudantes de Estruturas de Dados
EDGames é uma competição entre estudantes de Estruturas de Dados. O objetivo do EDGames é tornar o aprendizado mais prático, mais interessante e mais divertido.
A competição EDGames faz parte de atividade de extensão aprovada pela Universidade Federal de São Carlos - UFSCar através do processo 23112.003019/2014-50, com título: Desenvolvimento, Aprimoramento, Organização e Disponibilização de Recursos Didáticos Sobre o Tema Estruturas de Dados.