Talk:Opposite
Any ideas for a targeting scheme with 132 bytes? (including how to select a target) --Starrynte 17:45, 12 September 2009 (UTC)
I'm not sure how much this will help, but this is the enemy selection I tend to use in codesize-restricted melee bots. I used linear targeting in this example:
package oog.nano.aorta;
import robocode.*;
import robocode.util.*;
public class Aorta extends AdvancedRobot {
static double enemyDist;
static String enemyName;
public void run(){
enemyDist=Double.POSITIVE_INFINITY;
setTurnRadarRightRadians(Double.POSITIVE_INFINITY);
}
public void onScannedRobot(ScannedRobotEvent e){
if(e.getDistance()<enemyDist||e.getName()==enemyName){
enemyName=e.getName();
enemyDist=e.getDistance();
//This part greatly increases the accuracy of the targeting, but it isn't necessary.
if(getGunHeat()<1){
setTurnRadarLeftRadians(getRadarTurnRemainingRadians());
}
/*
*You could replace these next two lines with any type of targeting and bullet power you like,
*I just used linear targeting as an example.
*/
setTurnGunRightRadians(Utils.normalRelativeAngle((e.getBearingRadians()+getHeadingRadians())-getGunHeadingRadians())+
(e.getVelocity()*Math.sin(e.getHeadingRadians()-(e.getBearingRadians()+getHeadingRadians())))/14);
setFire(2);
}
}
public void onRobotDeath(RobotDeathEvent e){
enemyDist=Double.POSITIVE_INFINITY;
}
}
Note: I'm almost certain that this will fit into 132 bytes. If you need to put something else in, you could change it to head-on targeting or remove the line that locks on the radar before firing. Just remember that that line is pretty important for making the gun accurate--CrazyBassoonist 18:14, 12 September 2009 (UTC)
OK thanks, except should I do e.getName().equals(enemyName) as opposed to e.getName() == enemyName? --Starrynte 19:01, 12 September 2009 (UTC)
No problem. And using e.getName().equals(enemyName) would work, but costs three more codesize bytes--CrazyBassoonist 20:00, 12 September 2009 (UTC)
- I wouldn't trust e.getName()==enemyName to work always without testing. Maybe it always uses the same object, and you end up with doing the right comparison with == in this particular case. Although I think it does work in this case, I'd test it thoroughly just to be sure. --zyx 01:23, 13 September 2009 (UTC)