SWEN221A2
By: a guest | Mar 21st, 2010 | Syntax:
Java | Size: 1.58 KB | Hits: 148 | Expires: Never
package main;
import maze.Board;
import maze.Coordinate;
import maze.Direction;
import maze.Target;
import maze.Walker;
public class LeftWalker extends Walker {
private int dir = Direction.NORTH;
private int fromDir = getFrom(dir);
public LeftWalker(Board board, Coordinate position, Target target) {
super(board, position, target);
// TODO Auto-generated constructor stub
}
public LeftWalker(Board board) {
super(board, board.getStart().getPosition(), board.getTarget());
// TODO Auto-generated constructor stub
}
private int getFrom(int dir) {
if(dir == 0)
return 2;
else if(dir ==1)
return 3;
else if(dir == 2)
return 4;
else if(dir == 3)
return 1;
return -1;
}
public void solve() {
while (!getPosition().equals(target.getPosition())) {
if(mayMove(Direction.leftTurn(dir))) {
dir = Direction.leftTurn(dir);
fromDir = getFrom(dir);
}
else if(mayMove(dir))
{
dir = dir;
fromDir = getFrom(dir);
}
else if(mayMove(Direction.rightTurn(dir))) {
dir = Direction.rightTurn(dir);
fromDir = getFrom(dir);
}
else if(mayMove(dir))
{
dir = dir;
fromDir = getFrom(dir);
}
else {
for(int i = 0; i < 4; ++i) {
if(mayMove(i) && (i != fromDir) ) {
dir = i;
fromDir = getFrom(dir);
break;
}
else if(i == 3 ) {
dir = fromDir;
fromDir = getFrom(dir);
}
}
}
move(dir,true);
pause();
}
}
}