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)
- [View source↑]
- [History↑]
You cannot post new threads to this discussion page because it has been protected from new threads, or you do not currently have permission to edit.
Contents
Thread title | Replies | Last modified |
---|---|---|
Code | 2 | 12:27, 4 May 2019 |
Hi, very nice robot! I like its colors =) I've been thinking of a melee robot that uses stop and go and fluid movement, but I don't know how to implement fluid movement :/ Could I take a peek at your code just to see how it's done? Thanks!
- I don't think Starrynte is active anymore. Fluid movement is just like Anti Gravity movement but what you do is to move perpendicular to the forces rather than getting away from them.
- It gives you two main advantages:
- You can dodge bullets when they are coming right at you
- It makes wall smoothing easier
- The direction you are going to move is just like in RandomMovementBot which implements a type of fluid movement without anti-gravity spots.
Ok, thanks. I'll go look at the Anti-Gravity Tutorial and try to modify it for my needs =)