Um jogo de tiro em primeira pessoa (FPS) inspirado no clássico Doom, desenvolvido em Python com a biblioteca Pygame.
DoomPython é um projeto que recria a experiência de um jogo de tiro em primeira pessoa, utilizando a técnica de raycasting para renderizar um ambiente 3D a partir de um mapa 2D. O objetivo do jogo é simples: sobreviver a hordas de inimigos e acumular o máximo de pontos possível.
- Gráficos 3D com Raycasting: Renderização de um ambiente 3D a partir de um mapa 2D.
- Inimigos com IA: Inimigos que perseguem e atacam o jogador.
- Armas e Combate: Sistema de armas com munição, recarga e dano.
- HUD (Heads-Up Display): Interface que exibe informações vitais como vida, munição e pontuação.
- Efeitos Sonoros: Sons para armas, inimigos e ambiente, criando uma experiência mais imersiva.
- Telas de Vitória e Game Over: Telas que indicam o final do jogo.
- Python: Linguagem de programação principal do projeto.
- Pygame: Biblioteca para desenvolvimento de jogos em Python.
Para rodar o DoomPython em sua máquina local, siga os passos abaixo:
-
Clone o repositório:
git clone https://github.com/seu-usuario/DoomPython.git
-
Navegue até o diretório do projeto:
cd DoomPython -
Instale as dependências: Certifique-se de ter o Python instalado. Em seguida, instale a biblioteca Pygame:
pip install pygame
-
Execute o jogo:
python main.py
- W, A, S, D: Mover para frente, esquerda, trás e direita.
- Mouse: Mirar e girar a câmera.
- Botão Esquerdo do Mouse: Atirar.
- R: Recarregar a arma.
- ESC: Sair do jogo.
Objetivo: Mate 20 inimigos para vencer o jogo. Se sua vida chegar a zero, você perde.
O projeto está organizado da seguinte forma:
DoomPython/
├── .venv/
├── resources/
│ ├── sound/
│ ├── sprites/
│ └── textures/
├── game.py
├── hud.py
├── main.py
├── map.py
├── npc.py
├── object_renderer.py
├── pathfinding.py
├── player.py
├── raycasting.py
├── settings.py
├── sound.py
├── sprite_object.py
└── weapon.py
main.py: Ponto de entrada do jogo.game.py: Loop principal do jogo e gerenciamento de estado.settings.py: Configurações globais do jogo (resolução, FOV, etc.).player.py: Classe do jogador, controla movimento e interações.raycasting.py: Lógica de raycasting para renderização 3D.object_renderer.py: Renderiza os objetos na tela.npc.py: Lógica e comportamento dos inimigos.weapon.py: Gerencia a arma do jogador.hud.py: Exibe a interface do usuário (vida, munição).map.py: Define o mapa do jogo.sound.py: Gerencia os efeitos sonoros.sprite_object.py: Classe base para objetos de sprite.pathfinding.py: Algoritmo de pathfinding para os NPCs.resources/: Contém todos os assets do jogo (imagens, sons, etc.).
Contribuições são bem-vindas! Se você tiver ideias para novas funcionalidades, correções de bugs ou melhorias, sinta-se à vontade para abrir uma issue ou enviar um pull request.
Este projeto está licenciado sob a Licença MIT. Veja o arquivo LICENSE para mais detalhes.