Um boss fight 2D feito em Java, com combate rápido, padrões progressivos e uma estética de animação vintage. O projeto foi criado como trabalho da disciplina de Programação Orientada a Objetos (POO).
Gameplay · Destaques · Controles · Como executar · Arquitetura
Em Fúria Botânica: O Jardim Maldito, você controla um pequeno herói preso em uma arena. Para sobreviver, é preciso ler os avisos do boss, atravessar sequências de espinhos e projéteis e encontrar espaço para contra-atacar.
A luta começa simples, mas ganha novos padrões, encadeamentos e ritmo conforme a vida da flor diminui. Tiros certeiros carregam o relógio especial. Quando ele estiver completo, um ataque mais poderoso pode mudar o rumo do duelo.
gameplay.mp4
O combate foi pensado em torno de quatro ações:
- Observar os avisos visuais e reconhecer o próximo padrão.
- Desviar com movimento, pulo e um dash com breve invencibilidade.
- Atacar continuamente para causar dano e carregar o especial.
- Adaptar-se quando o boss muda de fase e combina novos ataques.
- Boss em múltiplas fases: máquina de estados com padrões sorteados sem repetição imediata, transições próprias e uma etapa final mais agressiva.
- Combate responsivo: pulo com coyote time e input buffer, dash, tiro contínuo, especial carregável, knockback e hitstop.
- Ataques legíveis: telegraphs antecipam espinhos, sementes, bolotas, pólen e zonas de impacto.
- Direção de arte vintage: cenário em camadas, animações desenhadas, textura de filme antigo e transições em íris.
- Feedback audiovisual: partículas, camera shake, reações a acertos, locuções e trilhas que acompanham as fases da batalha.
- Experiência completa: menu, introdução
READY? / GO!, HUD, vitória, derrota e revanche rápida.
Como a batalha evolui (contém spoilers de gameplay)
O boss alterna entre golpes de espinhos em diferentes alturas, rajadas direcionadas e chuva de pólen com áreas de queda sinalizadas.
Ao chegar à metade da vida, a flor altera a arena e acelera o ritmo. Novos padrões incluem corredores de esporos, vinhas verticais, obstáculos em arco e ataques encadeados.
Nos últimos 20% de vida, o tempo de recuperação diminui e as sequências ficam mais intensas até o knockout.
| Ação | Controle |
|---|---|
| Mover | A / D |
| Pular | Espaço |
| Dash | Shift esquerdo |
| Atirar | Segurar botão esquerdo do mouse |
| Ataque especial | Botão direito do mouse |
| Voltar ao menu | Esc |
| Alternar tela cheia | F11 |
| Ação | Controle |
|---|---|
| Navegar | W / S ou ↑ / ↓ |
| Confirmar | Enter ou Espaço |
| Jogar novamente | R na tela final |
| Voltar ao menu | Esc ou Enter na tela final |
- JDK 21 instalado e configurado no
JAVA_HOME. - Windows, Linux ou macOS com suporte a OpenGL compatível com LWJGL3.
- Git para clonar o repositório.
O Gradle Wrapper já está incluído; não é necessário instalar o Gradle separadamente.
git clone https://github.com/matrodrigs/java-bossfight.git
cd java-bossfightNo Windows:
.\gradlew.bat runNo Linux ou macOS:
chmod +x gradlew
./gradlew runNa primeira execução, o Gradle baixa as dependências automaticamente. O launcher abre o jogo em tela cheia, usando uma resolução interna de 1280 × 720.
- Abra a pasta do repositório como um projeto Gradle.
- Selecione o JDK 21 para o projeto.
- Execute a task Gradle
runou a classecom.bossfight.desktop.DesktopLauncher.
| Tecnologia | Uso no projeto |
|---|---|
| Java 21 | Código do jogo e recursos modernos da linguagem |
| libGDX 1.14.1 | Loop principal, input, áudio, câmera e renderização 2D |
| LWJGL3 | Backend desktop e integração com OpenGL |
| Gradle 8.14.3 | Build, dependências e execução |
| Java2D | Geração das texturas de texto com as fontes do projeto |
O código separa regras de combate, apresentação e fluxo de telas para manter a luta fácil de evoluir:
src/main/java/com/bossfight/
├── audio/ # Música, locuções e efeitos sonoros
├── boss/ # Boss, fases, ataques e telegraphs
├── config/ # Constantes de gameplay e da arena
├── desktop/ # Launcher LWJGL3
├── effects/ # Partículas, câmera, filme antigo e transições
├── entities/ # Jogador, projéteis e hitboxes
├── gameplay/ # Colisões e ciclo de vida dos projéteis
├── input/ # Leitura e buffer dos controles
├── rendering/ # Cenário, sprites, textos e HUD
└── screens/ # Menu, batalha e telas finais
assets/
├── audio/ # Músicas, ambiência, efeitos e locuções
├── fonts/ # Fontes empacotadas e suas licenças
└── sprites/ # Cenário, personagens, projéteis e interface
A lógica do boss usa o padrão State: cada ataque implementa seu próprio comportamento, telegraph e encerramento, enquanto Boss decide transições, fases e encadeamentos.
Para compilar o projeto sem iniciar o jogo:
./gradlew buildNo Windows, use .\gradlew.bat build.
Este projeto não inclui sprites, músicas, efeitos, logos ou fontes oficiais de Cuphead. A inspiração está na linguagem visual das animações clássicas. Os arquivos usados pelo jogo foram criados ou obtidos separadamente.
As origens e licenças de imagens, áudios e fontes estão documentadas em docs/ASSETS_LICENSES.md. Assets de terceiros permanecem sob suas licenças originais e não são relicenciados pela MIT.
O código-fonte deste projeto está disponível sob a Licença MIT.
