Loading repository data…
Loading repository data…
LucasCabra7 / repository
Grupo formado por cinco alunos da disciplina de Algoritmos (CIN/UFPE) com o objetivo de desenvolver um projeto que aplique os principais conceitos estudados. A proposta envolve a implementação de uma solução em C ou C++, utilizando programação imperativa estruturada, tipos de dados, estruturas, algoritmos e análise de eficiência.
Projeto desenvolvido para a disciplina de Algoritmos, utilizando a linguagem C e os princípios fundamentais da Programação Orientada a Objetos e Algoritmos.
O projeto tem como objetivo o desenvolvimento de um jogo 2D RPG com elementos de estratégia, dividido em duas etapas de complexidade crescente, utilizando a linguagem C como base. O jogo iniciou em uma versão textual (terminal), com foco nos conceitos fundamentais de programação em C, e promete evoluir para uma versão gráfica 2D, implementando estruturas de dados, algoritmos e elementos de IA. O tema escolhido é pós-apocalíptico, em um mundo devastado por um vírus que transforma humanos em zumbis. O jogador assume o papel de um sobrevivente que precisa explorar, lutar e administrar recursos para permanecer vivo.
<bgprs><dsr><gcfc><fves><lsc>O sistema é composto pelas seguintes classes:
Batalha Estrutura de Fila onde o Jogador e inimigo alternam ataques e defesas. O sistema de dano é baseado em atributos da classe, itens e níveis.Inventario: Vetor Dinâmico. Armazenamento e manipulação de itens coletados.Mapa: Matriz (2D array). Representação dos locais e movimentação.Inimigo: Algoritmos de busca (BFS, A*). Inimigos perseguem o jogador no mapa.Personagem: Mantém as informações do jogador, seu XP e itens atráves do salvamento com arquivos binários.| Conceito | Como foi aplicado | Benefício |
|---|---|---|
| Struct | Para personagem, itens e inimigos | Reutilização de código e hierarquia |
| Funções | para modularização do código | Flexibilidade para múltiplos ajustes futuros |
| ponteiros e malloc() | Na lista de armazenamento de itens do inventário | para manipular memória dinamicamente |
| Arquivos (fopen, fwrite, fread) | para salvar progresso | Facilidade de uso e manutenção |
| Variáveis globais | para estados de jogo (nível, HP, XP) | Facilidade de uso e atualizações futuras |
+ Medkit (restaura HP)! Armas (aumenta ataque permanentemente)^ Munição (recursos de combate)Menu Principal:
1 - Jogar (novo jogo)2 - Carregar Jogo3 - Opções (volume e dificuldade)4 - Estatísticas (visualizar progresso)5 - Sobre (informações do jogo)6 - Tutorial (ajuda)7 - Reset (apagar todos os dados)8 - SairDurante o Jogo:
w/a/s/d - Mover para cima/esquerda/baixo/direitai - Ver inventáriop - Ver status do personagemh - Mostrar ajuda/tutorialq - Salvar jogoe - Voltar ao menu principalDurante o Combate (Terminal):
1 - Atacar o inimigo2 - Usar Medkit (se disponível)3 - Tentar fugir (50% de chance)Durante o Combate (Gráfico):
Setas ↑/↓ ou W/S - Navegar no menu de açõesEnter ou Espaço - Confirmar ação selecionadaQuando você encontra um zumbi, entra em um modo de combate por turnos estilo Pokemon:
Escolha sua Ação:
Turno do Inimigo: Após sua ação, o zumbi contra-ataca causando dano baseado no ataque dele menos sua defesa
Vitória: Derrote o zumbi para ganhar XP e possivelmente itens. Acumule XP para subir de nível!
Derrota: Se seu HP chegar a zero, o jogo termina e você retorna ao menu principal
Dica: Colete Medkits antes de batalhas difíceis e use-os estrategicamente para sobreviver!
| Símbolo | Descrição | Pode Atravessar? |
|---|---|---|
P | Jogador (você) | - |
Z | Zumbi (inicia combate) | Sim |
+ | Medkit (cura HP) | Sim |
! | Arma (aumenta ataque) | Sim |
^ | Munição | Sim |
# | Obstáculo/Rocha | Não |
T | Árvore | Não |
~ | Água | Não |
B | Prédio | Não |
, | Grama | Sim |
. | Chão livre | Sim |
Este é o coração de nosso projeto algumas features estão sujeitas à alterações, porém estamos em trabalho contínuo para melhorar a sua experiencia , sinta-se livre para dar sugestões...
Você pode acessar a versão do site em:
🔗 Em andamento...
Em andamento...
git clone https://github.com/Monkius-Maximus/Algorithm-group-2-diogoversion.git
cd Algorithm-group-2-diogoversion
Certifique-se de ter o Raylib instalado (conforme instruções em https://www.raylib.com/)
Compile a versão gráfica:
gcc src/main_gui.c src/Personagem.c src/Mapa.c src/Inventario.c src/Batalha.c src/Arquivos.c src/GameState.c -I./include -lraylib -lopengl32 -lgdi32 -lwinmm -o jogo_grafico.exe
./jogo_grafico.exe
Para compilar a versão de terminal (sem interface gráfica):
gcc src/main.c src/Personagem.c src/Mapa.c src/Inventario.c src/Batalha.c src/Arquivos.c src/GameState.c -I./include -o zombie.exe
Execute:
zombie.exe
git clone https://github.com/Monkius-Maximus/Algorithm-group-2-diogoversion.git
cd Algorithm-group-2-diogoversion
Certifique-se de ter o Raylib instalado (conforme instruções em https://www.raylib.com/)
Compile a versão gráfica:
gcc src/main_gui.c src/Personagem.c src/Mapa.c src/Inventario.c src/Batalha.c src/Arquivos.c src/GameState.c -I./include -lraylib -lGL -lm -lpthread -ldl -lrt -lX11 -o jogo_grafico
./jogo_grafico
Para compilar a versão de terminal (sem interface gráfica):
gcc src/main.c src/Personagem.c src/Mapa.c src/Inventario.c src/Batalha.c src/Arquivos.c src/GameState.c -I./include -o zombie
Execute:
./zombie
Este projeto é de caráter acadêmico, sem fins lucrativos. Todos os direitos reservados aos autores.