All pastes #37170 Raw Edit

Stuff

public text v1 · immutable
#37170 ·published 2006-01-18 04:11 UTC
rendered paste body
Problem.

Fish needs to start at position x,y on a grid where ENV_ROWS is user defined and ENV_COLS = ENV_ROWS, the fish continues to move till it hits a wall, when it hits a wall the fish will turn right.  The fish can turn if you use s1.changeDirection(Direction.SOUTH); when you change the direction it will run till you tell it to change directions again or it hits a wall.  I need the fish to run starting at position 0,ENV_ROWS; It needs to run a path like this http://www.circlemakers.org/Img/square_spiral.jpg till it reaches the center.  

Currently i can predefine its movements for an enviroment 11x11 using this

	        Location loc1 = new Location(env.numRows() - env.numCols(),env.numCols() - 1);
	        Location loc2 = new Location(env.numRows() -1,env.numCols() -2);
	        Location loc3 = new Location(env.numRows() - 2,env.numCols() - env.numRows());
	        Location loc4 = new Location(env.numRows() - env.numCols(),env.numCols() - 10);
	        Location loc5 = new Location(env.numRows() - (env.numRows() -1),env.numCols() -2);
	        Location loc6 = new Location(env.numRows() - 2,env.numCols() -3);
	        Location loc7 = new Location(env.numRows() - 3,env.numCols() -10);
	        Location loc8 = new Location(env.numRows() - 10,env.numCols() -9);
	        Location loc9 = new Location(env.numRows() - 9,env.numCols() -3);
	        Location loc10 = new Location(env.numRows() - 3,env.numCols() -4);
	        Location loc11 = new Location(env.numRows() - 4,env.numCols() -9);
	        Location loc12 = new Location(env.numRows() - 9,env.numCols() -8);
	        Location loc13 = new Location(env.numRows() - 8,env.numCols() -4);
	        Location loc14 = new Location(env.numRows() - 4,env.numCols() -5);
	        Location loc15 = new Location(env.numRows() - 5,env.numCols() -8);
	        Location loc16 = new Location(env.numRows() - 8,env.numCols() -7);
	        Location loc17 = new Location(env.numRows() - 7,env.numCols() -5);
	        Location loc18 = new Location(env.numRows() - 5,env.numCols() -6);
	        Location loc19 = new Location(env.numRows() - 6,env.numCols() -7);
	        Location loc20 = new Location(env.numRows() - 7,env.numCols() -6);
	        Location locend = new Location(env.numRows() - 6,env.numCols() -6);

if (s1.nextLocation().equals(loc1)) { 
	            	s1.changeDirection(Direction.SOUTH);
				}
	            if (s1.nextLocation().equals(loc2)) { 
	            	s1.changeDirection(Direction.WEST);
				}
	            if (s1.nextLocation().equals(loc3)) { 
	            	s1.changeDirection(Direction.NORTH);
				}
	            if (s1.nextLocation().equals(loc4)) { 
	            	s1.changeDirection(Direction.EAST);
				}
	            if (s1.nextLocation().equals(loc5)) { 
	            	s1.changeDirection(Direction.SOUTH);
				}
	            if (s1.nextLocation().equals(loc6)) { 
	            	s1.changeDirection(Direction.WEST);
				}
	            if (s1.nextLocation().equals(loc7)) { 
	            	s1.changeDirection(Direction.NORTH);
				}
	            if (s1.nextLocation().equals(loc8)) { 
	            	s1.changeDirection(Direction.EAST);
				}
	            if (s1.nextLocation().equals(loc9)) { 
	            	s1.changeDirection(Direction.SOUTH);
				}
	            if (s1.nextLocation().equals(loc10)) { 
	            	s1.changeDirection(Direction.WEST);
				}
	            if (s1.nextLocation().equals(loc11)) { 
	            	s1.changeDirection(Direction.NORTH);
				}
	            if (s1.nextLocation().equals(loc12)) { 
	            	s1.changeDirection(Direction.EAST);
				}
	            if (s1.nextLocation().equals(loc13)) { 
	            	s1.changeDirection(Direction.SOUTH);
				}
	            if (s1.nextLocation().equals(loc14)) { 
	            	s1.changeDirection(Direction.WEST);
				}
	            if (s1.nextLocation().equals(loc15)) { 
	            	s1.changeDirection(Direction.NORTH);
				}
	            if (s1.nextLocation().equals(loc16)) { 
	            	s1.changeDirection(Direction.EAST);
				}
	            if (s1.nextLocation().equals(loc17)) { 
	            	s1.changeDirection(Direction.SOUTH);
				}
	            if (s1.nextLocation().equals(loc18)) { 
	            	s1.changeDirection(Direction.WEST);
				}
	            if (s1.nextLocation().equals(loc19)) { 
	            	s1.changeDirection(Direction.NORTH);
				}
	            if (s1.nextLocation().equals(loc20)) { 
	            	s1.changeDirection(Direction.EAST);
				}
	            if (s1.location().equals(locend)) { 
	            
	               System.out.println("End!");
	            }

I need to have a fomula / function that does this automaticially based on the enviroment size so it always spirals.  The steps that i can think of are, 

if end of line
turn
line = maxline
if turn = 3(wich is the last one of a square)
decrease maxline
if turn = 0(new square) decrease maxline
maxline by default = square size(11)
so it do 0,10
then turn
then 0-10
then turn
then 0-10 then turn
then 0-9
turn again
then 0-8
and it keep like this
until maxline = 0


I can provide full code samples for what i have coded if this will help.