Spaces:
Sleeping
Sleeping
File size: 7,500 Bytes
e0eeafb 9cbf9f5 9855827 9cbf9f5 e0eeafb 9cbf9f5 e0eeafb 9cbf9f5 e0eeafb 9cbf9f5 9855827 9cbf9f5 9855827 9cbf9f5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 |
---
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
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!** ✈️🚁💥 |