MC46 ROBOCODE - Robôs de Combate em
Java
02/06/2014
ROBOCODE

http://robocode.sourceforge.net/
Fernando Cardeal e Liojes Carneiro
Projeto ROBOCODE
Características Importantes
Criado em Setembro de 2000 por
Mathew Nelson, Engenheiro de
Software da AlphaWorks/ IBM;
 O projeto atualmente fica hospedado na
SourceForge.
 Interessante para ensinar o paradigma
de Orientação a Objetos.
 Divertido para programar seus próprios
jogos.

O Campo de Batalha
Detalhes do Campo de Batalha

SECITEC 2013 - IFBA
Aprendizagem de Orientação a Objetos:
 Classes;
 Objetos – Instâncias de classes;
 Eventos;
 Envio de mensagens.

Utilização de Inteligência Artificial, se
desejado.
1
MC46 ROBOCODE - Robôs de Combate em
Java
Anatomia de um Robô
02/06/2014
Anatomia do Robô - descrição
Veículo – movimenta o robô
Canhão – Adivinhe!!! 
 Radar – Localiza outros robôs no campo
de batalha.


 Pode se movimentar em conjunto com o
canhão ou de forma independente.
Características do Robô

Energia:





Placar final de uma batalha de 5
rounds
Utilizada para operar o robô: movimentar e atirar;
Gasta quando se movimenta ou atira;
Recuperada quando acerta outro robô;
Começa em 100. Quando chega a zero, o robô é
eliminado da rodada.
Calor:
 Quando o canhão é disparado ele aquece;
 Próximo tiro só é possível quando o calor estiver
em zero.
 Quanto maior a potência do tiro, maior o calor
gerado.
Explicação da pontuação







Total Score: total de pontos;
Survival: 50 pontos toda vez que um inimigo morre
(e o seu não, é claro);
Survival Bonus: 10 vezes o número de inimigos; No
exemplo: 5 rodadas * 3 inimigos * 10 = 150.
Bullet damage: 1 ponto a cada dano no inimigo.
Bullet bonus: 20% do dano causado ao inimigo SE
FOI VOCÊ que o matou.
Ram Damage: 2 pontos a cada dano de colisão no
inimigo.
Ram bonus: 30% do dano por colisão.
SECITEC 2013 - IFBA
Criando uma batalha

Clicar em Battle New (ou CTRL-N)
2
MC46 ROBOCODE - Robôs de Combate em
Java
Criando uma batalha

Configurações
Para configurar a Plataforma Robocode
Para visualizar o radar scan

Opções da Batalha
Tela com todos os robôs disponíveis.
Configurando o ROBOCODE

02/06/2014
Para visualizar o efeito do radar
procurando os inimigos, selecione
VISIBLE SCAN ARCS
SECITEC 2013 - IFBA
Criando um Robô

Clicar em Robot Source Editor (CTRL-E)
3
MC46 ROBOCODE - Robôs de Combate em
Java
Criando um Robô

File New Robot (CTRL N)
Criando um robô








Digite o nome do robô – sem espaços
Programe o seu robô!
Só permite salvar após alterar
package aula;
import robocode.*;
//import java.awt.Color;
public class Teste extends Robot
{
public void run() {
while(true) {
ahead(100);
turnGunRight(360);
back(100);
turnGunRight(360);




}
}
public void onScannedRobot(ScannedRobotEvent e) {
fire(2);
}
public void onHitByBullet(HitByBulletEvent e) {
back(10);
}
public void onHitWall(HitWallEvent e) {
back(20);
}












Criando um robô
Digite o nome do pacote (package) para
evitar conflitos com outros nomes.
Examinando o robô

02/06/2014
}
SECITEC 2013 - IFBA
4
MC46 ROBOCODE - Robôs de Combate em
Java
Primeira vez que cria o pacote

Na primeira vez que cria o pacote, o
ROBOCODE pede para criar a pasta.
Confirme.
Para testar o robô

Adicione o seu robô e o robô TARGET
(alvo)
02/06/2014
Compilando o robô

Compiler Compile (CTRL B)
Testando o Robô
Depois inclua outros Robôs na batalha.
 Sugestões: Walls, TrackFire e outros.

Eventos
onScannedRobot(ScannedRobotEvent
e) – chamado sempre que outro robô for
detectado pelo radar.
 onHitRobot(HitRobotEvent e) –
chamado quando colide com outro robô.
 onHitByBullet(HitByBulletEvent e) –
chamado quando é atingido por uma
bala.
 onHitWall(HitWallEvent e) – chamado
quando atinge uma parede.

SECITEC 2013 - IFBA
5
MC46 ROBOCODE - Robôs de Combate em
Java
Comandos para importar os
eventos
import robocode.HitRobotEvent;
import robocode.Robot;
import robocode.ScannedRobotEvent;
 import robocode.HitByBulletEvent;
 import robocode.WinEvent;
 import static
robocode.util.Utils.normalRelativeAngleDe
grees;




02/06/2014
Trocando as cores do robô
É possível personalizar as cores:
setBodyColor(Color.black); // corpo
 setGunColor(Color.blue); // canhão
 setRadarColor(Color.white); // radar
 setBulletColor(Color.cyan); // bala
 setScanColor(Color.cyan); // cor do
facho do radar


import java.awt.*;
Comandos de movimento
Comandos de tiro e radar

ahead(x); x pixels para a frente
 back(x); x pixels para trás
 turnRight(90); 90º para a direita ou
quanto desejar
 turnLeft(45); 45º para a esquerda

Comandos de Informação
Examinando outros robôs
getX() e getY() - obtêm a posição do
robô
 getHeading() – direção para onde o
robô segue
 getGunHeading() – direção do canhão
 getRadarHeading() – direção do radar
 getBattleFieldWidth() – largura da arena
 getBattleFieldHeight() – altura da arena


SECITEC 2013 - IFBA
fire(x);
x tiros consecutivos
 scan();
procure inimigos
 turnGunRight(w); gire a arma para
direita w graus
 turnGunLeft(w); gire a arma para
esquerda w graus
É possível abrir os robôs exemplo para
ver como funcionam e estudar a forma
de utilizar os eventos e métodos vistos.
 No Editor de Robôs: File Open
6
MC46 ROBOCODE - Robôs de Combate em
Java
Alguns links interessantes

02/06/2014
PRONTO!
Central do Robocode:

 http://robocode.sourceforge.net/


Robô wiki

Segredos dos Mestres do Robocode
 http://robowiki.net/
Experimente vários robôs;
Faça cópias;
 Altere a estratégia;
 Teste!
 Faça o Melhor, destrua os outros!
 http://www.ibm.com/developerworks/library/j-
tipstrats/index.html
A Competição
Equipes de 1 a 3 pessoas
 4 grupos de 3 equipes
 MicroBot (código de até 750 bytes)
 45 minutos para programação do robô
 Recolhimento dos robôs
 Confrontos da fase de grupos

COMPETIÇÃO

Grupos:





Sorteio dos grupos
Equipes batalham entre si
Cada batalha terá apenas 3 rounds
Os 2 primeiros de cada grupo avançam
Quartas de final e Semifinal
 20 minutos para ajustar os robôs
 Os vencedores de cada batalha avançam
 Cada batalha terá 3 rounds

Final
 A batalha terá 5 rounds
SECITEC 2013 - IFBA
7
Download

MC24 – ROBOCODE – Robôs de Combate em Java - Week-IT