Difference between revisions of "User talk:Khanguy"

From Robowiki
Jump to navigation Jump to search
(Replaced content with 'nvm')
(wallhugging help)
Line 1: Line 1:
nvm
+
== WallHugging ==
 +
 
 +
I need help fixing my wallhugging code. Everytime I reverse direction or when getHeadingRadians() nears 3pi/2 or pi/2 It seizes up(it won't move). I'm stick and can use any of the help I can use. Here is the code:
 +
<syntaxhighlight>
 +
static double direction; //1 for clockwise or -1 for counterclockwise
 +
.
 +
.
 +
.
 +
//in the onscannedmethod
 +
wallHugging(); //Dunno why I did this, but it works!
 +
.
 +
.
 +
.
 +
//whenever I want to change direction
 +
direction = -direction; // reverse direction when hit
 +
.
 +
.
 +
.
 +
// this is the absolute heading I want to move in to go clockwise or
 +
// counterclockwise around my enemy if I want to move closer to them,
 +
// I would use less of an offset from absBearing (I'll go right toward
 +
// them if I move at absBearing)
 +
public void wallHugging(){
 +
//Pez's wall smoothing code with adaptation
 +
double goalDirection = getHeadingRadians() + Math.PI/2 + direction*Math.PI/2; // I want it to go straight
 +
Rectangle2D fieldRect = new Rectangle2D.Double(18, 18, getBattleFieldWidth()-36,
 +
getBattleFieldHeight()-36);
 +
while (!fieldRect.contains(getX()+Math.sin(goalDirection)*160, getY()+
 +
        Math.cos(goalDirection)*160)){
 +
goalDirection += direction*.1; //turn a little toward enemy and try again
 +
}
 +
double turn =  robocode.util.Utils.normalRelativeAngle(goalDirection-getHeadingRadians());
 +
if (Math.abs(turn) > Math.PI/2) {
 +
turn = Utils.normalRelativeAngle(turn + Math.PI);
 +
setBack(100);
 +
} else {
 +
setAhead(100);
 +
}
 +
setTurnRightRadians(turn);
 +
}
 +
</syntaxhighlight>

Revision as of 22:47, 26 April 2011

WallHugging

I need help fixing my wallhugging code. Everytime I reverse direction or when getHeadingRadians() nears 3pi/2 or pi/2 It seizes up(it won't move). I'm stick and can use any of the help I can use. Here is the code:

static double direction;	//1 for clockwise or -1 for counterclockwise
.
.
.
//in the onscannedmethod
wallHugging(); //Dunno why I did this, but it works!
.
.
.
//whenever I want to change direction
direction = -direction; // reverse direction when hit
.
.
.
// this is the absolute heading I want to move in to go clockwise or
// counterclockwise around my enemy if I want to move closer to them,
// I would use less of an offset from absBearing (I'll go right toward
// them if I move at absBearing)
public void wallHugging(){
//Pez's wall smoothing code with adaptation
double goalDirection = getHeadingRadians() + Math.PI/2 + direction*Math.PI/2; // I want it to go straight
Rectangle2D fieldRect = new Rectangle2D.Double(18, 18, getBattleFieldWidth()-36,
 getBattleFieldHeight()-36);
while (!fieldRect.contains(getX()+Math.sin(goalDirection)*160, getY()+
        Math.cos(goalDirection)*160)){
	goalDirection += direction*.1;	//turn a little toward enemy and try again
}
double turn =   robocode.util.Utils.normalRelativeAngle(goalDirection-getHeadingRadians());
if (Math.abs(turn) > Math.PI/2) {
	turn = Utils.normalRelativeAngle(turn + Math.PI);
	setBack(100);
} else {
	setAhead(100);
}
setTurnRightRadians(turn);
}