java-air-combat / README.md
rmayormartins's picture
a19
9cbf9f5

A newer version of the Gradio SDK is available: 5.33.0

Upgrade
metadata
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)

🎮 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

  1. Carregar Templates: Clique nos botões para carregar o código base de cada time
  2. Personalizar Aeronaves: Distribua seus 100 pontos entre os atributos
  3. Configurar Arena: Ajuste tamanho, posições iniciais e vida das aeronaves
  4. 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

  1. Equilíbrio: Aeronaves balanceadas são mais eficazes que especializadas
  2. Contramedidas: Defesa baixa? Compense com manobrabilidade e furtividade
  3. Movimento Inteligente: Crie padrões ao invés de movimento aleatório
  4. Use o Radar: Detecte projéteis e implemente esquivas automáticas
  5. Tiro Duplo: Aumente chances de acerto atacando múltiplas altitudes
  6. 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! ✈️🚁💥