Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/equiel-1703/trabalho-final-aedi-windows
Trabalho final da disciplina de Algoritmos e Estruturas de Dados I, lecionada pelo prof. Rafael Burlamaqui na Universidade Federal de Pelotas. Essa versão possui uma interface melhor com o usuário, usando da API do Windows.
https://github.com/equiel-1703/trabalho-final-aedi-windows
abstract-data-types avl-tree avl-tree-implementations c windows-api
Last synced: 22 days ago
JSON representation
Trabalho final da disciplina de Algoritmos e Estruturas de Dados I, lecionada pelo prof. Rafael Burlamaqui na Universidade Federal de Pelotas. Essa versão possui uma interface melhor com o usuário, usando da API do Windows.
- Host: GitHub
- URL: https://github.com/equiel-1703/trabalho-final-aedi-windows
- Owner: Equiel-1703
- Created: 2022-11-07T18:48:03.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2022-11-15T23:25:04.000Z (about 2 years ago)
- Last Synced: 2024-11-19T10:12:23.149Z (3 months ago)
- Topics: abstract-data-types, avl-tree, avl-tree-implementations, c, windows-api
- Language: C
- Homepage:
- Size: 9.13 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Trabalho Final de AED I (com API do Windows)
_Feito por Henrique Gabriel Rodrigues_Esse foi meu trabalho final da disciplina de Algoritmos e Estruturas de Dados I, lecionada pelo professor Rafael Burlamaqui na Universidade Federal de Pelotas.
Essa versão possui uma interface muito mais interessante com o usuário, usando dos recursos disponíveis na API do Windows.
Muitos dos recursos usados aqui foram reaproveitados do código que escrevi para fazer os gráficos do [8-Puzzle](https://github.com/Equiel-1703/8-Puzzle), jogo feito como trabalho final da disciplina de Programação de Computadores. Esses códigos foram muito melhorados e otimizados. Por exemplo, antes os sprites eram lidos diretamente de um arquivo txt salvo no disco rígido. Agora, os sprites são carregados em strings alocadas dinamicamente na RAM, otimizando e muito a utilização deles.
A forma de exibir os sprites na tela também foi otimizada. Antes eles eram exibidos linha a linha usando funções como fgets ou getline para ler do arquivo no disco e imprimindo na tela com printf. Nessa versão melhorada, o arquivo já está na RAM, portanto só percorri o vetor buscando o índice de início e fim desejado e imprimi na tela usando fwrite (que é muito mais rápido que a função printf).
Essas e outras melhorias permitiram até mesmo compilar com o MinGW-W64. Isso era impossível antes, pois por algum motivo quando o 8-Puzzle era compilado com o MinGW-W64 os sprites eram exibidos linha a linha de forma extremamente lenta, tornando impossível de jogar o game. Mas isso estranhamente não acontecia no MinGW normal (que é de 32 bits).
Meu palpite é de que no MinGW normal o compilador criava um buffer onde os arquivos que eram constantemente acessados no disco (os sprites nesse caso) eram salvos, e portanto não causava lentidão na hora de exibir na tela. Já o MinGW-W64 não faz isso, e então causa o bug que mencionei. Mas graças às melhorias feitas na biblioteca de gráficos, esse bug não acontece mais com o MinGW-W64.
Quanto à parte do TAD da árvore AVL, ela é exatamente igual em ambas as versões do trabalho final de AED I.
Um relatório descrevendo as maiores dificuldades, funcionamento e estrutura do código pode ser acessado [aqui](https://drive.google.com/file/d/18D8r6IBg3ftjk23JjUlPvt_c7hH8h80E/view?usp=share_link).