0% acharam este documento útil (0 voto)
173 visualizações

Tutorial Robocode

O documento descreve o ambiente Robocode, que permite a criação de robôs virtuais em Java. Para usar o Robocode, é necessário ter um computador com pelo menos um Pentium II de 400MHz, 64MB de RAM e 10MB de espaço em disco. O documento então explica as regras das batalhas entre robôs no Robocode, como se movimentar, atirar e perder energia. Por fim, fornece instruções sobre como criar o primeiro robô, compilá-lo e testá-lo em batalha contra outros robôs.

Enviado por

Edson Patrício
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
173 visualizações

Tutorial Robocode

O documento descreve o ambiente Robocode, que permite a criação de robôs virtuais em Java. Para usar o Robocode, é necessário ter um computador com pelo menos um Pentium II de 400MHz, 64MB de RAM e 10MB de espaço em disco. O documento então explica as regras das batalhas entre robôs no Robocode, como se movimentar, atirar e perder energia. Por fim, fornece instruções sobre como criar o primeiro robô, compilá-lo e testá-lo em batalha contra outros robôs.

Enviado por

Edson Patrício
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 19

Robocode - Introduo

O ROBOCODE um ambiente JAVA que contm ferramentas para a


criao e uso de robs. Para que voc possa executar, necessrio ter um
computador com:

Pentium II - 400, ou equivalente, para ter uma velocidade razovel

64MB de RAM

Aprox. 10MB de disco para instalao, mais alguma folga.

Deve ter instalado o JSDK verso 1.3 em diante. (Se no tiver, baixe daqui a
verso 1.4 ), instale ento o Robocode. Clique neste arquivo e deixe que ele
se instale. Ao fim haver um cone na rea de trabalho do Windows com o
ttulo Robocode.

