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!** ✈️🚁💥