Talk:Opposite
Revision as of 19:14, 12 September 2009 by CrazyBassoonist (talk | contribs) (Sign commment + add a note)
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 if, 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)