O documento apresenta o jogo Robocode, explicando seu funcionamento, componentes, métodos e eventos. Resume os principais pontos como: (1) Robocode é um jogo de programação onde se desenvolve um robô de tanque de guerra; (2) Os robôs são programados para reagirem a eventos em uma arena de batalha; (3) Os componentes principais de um robô são o corpo, arma e radar.
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. Apresentado o Robocode
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
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. Configurações e Dicas
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.
28. Personalizando a aparência
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
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. Obtendo Informações
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
35. Atividades
1. Criei um robo com o nome RobotSeuNome.
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.