[Home]CircularBot

Robo Home | Changes | Preferences | AllPages

package tango;
import robocode.*;
import java.util.ArrayList;
import java.awt.geom.Point2D;

/**
 * CircularBot - a test of a circular list
 */
public class CircularBot extends Robot
{
	CircularList Route=new CircularList(new Point2D.Double(100,100), new Point2D.Double(150,100), new Point2D.Double(150,150), new Point2D.Double(100,150));
	public void run() {
		while(true) {
			if (Math.random()>0.5) {Route.clockwise();} else {Route.anticlockwise();}
			goTo(Route.getCurrent());
		}
	}

	public void goTo(Point2D Position) {
		double AngleToMove=Math.toDegrees(Math.atan2(Position.getX()-getX(),Position.getY()-getY()));
		AngleToMove-=getHeading();
		while (AngleToMove>180) {AngleToMove-=360;}
		while (AngleToMove<-180) {AngleToMove+=360;}
		turnRight(AngleToMove);
		ahead(Position.distance(getX(),getY()));
	}
}

class CircularList {
	Point2D[] List=new Point2D[4];
	int Pointer=0;
	CircularList(Point2D one, Point2D two, Point2D three, Point2D four) {
		List[0]=one;
		List[1]=two;
		List[2]=three;
		List[3]=four;
	}
	public Point2D getCurrent() {return this.List[Pointer];}
	public void clockwise() {Pointer++; if (Pointer>3) {Pointer=0;}}
	public void anticlockwise() {Pointer--; if (Pointer<0) {Pointer=3;}}
	
}

Robo Home | Changes | Preferences | AllPages
Edit text of this page | View other revisions
Last edited December 21, 2003 14:25 EST by Tango (diff)
Search: