-
Notifications
You must be signed in to change notification settings - Fork 0
/
kader_wolkenstein_02.java
60 lines (51 loc) · 3.2 KB
/
kader_wolkenstein_02.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package robopasta;
import robocode.*;
import java.awt.*;
public class kader_wolkenstein_02 extends AdvancedRobot {
int direcaoMovimento = 2; // Variável que armazena a direção de movimento do robô
double energia = 100; // Energia inicial do robô
int tirosAcertados = 0; // Contador de tiros acertados
//gabrielcarvalho
public void run() {
setAdjustRadarForRobotTurn(true); // Mantém o radar parado enquanto o robô gira
setAdjustGunForRobotTurn(true); // Mantém a arma parada enquanto o robô gira
turnRadarRightRadians(Double.POSITIVE_INFINITY); // Gira o radar infinitamente para a direita
}//gabriel esteve aqui
public void onScannedRobot(ScannedRobotEvent evento) {
double anguloAbsoluto = evento.getBearingRadians() + getHeadingRadians(); //calcula o ângulo do robo inimigo
double velocidadeLateral = evento.getVelocity() * Math.sin(evento.getHeadingRadians() - anguloAbsoluto); //calcula a velocidade lateral do robo inimigo
double quantidadeGiroArma;
setTurnRadarLeftRadians(getRadarTurnRemainingRadians()); //ajusta para continuar rastreando o robo inimigo
//altera aleatoriamente a velocidade maxima do robo
if(Math.random() > 0.9){
setMaxVelocity((12 * Math.random()) + 12);
}
//se a distância para o robo inimigo for maior que 150...
if (evento.getDistance() > 150) {
quantidadeGiroArma = robocode.util.Utils.normalRelativeAngle(anguloAbsoluto - getGunHeadingRadians() + velocidadeLateral / 22); //calcula a quantidade que a arma deve girar
setTurnGunRightRadians(quantidadeGiroArma); //gira a arma
setTurnRightRadians(robocode.util.Utils.normalRelativeAngle(anguloAbsoluto - getHeadingRadians() + velocidadeLateral / getVelocity())); //gira o robo na direção do inimigo
setAhead((evento.getDistance() - 120) * direcaoMovimento); //move para frente
setFire(3); //dispara
} else { //se a distancia para o robo inimigo for menor ou igual a 150
quantidadeGiroArma = robocode.util.Utils.normalRelativeAngle(anguloAbsoluto - getGunHeadingRadians() + velocidadeLateral / 15); //quantidade que a arma deve girar
setTurnGunRightRadians(quantidadeGiroArma); //gira a arma
setTurnLeft(-90 - evento.getBearing()); //gira o robo perpendicular ao inimigo
setAhead((evento.getDistance() - 120) * direcaoMovimento); //move para frente
setFire(3); //dispara
}
}
public void onBulletHit(BulletHitEvent event) {
energia += 5; // Recupera mais energia ao acertar um tiro
tirosAcertados++; // Incrementa o contador de tiros acertados
}
public void onHitWall(HitWallEvent evento){
direcaoMovimento = -direcaoMovimento; // Inverte a direção de movimento do robô ao colidir com a parede
}
// Estragão 1: Esta parte do código está marcada como exclusiva do desenvolvedor original
// Qualquer cópia direta desta parte será facilmente identificada
/* !!! ESTE TRECHO DE CÓDIGO É EXCLUSIVO DO DESENVOLVEDOR ORIGINAL !!!
Qualquer uso ou reprodução sem autorização prévia é estritamente proibido.
*/
//gabriel fernandes de carvalho
}