robocode

1. robocode

wellington
wellingtonsr

(usa Slackware)

Enviado em 19/09/2011 - 00:40h

Olá amigos do VOL! É o seguinte, Na faculdade vai haver um campeonato de robocode. eu tô querendo incluir no meu robô um método que faça uma varredura na arena e diferencie os robôs do meu grupo e ataque apenas os não que não sejam desse grupo. até que só restem robôs do meu grupo, aí é cada um por si. Se alguém puder me ajudar desde já agradeço. valeu.


  


2. Re: robocode

wellington
wellingtonsr

(usa Slackware)

Enviado em 21/09/2011 - 11:42h

Pessoal segue abaixo o código do meu robô.
É nesse que eu quero colocar o método acima citado.
valeu.


package iesp;

import robocode.HitRobotEvent;
import robocode.Robot;
import robocode.ScannedRobotEvent;
import robocode.HitByBulletEvent;
import robocode.*;
import java.awt.*;

public class Wellington extends Robot{


public void run() {
//Definem as cores do robô
setBodyColor(Color.black);
setGunColor(Color.black);
setRadarColor(Color.red);
setScanColor(Color.red);
//setBulletColor(Color.writh);


while(true){
turnRadarRight(360);
ahead(100);
turnGunRight(360);
back(100);


}

}


//Detecta os outros robôs
public void onScannedRobot(ScannedRobotEvent e) {
double max = 100;


//Faz um controle da energia que é gasta no que diz
//respeito à potência do tiro
if(e.getEnergy() < max){
max = e.getEnergy();
miraCanhao(e.getBearing(), max, getEnergy());
}else if(e.getEnergy() >= max){
max = e.getEnergy();
miraCanhao(e.getBearing(), max, getEnergy());
}else if(getOthers() == 1){
max = e.getEnergy();
miraCanhao(e.getBearing(), max, getEnergy());
}
}

//quando o seu robo colide com outro robo
public void onHitRobot(HitRobotEvent e) {
tiroFatal(e.getBearing(), e.getEnergy(), getEnergy());

}


//Quando seu roboô leva um tiro
public void onHitByBullet(HitByBulletEvent e) {
turnLeft(90);
back(100);
}

//Fornece as coordenadas para o ajuste do canhão.
public void miraCanhao(double PosIni, double energiaIni, double minhaEnergia) {

double Distancia = PosIni;
double Coordenadas = getHeading() + PosIni - getGunHeading();
double PontoQuarenta = (energiaIni / 4) + .1;

if (!(Coordenadas > -180 && Coordenadas <= 180)) {
while (Coordenadas <= -180) {
Coordenadas += 360;
}
while (Coordenadas > 180) {
Coordenadas -= 360;
}
}

turnGunRight(Coordenadas);


if (Distancia > 200 || minhaEnergia < 15 || energiaIni > minhaEnergia){
fire(1);
} else if (Distancia > 50 ) {
fire(2);
} else {
fire(PontoQuarenta);
}


}

//É chamado quando o robô bate na parede,
public void onHitWall(HitWallEvent e) {
turnLeft(90);
ahead(200);
}


//Dança da vitória
public void onWin(WinEvent e) {
turnRight(72000);
}

public void tiroFatal(double PosIni, double energiaIni, double minhaEnergia) {

double Distancia = PosIni;
double Coordenadas = getHeading() + PosIni - getGunHeading();
double PontoQuarenta = (energiaIni / 4) + .1;

if (!(Coordenadas > -180 && Coordenadas <= 180)) {
while (Coordenadas <= -180) {
Coordenadas += 360;
}
while (Coordenadas > 180) {
Coordenadas -= 360;
}
}

turnGunRight(Coordenadas);
fire(PontoQuarenta);

}


}







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts