Difference between revisions of "Blue Shift"
Jump to navigation
Jump to search
m (format the code using <pre> tag) |
|||
Line 2: | Line 2: | ||
It is the same as {{OldWiki|BulletDoubling}} (Old Wiki) | It is the same as {{OldWiki|BulletDoubling}} (Old Wiki) | ||
− | [[File:Blue_Shift.JPG| | + | [[File:Blue_Shift.JPG|thumb|200px|right|Example of waves that reach enemy at the same time]] |
The picture to the right shows a group of waves clustered together. | The picture to the right shows a group of waves clustered together. | ||
Line 16: | Line 16: | ||
---- | ---- | ||
− | + | <pre> | |
package wiki; | package wiki; | ||
− | |||
import robocode.*; | import robocode.*; | ||
public class BlueShift extends AdvancedRobot | public class BlueShift extends AdvancedRobot | ||
− | |||
{ | { | ||
− | |||
double turns; | double turns; | ||
+ | double time; | ||
− | |||
− | |||
public void run() | public void run() | ||
− | |||
{ | { | ||
− | |||
setTurnRadarRightRadians(Double.POSITIVE_INFINITY); | setTurnRadarRightRadians(Double.POSITIVE_INFINITY); | ||
+ | } | ||
− | |||
− | |||
public void onScannedRobot(ScannedRobotEvent e) | public void onScannedRobot(ScannedRobotEvent e) | ||
− | |||
{ | { | ||
− | |||
double absoluteBearing = e.getBearingRadians() + getHeadingRadians(); | double absoluteBearing = e.getBearingRadians() + getHeadingRadians(); | ||
− | |||
double distance = e.getDistance(); | double distance = e.getDistance(); | ||
− | |||
setTurnRightRadians(robocode.util.Utils.normalRelativeAngle(absoluteBearing - getGunHeadingRadians())); | setTurnRightRadians(robocode.util.Utils.normalRelativeAngle(absoluteBearing - getGunHeadingRadians())); | ||
− | |||
turns -= getTime() - time; | turns -= getTime() - time; | ||
− | |||
time = getTime(); | time = getTime(); | ||
− | + | if (turns <= 0) { | |
− | if (turns <= 0) | ||
− | |||
− | |||
− | |||
time = getTime(); | time = getTime(); | ||
− | |||
turns = distance / 11; | turns = distance / 11; | ||
− | |||
setFire(3); | setFire(3); | ||
− | + | } else { | |
− | } | ||
− | |||
− | |||
− | |||
− | |||
− | |||
setFire((distance / turns - 20) / -3); | setFire((distance / turns - 20) / -3); | ||
− | |||
} | } | ||
− | |||
} | } | ||
− | |||
} | } | ||
− | + | </pre> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− |
Revision as of 04:28, 31 July 2009
Named after the Doppler Effect
It is the same as BulletDoubling (Old Wiki)
The picture to the right shows a group of waves clustered together.
How it Works
Fire a group of bullets that reach your target at the same time, either by moving the robot, changing bullet power, or a combination of both.
Concept
Use only on stationary targets (shows concept when farther away).
package wiki; import robocode.*; public class BlueShift extends AdvancedRobot { double turns; double time; public void run() { setTurnRadarRightRadians(Double.POSITIVE_INFINITY); } public void onScannedRobot(ScannedRobotEvent e) { double absoluteBearing = e.getBearingRadians() + getHeadingRadians(); double distance = e.getDistance(); setTurnRightRadians(robocode.util.Utils.normalRelativeAngle(absoluteBearing - getGunHeadingRadians())); turns -= getTime() - time; time = getTime(); if (turns <= 0) { time = getTime(); turns = distance / 11; setFire(3); } else { setFire((distance / turns - 20) / -3); } } }