Regras
A batalha pode ser configurada: a quantidade de rounds, o tamanho do ring
em pixels, os robs que lutaro entre s. Pode escolher visualizar o nome em
baixo dos robs, as energias, os seus radares, e permitir a mudana de cor
durante a batalha.
O rob pode se movimentar para frente ou para traz e fazer curvas. O
canho(Gun) pode virar no sentido horrio e anti-horrio em 360 graus, e
dar tiros(Bullet) de fora >0 e <=3. Quando o rob fica
desabilitado(Disabled), ele perde seus movimentos, isso acontece quando
sua energia fica igual a 0. O rob "cego", a nica coisa que ele v so os
robs adversrios scaneado pelo radar(Radar), os tiros o radar no enxerga.
Todos os robs comeam cada round com energia 100, e os que ficarem com
energia abaixo de 0 vo sendo eliminados (explodem) restando apenas um, e
ento comea um novo round. No fim de todos os rounds a batalha acaba e
aparece uma tabela mostrando a pontuao e a colocao.
Perde energia quando:
bate na parede: (energia) - 1
bate em outro rob(os dois perdem): (energia) - 1
quando atira: (energia) - (poder_do_tiro).
quando leva um tiro: (energia) - (4 * poder_do_tiro_advesrio).
Ganha energia quando:
acerta um tiro no adversario: (energia) + (2 *
(energia_perdida_do_adversrio - poder_do_tiro).

Criando o seu primeiro rob


A primeira coisa abrir o editor de robs do menu principal, clique em
Menu -> Editor. Quando a janela do editor abrir, clique em File -> New
Robot para criar um rob novo. Entre com o nome do seu rob e depois
digite o nome do diretrio que os arquivos do seu rob ficar esse diretrio
dever estar dentro do diretrio "C:\Robocode\Robots\". Se o diretrio que
voc digitou no existir ele cria automaticamente. Agora deve aparecer o
cdigo bsico do rob.
package Novo; // aqui "Novo" o nome do diretrio que est seu rob
import robocode.*;
public class MeuRob extends Robot { //Onde "MeuRob" o nome do rob, digitado

anteriormente.
//Onde est escrito "Robot" digite no lugar "AdvancedRobot" que uma classe mais
avanada.
public void run() {
while (true) { // while() um comando de repetio. Como est sendo
mandado um parmetro
// "true", causar um loop infinito, fazendo repetir os comandos dentro
dele at a batalha acabar.
// Quando outro evento tiver sendo executado a repetio interrompida e
voltar de onde parou
// quando acabar de executar os comandos do evento.
ahead(100);
turnGunRight(360);
back(100);
turnGunRight(360);
}
}
public void onScannedRobot(ScannedRobotEvent e){
fire(1);
}
}

O prximo passo gravar e compilar o rob.


Para gravar, seleciona File -> Save e siga as instrues. Para compilar, seleciona Compile > Compile. V agora para a tela do ambiente e dentro do item de menu Battles -> New,
escolha o seu rob e algum outro para a disputa.
Voc tambm pode examinar como cada um destes robs "samples" foram construdos.

Eventos
sensato conhecer todos os eventos para ter a mente mais aberta quando for
comear a programar a inteligncia de seu rob.
Os eventos so chamados quando acontece algo especfico no decorrer do
combate. Alguns deles te enviam, por parmetro, dados do rob adversrio
em questo para voc trabalhar com esses valores dentro do evento.
Exemplo: se voc digitar "e.getBearing()" dentro de algum evento que
contm na classe da varivel, enviada por parmetro, o mtodo
"getBearing()" , como os tipos ScannedRobotEvent e HitRobotEvent,
retornar o ngulo do rob inimigo em questo. Sendo que "e" o nome da
varivel usada como parmetro, que pode ser qualquer outro.
INDICE:

Run

onScannedRobot

onWin

onHitRobot

onHitWall

onHitByBullet

onBulletHit

onBulletMissed

onBulletHitBullet

onDeath

onRobotDeath

onSkippedTurn

onCustomEvent

Run
executado quando o round for iniciado.
Diferente do que muitos pensam esse evento s ser chamado novamente
quando iniciar outro round. Por isso muito comum e recomendado usar um
loop infinito dentro dele, para que seu rob nunca fique parado quando no
tiver sendo executado outro evento.

Exemplo:
public void Run()
{
do
{
turnRadarLeft(360);
setAhead(200);
turnRight(300);
}while(true)
}

onScannedRobot
Executado quando o radar do seu rob encontra um adversrio.
um dos eventos mais importantes, pois a nica forma de saber a energia,
a distncia, o ngulo dos seus inimigos para poder atira nele. A no ser se
voc colidir com outro rob, que j seria um outro evento.
Metodos da classe ScannedRobotEvent:
Comandos

Tipo
Retorno

Descrio Retorno

getName()
getBearing()

String
double

Retorna o nome do rob adversrio scaneado.


Retorna o ngulo do rob adversrio em relao ao seu rob

getBearingRadians()

double

ngulo em radianos do rob adversrio em relao ao seu.

getDistance()

double

Retorna a distncia do rob adversrio em relao ao seu rob.

getEnergy()
getHeading()

double
double

Retorna a energia do rob adversrio.


Retorna o ngulo em graus do adversrio em relao a tela.

getHeadingRadians()

double

Retorna o ngulo em radianos do adversrio em relao a tela.

getVelocity()

double

Retorna a velocidade do rob scaneado.

Exemplo:
public void onScannedRobot(ScannedRobotEvent Inimigo)
{
double angulo = Inimigo.getBearing();
double distancia = Inimigo.getDistance();
if ( distancia < 200 )
{
turnGunRight(angulo);
fire(2);

}
}

Obs: No confunda "getEnergy()" com " Inimigo.getEnergy()", pois o


primeiro a energia de seu rob e o outro a energia do rob scaniado.

onWin
executado quando seu rob ganha o round.
J que aqui o round terminou, aproveite para programar uma risadinha, uma
dana, malhando dos derrotados. Ou para ele parar de andar, evitando que
bata na parede, perdendo energia.
Exemplo
public void onWin(WinEvent e)
{
turnRight(36000);
}

onHitRobot
executado quando seu rob bate em outro rob.
Aproveite que voc est bem perto do inimigo, vire o canho para ele e
mande um tiro de fora mxima, porque dificilmente errar.
Mtodos da classe HitRobotEvent:
Comandos
getName()
getBearing()

Tipo
Retorno
String
double

getBearingRadians()

double

getEnergy()
isMyFault()

double
boolean

Descrio Retorno
Retorna o nome do rob adversrio colidido.
ngulo em graus do rob adversrio em relao ao seu
rob
ngulo em radianos do rob adversrio em relao ao
seu rob.
Retorna a energia do rob adversrio.
Retorna true se foi seu rob quem originou o evento, e
false se foi o adversrio que bateu em seu rob.

Exemplo:
public void onHitRobot(HitRobotEvent INI)
{
turnRight(INI.getBearing());
fire(3);
}

onHitWall
executado quando seu rob colide com a parede.
Quando seu rob bate na parede, perde energia. Ento o mnimo que voc
deve fazer mudar a direo dele, seno ele vai ficar de encontro parede
at perder toda a sua energia.
Mtodos da classe HitWallEvent:
Comandos
getBearing()

Tipo
Retorno
double

getBearingRadians()

double

Descrio Retorno
ngulo em graus da parede batida em relao ao seu
rob.
ngulo em radianos da parede batida em relao ao
seu rob.

Exemplo:
public void onHitWall(HitWallEvent e)
{
turnLeft(180);
}

onHitByBullet
executado quando seu rob leva um tiro.
Se a estratgia do seu rob ficar parado enquanto atira, bom utilizar esse
evento para sair do local de onde acabou de levar um tiro, para voc no se
tornar um alvo fcil.
Mtodos da classe HitByBulletlEvent:
Comandos
getName()

Tipo
Retorno
String

getBearing()

double

getBearingRadians()

double

getHeading()

double

getHeadingRadians()

double

getBullet()

Bullet

getPower()
getVelocity()

double
double

Descrio Retorno
Retorna o nome do rob adversrio que te acertou um
tiro.
Retorna o ngulo do rob adversrio em relao ao seu
rob.
ngulo em radianos do rob adversrio em relao ao
seu rob.
Retorna o ngulo em graus do rob adversrio em
relao a tela.
ngulo em radiaons do rob adversrio em relao a
tela.
Retorna o Bullet (tiro) do rob adversrio que atingiu
seu rob.
Retorna a fora do tiro.
Retorna a velocidade do tiro.

Exemplo:
public void onHitByBullet(HitByBulletEvent e)
{
ahead(100);
}

onBulletHit
executado quando seu tiro acerta um adversrio.
Mtodos da classe BulletHitEvent:
Comandos
getName()

Tipo
Retorno
String

getBullet()

Bullet

getEnergy()

double

Descrio Retorno
Retorna o nome do rob adversrio que voc acertou um
tiro.
Retorna o Bullet (dados do tiro) de seu rob que atingiu o
adversrio.
Retorna a energia do rob adversrio aps levar o tiro.

Exemplo:
public void onBulletHit(BulletHitEvent e)
{
Acertos++;
}

Esse evento e os outros abaixo so usados em programaes mais avanadas


e complexas.

onBulletMissed
executado quando uma de suas balas colide com a parede(erra o tiro).
Mtodos da classe BulletMissedEvent:
Comandos
getBullet()

Tipo
Retorno
Bullet

Descrio Retorno
Retorna o Bullet (dados do tiro), de seu rob, que bateu na
parede.

Exemplo:
public void onBulletMissed(BulletMissedEvent e)
{
ERROS++;
}

onBulletHitBullet
executado quando uma de suas balas colide com outra bala.
Mtodos da classe BulletHitBulletEvent:
Comandos
getBullet()
getHitBullet()

Tipo
Retorno
Bullet
Bullet

Descrio Retorno
Retorna o Bullet (dados do tiro) de seu rob.
Retorna o Bullet do rob adversrio.

public void onBulletHitBullet(BulletHitBulletEvent e)


{
}

onDeath
executado se seu rob morrer.
Exemplo:
public void onDeath(DeathEvent e)
{
System.out.println(getName()+" morreu!");
System.out.println("Quantidade de inimigos ainda vivo: "+getOthers());
}

onRobotDeath
executado quando morre um adversrio.
Mtodos da classe RobotDeathEvent:
Comandos
getName()

Tipo
Retorno
String

Descrio Retorno
Retorna o nome do rob que morreu.

Exemplo:
public void onRobotDeath(RobotDeathEvent e)
{
if(Nome==e.getName())
Nome=null;
}

onSkippedTurn
Se voc estiver um longo tempo sem ao.
Exemplo:
public void onSkippedTurn(SkippedTurnEvent e)
{
turnGunLeft(360);
}

onCustomEvent
Quando um uso de condio "addCustomEvent" satisfeita.
Comandos
getCondition()

Tipo
Retorno
Condition

Descrio Retorno
Retorna a condio que gerou o evento.

Exemplo:
public void onCustomEvent(CustomEvent e)
{
}

Mtodos
Movimentao - Robot
Comando
ahead( double )

Parmetro
a distncia que o rob
dever percorrer.

back( double )

a distncia que o rob


dever percorrer.
o ngulo em graus que o
rob dever girar.
o ngulo em graus que o
rob dever girar.
o ngulo em graus que o
canho dever girar
o ngulo em graus que o
canho dever girar
o ngulo em graus que o
radar dever girar
o ngulo em graus que o
radar dever girar

turnRight( double )
turnLeft( double )
turnGunRigth( double )
turnGunLeft( double )
turnRadarRigth( double
)
turnRadarLeft( double )

Descrio
Movimenta o rob para frente, uma distncia x
dada por parmentro. Se o rob bater em outro, ou
na parede antes de completar a distancia desejada o
mtodo interrompido.
Semelhante ao mtodo anterior, a nica diferena
que o rob move para traz.
Gira o rob para a direita (sentido horrio).
Gira o rob para a esquerda (sentido anti-horrio).
Gira o canho para a direita.
Gira o canho para a esquerda.
Gira o radar para a direita.
Gira o radar para a esquerda.

Movimentao - AdvancedRobot
Os comandos da classe AdvancedRobot que comeam com "set" eles funcionam como os
herdados da classe Robot. A diferena que enquanto o mtodo est sendo executado ele
continua executando as linhas de comando abaixo. Com isso possvel misturar
movimentos. Por exemplo, se tiver:
ahead(100);
turnRight(90);
o rob ir andar para frente e depois que tiver terminado de percorrer a distncia 100, ele
girar 90. Mas se tiver:
setAhead(100);
setTurnRight(90);
o rob andar para frente e girar 90 ao mesmo tempo, fazendo uma curva.

Comando
setAhead( double )
setBack( double )
setTurnRight( double )
setTurnLeft( double )
setTurnGunRigth( double )
setTurnGunLeft( double )
setTurnRadarRigth( double )
setTurnRadarLeft( double )

Parmetro
a distncia que o rob dever percorrer.
a distncia que o rob dever percorrer.
o ngulo em graus que o rob dever
girar.
o ngulo em graus que o rob dever
girar.
o ngulo em graus que o canho dever
girar
o ngulo em graus que o canho dever
girar
o ngulo em graus que o radar dever
girar
o ngulo em graus que o radar dever
girar

Descrio
Herdado do mtodo ahead.
Herdado do mtodo back.
Herdado do mtodo turnRight.
Herdado do mtodo turnLetf.
Herdado do mtodo
turnGunRigth.
Herdado do mtodo
turnGunLeft.
Herdado do mtodo
turnRadarRigth.
Herdado do mtodo
turnRadarLeft.

Movimentao - AdvancedRadiansRobot
Esses mtodos "Radians" so usados quando vai se trabalhar com PI, seno, cosseno,
tangente.
Os mtodos que comeam com "set" so como aqueles visto acima, que continuam lendo as
linhas de comando abaixo, misturando movimentos.
Comando
turnRightRadians( double )
turnRightRadians( double )
turnGunRightRadians( double )
turnGunLeftRadians( double )
turnRadarRigthRadians( double
)
turnRadarLeftRadians( double )
setTurnRightRadians( double )
setTurnLeftRadians( double )
setTurnGunRightRadians(
double )
setTurnGunLeftRadians( double
)
setTurnRadarRigthRadians(
double )
setTurnRadarLeftRadians(
double )

Parmetro
o ngulo em radianos
o ngulo em radianos
o ngulo em radianos
o ngulo em radianos
o ngulo em radianos

Descrio
Gira o rob para a direita.
Gira o rob para a esquerda.
Gira o canho para a direita.
Gira o canho para a esquerda.
Gira o radar para a direita.

o ngulo em radianos
o ngulo em radianos
o ngulo em radianos
o ngulo em radianos

Gira o radar para a esquerda.


Herdado do mtodo turnRightRadians.
Herdado do mtodo turnLeftRadians.
Herdado do mtodo turnGunRightRadians.

o ngulo em radianos

Herdado do mtodo turnGunLeftRadians.

o ngulo em radianos

Herdado do mtodo turnRadarRightRadians.

o ngulo em radianos

Herdado do mtodo turnRadarLeftRadians.

Tiro - Robot
Comando
fire( double )

Parmetro
a fora do tiro, e subtraido da energia
de seu rob.

fireBullet(
double )

a fora do tiro, e subtraido da energia


de seu rob.

Descrio

Atira imediatamente na fora mandada


por parmetro,
de 0.1 at 3. Se mandar um tiro maior
que 3 ele considera fora 3.
A diferena do mtodo anterior que ele uma
funo e retorna um valor do tipo Bullet, alm
disso, manda outro tiro em seguida, este com
mais velocidade, se o primeiro tiro tiver boas
possibilidades da acertar.

Tiro - AdvancedRobot
Comandos
setFire( double )
setFireBullet(
double )

Parmetro
a fora do tiro, e subtraido da
energia de seu rob.
a fora do tiro, e subtraido da
energia de seu rob.

Descrio
Herdado do mtodo fire.
Herdado do mtodo fireBullet.

Envia Dados Para O Rob


Comando
setAdjustGunForRobotTurn(
boolean )
setAdjustRadarForGunTurn(
boolean )
setColors( Color, Color, Color )

Parmetro

a cor do rob, a cor do canho,


a cor do radar, nesta ordem.

Descrio

Atribuem as cores do rob.

Retorna Dados do Rbo


Comando
getName()
getEnergy()
getX()

Tipo do
Retorno
String
double
double

getY()

double

getWidth()
getHeight()
getHeading()

double
double
double

getGunHeading()

double

getRadarHeading()
getGunCoolingRate()
getGunHeat()
getVelocity()

double
double
double
double

Descrio do Retorno
Retorna o nome do rob.
Retorna a energia corrente do rob.
A posio X(eixo horizontal) do rob na arena de batalha. Quando
0(zero) ele estar encostado no lado esquerdo.
A posio Y(eixo vertical) do rob na arena de batalha. Quando 0(zero)
ele estar encostado na parte de baixo.
Retorna a largura do rob.
Retorna a altura do rob.
Retorna o ngulo em graus ( de 0 at 360 ) que o rob est virado. Se
retornar 0(zero) ele est virado para a esquerda, se retornar 90 ele est
voltado para cima.
Retorna o ngulo em graus que o canho est virado. Como no mtodo
anterior.
Retorna o ngulo em graus que o radar est virado.
Retorna quanto o canho est virando no momento corrente.
Retorna a velocidade do rob.

Retorna Dados do Rob - AdvancedRadiansRobot


Comandos
getHeadingRadians()

Tipo do
Retorno
double

getGunHeadingRadians()

double

getRadarHeadingRadians()

double

getTurnRemainingRadians()
getGunTurnRemainingRadians()
getRadarTurnRemainingRadians()

double
double
double

Retorno
Retorna a direo que o rob est voltado, em radianos
(de 0 at 2*PI).
Retorna o ngulo em radianos do canho est apontado
em relao a tela
Retorna o ngulo em radianos do radar est voltado em
relao a tela

Retorna Dados da Batalha


Comandos
getOthers()
getBattleFieldHeight()
getBattleFieldWidth()
getNumRounds()
getRoundNum()
getTime()

Tipo do
Retorno
int
double
double
int
int
long

Retorno
Retorna o total de oponentes ainda vivos no round.
Retorna a altura da arena de batalha.
Retorna a largura da arena de batalha.
Retorna o total de rounds da batalha.
Retorna o nmero do round corrente.
Retorna o tempo do round. Quando inicia outro round o tempo volta a
0(zero). O tempo equivale ao nmero de quabgazul.jpgdros
mostrados.

Outros
Comando
doNothing()
scan()
stop()
stop( boolean )
resume()
setResume()
setStop()
setStop(
boolean )
finalize()

Parmetro
nenhum parmetro
nenhum parmetro
nenhum parmetro
nenhum parmetro
nenhum parmetro
nenhum parmetro

nenhum parmetro

Descrio

Funes
Voc pode digitar a funo em qualquer lugar dentro do "public class", no
incio ou no fim do cdigo, a linguagem Java permite.
INDICE:

anguloRelativo

mira

dancinha

dancinha2

dancinha3

risadinha

fogo

tiroFatal

pertoParede

anguloRelativo
Essa funo muito utilizada, at pelos robs do diretrio samples. Nela voc manda por
parmetro o ngulo(valor do tipo double) a ser deslocado pelo radar, ou pelo canho, ou at
mesmo do seu rob se voc querer ir em direo ao inimigo, a funo retornar se a volta
menor ser no sentido horrio ou anti-horrio.

public double anguloRelativo(double ANG)


{
if (ANG> -180 && ANG<= 180)
return ANG;
double REL = ANG;
while (REL<= -180)
REL += 360;
while (ANG> 180)
REL -= 360;
return REL;
}

No evento onScanedRobot ou onHitRobot digite:


turnRadarRight(anguloRelativo(e.getBearing()+getHeading()getRadarHeading()));//para mirar o radar no adversrio.
turnGunRight(anguloRelativo(e.getBearing()+getHeading()getGunHeading())); //para mirar o canho no adversrio.

turnRight(anguloRelativo(e.getBearing)); //para virar seu rob em direo do

adversrio
Obs: Sempre "Right", nunca use "Left" para essa funo porque no da
certo.

mira
Isso na verdade um procedimento e no uma funo, criado em base da funo anterior.
Ela mira o canho com mais rapidez e o cdigo mais limpo. A funo anterior j est
embutida, ela no ser mais necessria.

public void mira(double Adv)


{
double A=getHeading()+Adv-getGunHeading();
if (!(A > -180 && A <= 180))
{
while (A <= -180)
A += 360;
while (A > 180)
A -= 360;
}
turnGunRight(A);
}

No evento onScanedRobot ou onHitRobot digite:


mira(e.getBearing());//mira o canho contra o adversrio
fire(2);

dancinha
Procedimento que voc usa para gozar do adversrio ou comemorar quando
ganhar um round.
public void dancinha()
{
setAhead(5);
setTurnRight(360D);
setTurnGunLeft(360D);
setTurnRadarRight(30D);
}

No evento onWin digite:


dancinha();

dancinha2
Aqui outro tipo de dancinha.
public void dancinha2()
{
setMaxVelocity(8D);
setTurnRight(dir * 30);
setTurnGunLeft(dir * 30);
setTurnRadarRight(dir * 30);
if(getTime() % (long)2 == 0L)
dir *= -1;
}

No evento onWin digite:


dancinha2();

dancinha3
Essa comemorao sai atirando bala pra tudo que lado
public void dancinha3()
{
setMaxVelocity(5);
setTurnGunRight(10000);
while(true)
{
ahead(20);
back(20);
if (getEnergy() > 0.1)
fire(0.1);
}
}

risadinha
Malhando dos perdedores. Treme o rob como se estivesse rindo.
public void rizadinha()
{
for (int i = 0; i < 50; i++)
{
turnRight(30);
turnLeft(30);
}
}

fogo
Esse procedimento melhora o tiro do seu rob, voc no disperdiar energia
e o rob parar de atirar de muito longe quando a energia dele for menor que
15.
public void fogo(double Distancia)
{
if (Distancia> 200 || getEnergy() < 15)
fire(1);
else if (Distancia > 50)
fire(2);
else
fire(3);
}

Para usar:
fogo(e.getDistance());

tiroFatal
Esse procedimento da um tiro baseado na energia inimiga, ela muito boa
para dar o ltimo quando o adversrio estiver com um tiro para
morrer(energia <12), porque seu rob no disperdiar energia. Por
exemplo, se o adversrio estiver com energia=3, e voc der um tiro 3 voc
vai mat-lo e vai ganhar 3 de energia (3*2-3 =3), mas com essa funo voc
tambm matar e ganhar 5.15 de energia (3*2-0.85=5.15)
public void tiroFatal(double EnergiaIni)
{
double Tiro = (EnergiaIni / 4) + .1;
fire(Tiro);
}

Para usar:
if(e.getEnergy<12)
tiroFatal(e.getEnergy);
else
fire(2);

pertoParede
Funo que retorna true(verdadeiro) se seu rob est perto da parede
public boolean pertoParede()
{
return (getX()<50 || getX()>getBattleFieldWidth()-50 || getY()<50 ||
getY()>getBattleFieldHeight()-50);
}

antes de mandar seu rob andar escreva:


if(pertoParede())
back(100);
else
ahead(100);

Você também pode gostar