Spaces:
Sleeping
Sleeping
| 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: ramon.mayor@ifsc.edu.br | |
| - 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 | |
| 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: | |
| ```bash | |
| # 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](LICENSE). Use livremente em contextos acadêmicos e de aprendizado. | |
| --- | |
| 🎮 **Bons combates e boa programação!** ✈️🚁💥 |