| View previous topic :: View next topic   | 
	
	
	
		| Author | 
		Message | 
	
	
		Cheat Engine User Something epic
  Reputation: 60
  Joined: 22 Jun 2007 Posts: 2071
 
  | 
		
			
				 Posted: Mon Apr 26, 2010 2:48 am    Post subject: I need to know how to find the shortest path. | 
				       | 
			 
			
				
  | 
			 
			
				| I am currently making a project for my new school but I've got to find a way to find the shortest path to a certain point. Well, it doesn't necessarily have to be the shortest path, just a path that works. It's tilebased, so that's not a problem. How would I do this or where can I find sources (as in information)on this?
 | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Slugsnack Grandmaster Cheater Supreme
  Reputation: 71
  Joined: 24 Jan 2007 Posts: 1857
 
  | 
		
			
				 Posted: Mon Apr 26, 2010 3:08 am    Post subject:  | 
				       | 
			 
			
				
  | 
			 
			
				tile based ? or grid based ? if it's just a grid, you can just go diagonal till you meet the 'y' coord then go right/left from there. else you can model it as a graph then use shortest path graph theory.
 
 
can you give some more info ?
 | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Flyte Peanuts!!!!
  Reputation: 6
  Joined: 19 Apr 2006 Posts: 1887 Location: Canada
  | 
		
			
				 Posted: Mon Apr 26, 2010 3:13 am    Post subject:  | 
				       | 
			 
			
				
  | 
			 
			
				Go through the list here and find one that suits your project.
 
 
A* is the most popular one, but since I don't know what you want to do it with it, it may not be the best for your purposes.
 | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Cheat Engine User Something epic
  Reputation: 60
  Joined: 22 Jun 2007 Posts: 2071
 
  | 
		
			
				 Posted: Mon Apr 26, 2010 5:20 am    Post subject:  | 
				       | 
			 
			
				
  | 
			 
			
				 	  | Slugsnack wrote: | 	 		  tile based ? or grid based ? if it's just a grid, you can just go diagonal till you meet the 'y' coord then go right/left from there. else you can model it as a graph then use shortest path graph theory.
 
 
can you give some more info ? | 	  Tile based could be seen as grid based you know. But Flyte pretty much gave me what I needed, so I am good and this can be closed.
 | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Uzeil Moderator
  Reputation: 6
  Joined: 21 Oct 2006 Posts: 2411
 
  | 
		
			
				 Posted: Wed Jun 09, 2010 4:50 am    Post subject:  | 
				       | 
			 
			
				
  | 
			 
			
				I'm really bad about looking up algorithms when asked to make one.
 
 
So when asked to make a pathfinder(maze solver in this case), I made the following.
 
 
 	  | Code: | 	 		  //function is first called with the coordinates of the Start location.
 
function SolveMaze(maze: array of String; X, Y: Integer): Boolean;
 
begin
 
  Result := True;
 
  //if I'm about to try to move to the edge of the maze, if it's a wall('#') or if I've already been there, return False
 
  if (Y > length(maze)) or (X > length(maze[Y])) or (X = -1) or (Y = -1) or
 
    (maze[Y][X] = '#') or (maze[Y][X] = '.') then
 
  begin
 
    Result := False;
 
  end
 
  else if maze[Y][X] = 'E' then //destination point
 
  begin
 
    Result := True;
 
  end
 
  else
 
  begin
 
    //put a dot to show I've been there
 
    maze[Y][X] := '.';
 
    drawMaze(maze); //print current progress
 
    //recursively call function for all possible movements.
 
    if (not SolveMaze(maze, X + 1, Y)) and (not SolveMaze(maze, X - 1, Y)) and
 
      (not SolveMaze(maze, X, Y + 1)) and (not SolveMaze(maze, X, Y - 1)) then
 
    begin
 
      //put a space(erases my position before tracing back in the call stack if I reached a dead end, which erases my steps taken.
 
      maze[Y][X] := ' ';
 
      Result := False;
 
      drawMaze(maze); //print current progress
 
    end;
 
  end;
 
end; | 	  
 
 
Note:  I know you can rewrite the 'not, and not, and not, and not' to be a 'not (or or or)', and can change the 'end else if' 's to utilize Exit, but I don't feel like editing now that I already closed the IDE.  Not that pretentious.
 _________________
  | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		 |