Difference between revisions of "Talk:Assertive"
Jump to navigation
Jump to search
Awesomeness (talk | contribs) m (Source) |
(original code) |
||
| Line 5: | Line 5: | ||
Okay. [[User:Awesomeness|Awesomeness]] 13:46, 2 May 2009 (UTC) | Okay. [[User:Awesomeness|Awesomeness]] 13:46, 2 May 2009 (UTC) | ||
| + | |||
| + | In case you can't find the decompiler, here it is: | ||
| + | <pre> | ||
| + | package robar.nano; | ||
| + | |||
| + | import robocode.*; | ||
| + | import robocode.util.Utils; | ||
| + | |||
| + | public class Assertive extends AdvancedRobot { | ||
| + | static double direction = 1D; | ||
| + | static StringBuffer history = new StringBuffer("00000000000000000000000000000"); | ||
| + | static final double APPROACHANGLE = -Math.toRadians(20D); | ||
| + | static final double NINTYDEG = Math.PI/2; | ||
| + | static final double FIREPOWER = 2.5D; | ||
| + | static final double BULLETVEL = 12.5D; | ||
| + | static final int PATTERN_DEPTH = 30; | ||
| + | |||
| + | public void run() | ||
| + | { | ||
| + | setAdjustGunForRobotTurn(true); | ||
| + | setAllColors(java.awt.Color.red); | ||
| + | setTurnRadarRight(Double.POSITIVE_INFINITY); | ||
| + | } | ||
| + | |||
| + | public void onScannedRobot(ScannedRobotEvent e) | ||
| + | { | ||
| + | setTurnRightRadians(Utils.normalRelativeAngle(e.getBearingRadians() + NINTYDEG + APPROACHANGLE * direction)); | ||
| + | if(getDistanceRemaining() == 0.0D) | ||
| + | { | ||
| + | direction = -direction; | ||
| + | setAhead(Math.random() * 144D * direction); | ||
| + | } | ||
| + | double dist = e.getDistance(); | ||
| + | double absB = e.getBearingRadians() + getHeadingRadians(); | ||
| + | int matchLenght = PATTERN_DEPTH; | ||
| + | history.insert(0, (char)(int)(Math.sin(e.getHeadingRadians() - absB) * e.getVelocity())); | ||
| + | int index; | ||
| + | while((index = history.toString().indexOf(history.substring(0, matchLenght--), 1)) < 0) ; | ||
| + | matchLenght = index - (int)(dist / BULLETVEL); | ||
| + | do | ||
| + | absB += Math.asin((double)(byte)history.charAt(index--) / dist); | ||
| + | while(index >= Math.max(0, matchLenght)); | ||
| + | setTurnGunRightRadians(Utils.normalRelativeAngle(absB - getGunHeadingRadians())); | ||
| + | setFire(FIREPOWER); | ||
| + | setTurnRadarLeft(getRadarTurnRemaining()); | ||
| + | } | ||
| + | } | ||
| + | </pre> | ||
| + | This is much like the original one yet difference from decompiled one since the decompiler can't preserve the use of static final field inside function. » <span style="font-size:0.9em;color:darkgreen;">[[User:Nat|Nat]] | [[User_talk:Nat|Talk]]</span> » 13:54, 2 May 2009 (UTC) | ||
Revision as of 14:54, 2 May 2009
Where can I see the source? Awesomeness 21:13, 1 May 2009 (UTC)
Decompile it if you like. It seem that HUNRobar has confused on how to pack the source in .jar. » Nat | Talk » 05:51, 2 May 2009 (UTC)
Okay. Awesomeness 13:46, 2 May 2009 (UTC)
In case you can't find the decompiler, here it is:
package robar.nano;
import robocode.*;
import robocode.util.Utils;
public class Assertive extends AdvancedRobot {
static double direction = 1D;
static StringBuffer history = new StringBuffer("00000000000000000000000000000");
static final double APPROACHANGLE = -Math.toRadians(20D);
static final double NINTYDEG = Math.PI/2;
static final double FIREPOWER = 2.5D;
static final double BULLETVEL = 12.5D;
static final int PATTERN_DEPTH = 30;
public void run()
{
setAdjustGunForRobotTurn(true);
setAllColors(java.awt.Color.red);
setTurnRadarRight(Double.POSITIVE_INFINITY);
}
public void onScannedRobot(ScannedRobotEvent e)
{
setTurnRightRadians(Utils.normalRelativeAngle(e.getBearingRadians() + NINTYDEG + APPROACHANGLE * direction));
if(getDistanceRemaining() == 0.0D)
{
direction = -direction;
setAhead(Math.random() * 144D * direction);
}
double dist = e.getDistance();
double absB = e.getBearingRadians() + getHeadingRadians();
int matchLenght = PATTERN_DEPTH;
history.insert(0, (char)(int)(Math.sin(e.getHeadingRadians() - absB) * e.getVelocity()));
int index;
while((index = history.toString().indexOf(history.substring(0, matchLenght--), 1)) < 0) ;
matchLenght = index - (int)(dist / BULLETVEL);
do
absB += Math.asin((double)(byte)history.charAt(index--) / dist);
while(index >= Math.max(0, matchLenght));
setTurnGunRightRadians(Utils.normalRelativeAngle(absB - getGunHeadingRadians()));
setFire(FIREPOWER);
setTurnRadarLeft(getRadarTurnRemaining());
}
}
This is much like the original one yet difference from decompiled one since the decompiler can't preserve the use of static final field inside function. » Nat | Talk » 13:54, 2 May 2009 (UTC)