2. Instalação e Configuração
✓ Download no link:
https://sourceforge.net/projects/robocode/
✓ Executar robocode-X.X.X.X-setup.jar
Necessário Java 6 ou superior instalado e
configurado o %JAVA_PATH%
7. Apresentado o Robocode
✓ O que é?
Jogo de programação, com o objetivo de desenvolver um
robô tanque de guerra para lutar contra outros tanques.
✓ Funcionamento
O jogador não participa ativamente da partida, ele
programa a Inteligência Artificial que irá comandar o robô,
estipulando como ele irá reagir a determinados
acontecimentos na arena de batalha.
8. Apresentado o Robocode
✓ Motivação
Jogo que visa o ensino de programação de uma maneira
mais fácil que a tradicional
✓ Ambiente de desenvolvimento
Editor
Compilador Java
Open Source
9. Apresentado o Robocode
✓ Histórico
Desenvolvido originalmente por Mathew Nelson em
2000
Incentivo da IBM em 2001
A inspiração veio de Robot Battle um jogo dos anos 80
2005 se tornou Open Source no SourceForge
Em 2006 Flemming Larsen assumiu o desenvolvimento
do projeto Robocode
Em 2010 foi criado o plug-in .NET
10. Apresentado o Robocode
✓ Anatomia do Robocode
Body (Corpo):
A lataria do tanque. É usado
para mover o robô para
frente e para trás, para
esquerda e para a direita.
11. Apresentado o Robocode
✓ Anatomia do Robocode
Gun (Arma):
Dispara as balas, pode se
movimentar para esquerda
ou direita.
12. ✓ Anatomia do Robocode
Radar (Monitoramento):
Identifica os inimigos,
girando para esquerda ou
direita. Dispara um evento ao
detectar um inimigo.
É um dos recursos mais
importantes do robô, sem ele
acertar outro robô é
impossível e o movimento é
exclusivamente randômico
Apresentado o Robocode
13. Apresentado o Robocode
✓ Restrições
Energia:
• Utilizada nas operações do
robo.
• No disparo, pode-se
definir a potência de
energia utilizada
• É recuperada quando
acerta outro robo
14. Apresentado o Robocode
✓ Restrições
Calor:
• Um canhão só dispara
quando o calor estiver em
0
• O calor gerado é
proporcional a potência do
disparo
15. Apresentado o Robocode
✓ Coordenadas
Usa o sistemas de
coordenadas
cartesiano
✓ Medidas
O robocode trabalha
com medidas em
pixels
16. Primeira batalha
✓ Battle > New
✓ Selecionar os robôs Tracker, RamFire e MyFirstRobot. Clicar
em Add para adicionar cada um.
17. Primeira batalha
✓ Em seguida, clique na aba Rules
✓ Altere a propriedade Number of
Rounds para 3
✓ Deixe a resolução em 800x600
✓ Clique em Start Battle
19. Primeira batalha
✓ Tela de batalha
Velocidade
Parar
Reiniciar
Pausar
Logs
Vida
Pontuação
20. Primeira batalha
✓ Ao final da batalha, são apresentadas a pontuação final,
juntamente com o Rank.
21. Primeira batalha
✓ Pontuação
Total Score: Soma de todos os pontos do robo na batalha
Survival Score: 50 pontos são adicionados para cada robô
quando um oponente morre.
Last Survivor Bonus: O vencedor do round ganha 10 pontos
para cada robô morto.
Bullet Damage: 1 ponto para cada vez que atinge um
inimigo
22. Primeira batalha
✓ Pontuação
Bullet Damage Bonus: Quando um tiro destrói um inimigo, o
robo ganha 20% a mais sobre a sua pontuação de Bullet
Damage.
Ram Damage: 2 pontos para cada ponto de dano ao inimigo
ao bater nele.
Ram Damage Bonus: 30% da pontuação de ram damage,
será dado ao tanque que matar outro tanque.
1sts, 2nds, 3rds, etc.: Indica a posição do robo no round
23. Meu primeiro robô
✓ Menu Robot > Source Editor
✓ Na janela aberta vá no menu File > New > Robot
✓ Na caixa de diálogo preencha o nome do robo como
MeuPrimeiroRobo
✓ Em seguida preencha o pacote com o nome satc.robocode
✓ Irá abrir o Robocode Editor, vá em Compiler > Compile,
depois em File e Save, em seguida feche o editor.
✓ Crie uma batalhe de 3 rounds entre o MeuPrimeiroRobo e
o robo Fire
27. ✓ Desabilitar som: Options > Preferences > Sound Options >
Sound Effects > desmarcar Enable Sound
✓ Habilitar visão do radar: Options > Preferences > View
Options > marcar Visible Scan Arcs
✓ Habilitar visão da borda: Options > Preferences > View
Options > marcar Visible Sentry Border
✓ Testando o robô: Utilize o robô Interactive que é
movimentado pelo mouse e teclado.
Configurações e Dicas
28. ✓ setBodyColor (Color color)
✓ setGunColor (Color color)
✓ setRadarColor (Color color)
✓ setBulletColor (Color color)
✓ setScanColor (Color color)
✓ setAllColors (Color color)
✓ setColors (Color bodyColor, Color gunColor, Color
radarColor)
✓ setColors (Color bodyColor, Color gunColor, Color
radarColor, Color bulletColor, Color scanArcColor)
O pacote de cores usado
pelo Robocode é do pacote
java.awt.Color:
https://docs.oracle.com/javas
e/7/docs/api/java/awt/Color.
html
Personalizando a aparência
29. Métodos de movimentos
✓ ahead (double distance): Move o robô para frente a
quantidade x de pixels estipulada por parâmetro
✓ back (double distance) : Similar ao ahead só que move para
trás
✓ fire(double power): Dispara um tiro, com o poder do
tamanho especificado por parâmetro.
30. Métodos de movimentos
✓ turnLeft (double degrees): Vira o robô a esquerda,
rotacionando-o no ângulo do grau informado
✓ turnRight (double degrees): O mesmo que turnLeft, só que
para a direita
✓ turnRadarLeft (double degrees): Vira o radar para esquerda
✓ turnRadarRight (double degrees): Vira o radar para a direita
✓ turnGunLeft (double degrees): Vira o canhão para a esquerda
✓ turnGunRight (double degrees): Vira o canhão para a direita
31. Ajustes de movimentos
✓ setAdjustGunForRobotTurn (boolean independent): Vira o
canhão junto com o veículo se falso
✓ setAdjustRadarForGunTurn (boolean independent): Vira o
radar junto com o veículo
✓ setAdjustRadarForRobotTurn (boolean independent): Vira
o radar junto com o canhão
32. Eventos básicos
✓ onScannedRobot (ScannedRobotEvent event): Método
chamado quando o robô vê outro robô pelo radar
✓ onHitWall (HitWallEvent event): Método chamado quando
o robô colide com a parede do campo de batalha
✓ onHitRobot (HitRobotEvent event): Quando o robô colide
com outro robô
✓ onHitByBullet (HitByBulletEvent event): O robô é atingido
por um tiro.
33. Eventos básicos
✓ onBulletMissed (BulletMissedEvent event): Método
chamado quando um dos seus disparos erra o alvo
✓ onBulletHit (BulletHitEvent event): Ao acertar outro robô
com o disparo esse método é chamado
✓ onRobotDeath(RobotDeathEvent event): Informação
quando outro robô morre
✓ onWin(WinEvent event): Quando você vence a batalha
✓ onDeath(DeathEvent event): Quando você morre
34. ✓ getX(): Retorna a posição corrente do robô no eixo X
✓ getY(): Retorna a posição corrente do robô no eixo Y
✓ getHeight(): Altura
✓ getWidth(): Largura
✓ getBattleFieldHeight(): Informa a altura do campo de
batalha em pixels
✓ getBattleFieldWidth(): Largura do campo de batalha
✓ getGunHeading(): Direção em graus para onde o canhão
está apontando
✓ getRadarHeading(): Posição do radar corrente
✓ getHeading(): Posição em graus para onde o veículo está
direcionado
Obtendo informações
35. Atividades
1. Criei um robo com o nome SeuNomeRobot no pacote
meusrobos
2. Personalize a cor do corpo, do radar, da arma, da bala e do
scanner.
3. Crie um log para todos os eventos vistos anteriormente.
Por exemplo, para o evento onHitByBullet imprima no
console “Fui atingido por RobotNome”.
4. Faça sua lógica de combat para nossa primeira batalha.
59. AdvancedRobot
✓ Características
✓ Enquanto um Robot pode só fazer uma coisa ao mesmo
tempo, o AdvancedRobot pode definir vários comandos ao
para executar ao mesmo tempo.
✓ São características do AdvancedRobot:
✓ Múltiplos eventos simultâneos – Ex.: Crazy
✓ Estratégias a cada turn – Ex.: Crazy
✓ Criados eventos customizados – Ex.: Target
✓ Pode manipular arquivos – Ex.: SittingDuck
✓ Interação com o usuário – Ex.: Interactive