Spaces:
Sleeping
A newer version of the Gradio SDK is available:
5.33.0
title: Java-Air-Combat
emoji: ⯐🛦🛧
colorFrom: blue
colorTo: red
sdk: gradio
sdk_version: 4.44.0
app_file: app.py
pinned: false
license: mit
⯐🛦🛧 Java Air Combat - Arena de Batalha Aérea
Uma ferramenta educativa gamificada para aprendizado de programação Java através de combate aéreo entre aeronaves programáveis.
Desenvolvedor
Desenvolvido por Ramon Mayor Martins (2025)
- Email: [email protected]
- Homepage: https://rmayormartins.github.io/
- Twitter: @rmayormartins
- GitHub: https://github.com/rmayormartins
- Space: https://huggingface.co/rmayormartins
- Instituição: IFSC - Instituto Federal de Santa Catarina
🎮 Sobre o Jogo
Java Air Combat é uma plataforma onde você programa sua própria aeronave de combate em Java e a coloca para batalhar contra outras aeronaves. É uma metodologia de Gamificação no nível Modify de código, desenvolvida para a disciplina de Programação.
✨ Características Principais
- Sistema de Pontos: Distribua 100 pontos entre 11 atributos diferentes
- Combate em Tempo Real: Visualize suas aeronaves batalhando em uma arena ASCII colorida
- Estratégias Avançadas: Implemente táticas de movimento, altitude e combate
- Novos Recursos: Radar, tiro duplo, mísseis nucleares e mais!
🚀 Como Usar
- Carregar Templates: Clique nos botões para carregar o código base de cada time
- Personalizar Aeronaves: Distribua seus 100 pontos entre os atributos
- Configurar Arena: Ajuste tamanho, posições iniciais e vida das aeronaves
- Batalhar: Clique em "🔥 Combate!" e assista à batalha!
📊 Atributos das Aeronaves
Atributo | Faixa | Descrição |
---|---|---|
speed | 1-10 | Velocidade de movimento |
fireRate | 1-10 | Taxa de disparo |
maneuverability | 1-10 | Facilita mudanças de altitude |
shotPower | 5-20 | Dano do tiro normal |
supersonicPower | 10-30 | Dano do tiro supersônico |
missilePower | 15-40 | Dano do míssil especial |
defense | 5-25 | Reduz dano recebido |
stealthChance | 0-20 | Chance de esquiva |
radar | 0-10 | Detecção de projéteis |
doubleShot | 0-10 | Tiro em duas altitudes |
nuclearPower | 0-10 | Poder do míssil nuclear |
Importante: A soma de todos os atributos não pode exceder 100 pontos!
🎯 Tipos de Projéteis
- Tiro Normal (
->
,<-
): Básico, frequente - Tiro Supersônico (
>>
,<<
): Mais rápido e poderoso - Míssil Especial (
=>
,<=
): Alto dano, cooldown de 3 turnos - Tiro Duplo (
=>
,<=
): Ataca em duas altitudes simultaneamente - Míssil Nuclear (
-N->
,<-N-
): Dano massivo, cooldown de 5 turnos
🏗️ Configurações da Arena
Tabela de Configurações
Configuração | Faixa | Descrição |
---|---|---|
Largura da Tela | 50-200 | Define a largura do campo de batalha |
Altura do Campo | 3-7 | Define o número de linhas/altitudes possíveis |
Posição Inicial Time 1 | 0-49 | Define onde o Time 1 começa na arena |
Posição Inicial Time 2 | 51-200 | Define onde o Time 2 começa na arena |
Vida Time 1 | 50-500 | Define a vida inicial da aeronave do Time 1 |
Vida Time 2 | 50-500 | Define a vida inicial da aeronave do Time 2 |
🎨 Representação Visual
Aeronaves e Projéteis
Símbolo | Origem | Significado |
---|---|---|
T1 |
Time 1 | Aeronave do Time 1 |
T2 |
Time 2 | Aeronave do Time 2 |
-> |
Time 1 | Tiro normal do Time 1 |
<- |
Time 2 | Tiro normal do Time 2 |
>> |
Time 1 | Tiro supersônico do Time 1 |
<< |
Time 2 | Tiro supersônico do Time 2 |
=> |
Time 1 | Míssil especial do Time 1 |
<= |
Time 2 | Míssil especial do Time 2 |
=> |
Time 1 | Tiro duplo do Time 1 |
<= |
Time 2 | Tiro duplo do Time 2 |
-N-> |
Time 1 | Míssil nuclear do Time 1 |
<-N- |
Time 2 | Míssil nuclear do Time 2 |
Alertas do Sistema
Emoji | Mensagem | Significado |
---|---|---|
❤️ | Vida Time X: 100 | Mostra a vida atual da aeronave |
💥 | Aeronave atingida! | Indica que uma aeronave foi atingida |
👻 | Aeronave esquivou! | Indica esquiva bem-sucedida |
📡 | Radar detectou projétil! | O radar detectou um projétil inimigo |
☢️ | Míssil nuclear lançado! | Alerta sobre míssil nuclear |
🏆 | Time X venceu! | Indica o vencedor da batalha |
💡 Dicas de Estratégia
- Equilíbrio: Aeronaves balanceadas são mais eficazes que especializadas
- Contramedidas: Defesa baixa? Compense com manobrabilidade e furtividade
- Movimento Inteligente: Crie padrões ao invés de movimento aleatório
- Use o Radar: Detecte projéteis e implemente esquivas automáticas
- Tiro Duplo: Aumente chances de acerto atacando múltiplas altitudes
- Mísseis Nucleares: Use estrategicamente - alto dano, mas longo cooldown
🔧 Métodos Personalizáveis
Método | Parâmetros | Retorno | Descrição |
---|---|---|---|
move() |
nenhum | int | Controla movimento horizontal |
changeAltitude() |
nenhum | int | Controla mudanças de altitude |
shoot() |
posX, direction | Projectile | Dispara tiro normal |
shootSupersonic() |
posX, direction | Projectile | Dispara tiro supersônico |
specialMissile() |
posX, direction | Projectile | Dispara míssil especial |
doubleShot() |
posX, direction | Projectile | Implementa tiro duplo |
nuclearMissile() |
posX, direction | Projectile | Controla mísseis nucleares |
radarScan() |
projectiles, enemyPosX, enemyPosY | void | Processa informações do radar |
📚 Conceitos de Programação Aplicados
Esta ferramenta ensina conceitos fundamentais de programação:
- Herança: Aeronaves estendem a classe abstrata
Aircraft
- Polimorfismo: Métodos abstratos implementados de forma única por cada aeronave
- Encapsulamento: Atributos protegidos e métodos públicos bem definidos
- Abstração: Interface comum para diferentes tipos de aeronaves
- Lógica Algorítmica: Estratégias de movimento, combate e tomada de decisão
🏫 Uso Educacional
Objetivos de Aprendizagem
- Programação Orientada a Objetos em Java
- Conceitos de herança e polimorfismo
- Lógica de programação e algoritmos
- Estratégia computacional
- Debugging e otimização de código
- Pensamento algorítmico aplicado a jogos
Metodologia
- Gamificação no nível Modify: Estudantes modificam código existente para criar estratégias únicas
- Aprendizado baseado em competição: Motiva experimentação e refinamento
- Feedback visual imediato: Resultados das estratégias são vistos em tempo real
🔄 Desenvolvimento Local
Para rodar localmente:
# Instalar dependências
pip install -r requirements.txt
# Executar aplicação
python app.py
Requisitos do sistema:
- Java JDK 8+ instalado
- Python 3.7+
- Gradio 4.44.0
🤝 Contribuições
Este projeto é educacional e está aberto a melhorias:
- Novas funcionalidades de combate
- Estratégias de IA mais avançadas
- Melhorias na interface
- Correções de bugs
- Otimizações de performance
📄 Licença
Este projeto está licenciado sob a MIT License. Use livremente em contextos acadêmicos e de aprendizado.
🎮 Bons combates e boa programação! ✈️🚁💥