• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Jeangleison

[Urgente] Não consigo entender o método

4 mensagens neste tópico

Olá galera estou estudando robocode e me deparei com esse método que não entendi:

 public void onScannedRobot(ScannedRobotEvent e) 
    {
       double posicaoAbsoluta = getHeading() + e.getBearing();
       double posicaoDaArma = posicaoAbsoluta - getGunHeading();
       turnGunRight(posicaoDaArma);
       fire(3);   
    }

porfavor estou precisando que me ajudem o mais rápido posivel, grato!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso é um evento, pelo aspecto diria q é disparado assim q o teu robot encontra outro.

recebe como parametro argumentos do robot q encontrou.

Depois calcula a sua posição e a da arma, e vira a arma até ficar de frente p o inimigo e dispara.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Primeira coisa:

Esse método é chamado sempre que outro robot é detectado no radar e recebe sempre como argumento um objecto do tipo ScannedRobotEvent que te permite aceder a várias informações e métodos sobre o teu robot e o robot detectado nesse momento.

Se não estou em erro esse método tem que ser implementado obrigatóriamente.

Agora o que é que o exemplo que afixaste faz? Vamos analisar então.

Em primeiro lugar, esses valores todos são ângulos.

double posicaoAbsoluta = getHeading() + e.getBearing();

Guarda na variável posicaoAbsoluta a direcção na bússola em que o outro robot está em relação a ti. Isto é feito somando o ângulo que a frente do teu robot faz com o norte com ângulo que a direcção em que o outro robot está em relação a para onde estás virado.

double posicaoDaArma = posicaoAbsoluta - getGunHeading();

gurda na variável posicaoDaArma o ângulo da arma faz com a direcção do outro robot. Ou seja, o ângulo que é preciso roda-la para por o gajo na mira.

Se for zero então quer dizer que já estás pronto a disparar!

turnGunRight(posicaoDaArma);

Pega-se no ângulo anterior e roda-se a arma esses tantos radianos/graus...

Supostamente tens o enimigo na mira!

muaahahahahah!

fire(3);

Dispara um bala de calibre 3.

Boom! Se o gajo não se desviar já leva com um tiro.

porfavor estou precisando que me ajudem o mais rápido posivel, grato!

Não é preciso pedir desta forma, o pessoal aqui ajuda sempre que pode.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora