É 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.
É 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.
public void Run() { do { turnRadarLeft(360); setAhead(200); turnRight(300); } while(true) }
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.
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. |
public void onScannedRobot(ScannedRobotEvent Inimigo) { double angulo = Inimigo.getBearing(); double distancia = Inimigo.getDistance(); if ( distancia < 200 ) { turnGunRight(angulo); fire(2); } }
É 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.
public void onWin(WinEvent e) { turnRight(36000); }
É 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á.
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ô. |
public void onHitRobot(HitRobotEvent INI) { turnRight(INI.getBearing()); fire(3); }
É 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.
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ô. |
public void onHitWall(HitWallEvent e) { turnLeft(180); }
É 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.
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. |
public void onHitByBullet(HitByBulletEvent e) { ahead(100); }
É executado quando seu tiro acerta um adversário.
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. |
public void onBulletHit(BulletHitEvent e) { Acertos++; }
Esse evento e os outros abaixo são usados em programações mais avançadas e complexas.
É executado quando uma de suas balas colide com a parede(erra o tiro).
Comandos | Tipo Retorno | Descrição Retorno |
getBullet() | Bullet | Retorna o Bullet (dados do tiro), de seu robô, que bateu na parede. |
public void onBulletMissed(BulletMissedEvent e) { ERROS++; }
É executado quando uma de suas balas colide com outra bala.
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) { }
É executado se seu robô morrer.
public void onDeath(DeathEvent e) { System.out.println(getName()+" morreu!"); System.out.println("Quantidade de inimigos ainda vivo: "+getOthers()); }
É executado quando morre um adversário.
Comandos | Tipo Retorno | Descrição Retorno |
getName() | String | Retorna o nome do robô que morreu. |
public void onRobotDeath(RobotDeathEvent e) { if (Nome == e.getName()) { Nome = null; } }
Se você estiver um longo tempo sem ação.
public void onSkippedTurn(SkippedTurnEvent e) { turnGunLeft(360); }
Quando um uso de condição "addCustomEvent" é satisfeita.
Comandos | Tipo Retorno | Descrição Retorno |
getCondition() | Condition | Retorna a condição que gerou o evento. |
public void onCustomEvent(CustomEvent e) { }
[voltar]