Este projeto implementa um gerador de labirintos perfeitos e um solucionador para esses labirintos utilizando a biblioteca customizada stb_image para gerar imagens mostrando o labirinto sendo construído/solucionado.
Para realizar este projeto utilizamos a linguagem C++ e sua biblioteca padrão (STL), bem como a bibloteca stb_image para a criação de imagens.
Também utilizamos uma estrutura de classes para realizar as funcionalidades do nosso projeto. Tais classes são:
- Classe Maze:
Esta classe é responsável por guardar as informações do labirinto, como dimensões e estado das células.
Ela também é responsável por construir o labirinto e possibilitar a modificação/consulta de suas celulas.
-
Classe Render: Esta classe é responsável por estabelecer uma ligação entre o canvas e o maze para que com isso seja possível desenhar as etapas de criação/solução do maze.
-
Classe Canvas: Esta classe é responsável por criar uma "tela" para possibilitar a pintura da imagem, utilizando funções para a criação de linhas verticais e horizontais e caixas utilizadas para representar o estado de uma célula.
-
Classe Solve: Esta classe é responsável por resolver o labirinto utilizando recursão e chamar o render para desenhar a imagem a cada passo da resolução.
Para executar o código, basta entrar na pasta raíz do projeto e digitar o comando cmake -G "Unix Makefiles", opcionalmente, pode-se criar um diretório dentro da pasta raíz e apenas adicionar o caminho desta pasta raíz até o arquivo CMakeLists.txt.
Após isso, basta digitar o comando make para compilar o projeto.
Assim, com o projeto compilado, basta digitar ./Magos L C H W, onde L é a quantidade de linhas do labirinto, C é a quantidade de colunas do labirinto, H é a altura das imagens e W a largura das imagens.
Também é possível chamar ./Magos, ./Magos L C ou ./Magos L C H. Respectivamente, estes comandos geram um labirinto 10x10 com imagens de 300x300 de tamanho, um labirinto com LxC dimensões com imagens de tamanho L.100xC.100 (cem vezes o tamanho de cada dimensão do labirinto) e um labirinto com dimensões LxC com imagens de tamanho HxH.
Todos os códigos aqui implementados foram desenvolvidos por Kevin Wallacy de Souza Maciel (Email de contato: kevinwall@ufrn.edu.br) e Giovanne da Silva Santos (Email de contato: giovannedssantos@gmail.com)
© IMD/UFRN 2018-2019