Robocode - Eventos

É sensanto conhecer todos os eventos para ter a mente mais aberta quando for começar a programar a inteligência de seu robô.

Os eventos são chamados quando acontece algo específico no decorrer do combate. Alguns deles te enviam, por parâmetro, dados do robô adversário em questão para você trabalhar com esses valores dentro do evento. Exemplo: se você digitar "e.getBearing()" dentro de algum evento que contém na classe da variável, enviada por parâmetro, o método "getBearing()" , como os tipos ScannedRobotEvent e HitRobotEvent, retornará o ângulo do robô inimigo em questão. Sendo que "e" é o nome da variável usada como parâmetro, que pode ser qualquer outro.

Índice

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 não 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 adversário.

É um dos eventos mais importantes, pois é a única forma de saber a energia, a distância, o ângulo do seus inimigos para poder atira nele. A não ser se você colidir com outro robô, que já seria um outro evento.

Metodos da classe ScannedRobotEvent
Comandos Tipo Retorno Descrição Retorno
getName() String Retorna o nome do robô adversário scaneado.
getBearing() double Retorna o ângulo do robô adversário em relação ao seu robô
getBearingRadians() double Ângulo em radianos do robô adversário em relação ao seu.
getDistance() double Retorna a distacia do robô adversário em relação ao seu robô.
getEnergy() double Retorna a energia do robô adversário.
getHeading() double Retorna o ângulo em graus do adversário em relação a tela.
getHeadingRadians() double Retorna o ângulo em radiaons do adversário em relação 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);
	}
}
Observação: Não confunda "getEnergy()" com "e.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 rizadinha, uma dancinha, 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 canhão para ele e mande um tiro de força máxima, porque dificilmente errará.

Métodos da classe HitRobotEvent
Comandos Tipo Retorno Descrição Retorno
getName() String Retorna o nome do robô adversário colidido.
getBearing() double Ângulo em graus do robô adversário em relação ao seu robô
getBearingRadians() double Ângulo em radianos do robô adversário em relação ao seu robô.
getEnergy() double Retorna a energia do robô adversário.
isMyFault() boolean Retorna true se foi seu robô quem originou o evento, e false se foi o adversário 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. Então o mínimo que você deve fazer é mudar a direção dele, senão ele vai ficar de encontro à parede até perder toda a sua energia.

Métodos da classeHitWallEvent
Comandos Tipo Retorno Descrição Retorno
getBearing() double Ângulo em graus da parede batida em relação ao seu robô.
getBearingRadians() double Ângulo em radianos da parede batida em relação ao seu robô.
Exemplo
public void onHitWall(HitWallEvent e) {
	turnLeft(180);
}

onHitByBullet

É executado quando seu robô leva um tiro.

Se a estratégia do seu robô é ficar parado enquanto atira, é bom utilizar esse evento para sair do local de onde acabou de levar um tiro, para você não se tornar um alvo fácil.

Métodos da classe HitByBulletlEvent
Comandos Tipo Retorno Descrição Retorno
getName() String Retorna o nome do robô adversário que te acertou um tiro.
getBearing() double Retorna o ângulo do robô adversário em relação ao seu robô.
getBearingRadians() double Ângulo em radianos do robô adversário em relação ao seu robô.
getHeading() double Retorna o ângulo em graus do robô adversário em relação a tela.
getHeadingRadians() double Ângulo em radiaons do robô adversário em relação a tela.
getBullet() Bullet Retorna o Bullet (tiro) do robô adversário que atingiu seu robô.
getPower() double Retorna a força do tiro.
getVelocity() double Retorna a velocidade do tiro.
Exemplo
public void onHitByBullet(HitByBulletEvent e) {
	ahead(100);
}

onBulletHit

É executado quando seu tiro acerta um adversário.

Métodos da classeBulletHitEvent
Comandos Tipo Retorno Descrição Retorno
getName() String Retorna o nome do robô adversário que você acertou um tiro.
getBullet() Bullet Retorna o Bullet (dados do tiro) de seu robô que atingiu o adversário.
getEnergy() double Retorna a energia do robô adversário após levar o tiro.
Exemplo
public void onBulletHit(BulletHitEvent e) {
	Acertos++;
}

Esse evento e os outros abaixo são usados em programações mais avançadas e complexas.


onBulletMissed

É executado quando uma de suas balas colide com a parede(erra o tiro).

Métodos da classeBulletMissedEvent
Comandos Tipo Retorno Descrição Retorno
getBullet() Bullet 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.

Métodos da classeBulletHitBulletEvent
Comandos Tipo Retorno Descrição Retorno
getBullet() Bullet Retorna o Bullet (dados do tiro) de seu robô.
getHitBullet() Bullet Retorna o Bullet do robô adversário.
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 adversário.

Métodos da classeRobotDeathEvent
Comandos Tipo Retorno Descrição Retorno
getName() String 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 ação.

Exemplo
public void onSkippedTurn(SkippedTurnEvent e) {
	turnGunLeft(360);
}

onCustomEvent

Quando um uso de condição "addCustomEvent" é satisfeita.

Comandos Tipo Retorno Descrição Retorno
getCondition() Condition Retorna a condição que gerou o evento.
Exemplo
public void onCustomEvent(CustomEvent e) {
}

[voltar]