Advertisement
Guest User

Untitled

a guest
Mar 20th, 2018
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.74 KB | None | 0 0
  1. package MazeA;
  2.  
  3. import Collections.*;
  4. import java.io.*;
  5. import BasicIO.*;
  6.  
  7. public class TestPathFinder{
  8.  
  9.   private ASCIIDataFile data;
  10.   private ASCIIDisplayer out;
  11.   private int row;
  12.   private int col;
  13.   private int numRows;
  14.   private int numCols;
  15.   private char[][] maze;
  16.   private LnkStack<Position> s;
  17.  
  18.   public TestPathFinder(){
  19.    
  20.     data = new ASCIIDataFile();
  21.     readMaze();
  22.  
  23.    
  24.     data.close();
  25.    
  26.     out = new ASCIIDisplayer(numRows + 1, numCols);
  27.     displayMaze();
  28.    
  29.   }
  30.  
  31.   private boolean findPath(int x, int y){
  32.     boolean result = false;
  33.     Position aPos;
  34.    
  35.     s = new LnkStack<Position>();
  36.     aPos = new Position(x,y);
  37.     s.push(aPos);
  38.     while (!(s.empty())){
  39.       if ( maze[s.top().getXPosition()][s.top().getYPosition()] == 'E'){
  40.         result = true;
  41.       }
  42.       else{
  43.         if (s.top().getState() != 4){
  44.           if( maze[s.top().getXPosition()][s.top().getYPosition()] == '#'
  45.                || maze[s.top().getXPosition()][s.top().getYPosition()] == '*'
  46.                || maze[s.top().getXPosition()][s.top().getYPosition()] == '.'){
  47.             s.pop();
  48.             aPos = s.top();
  49.           }
  50.           else{
  51.             maze[s.top().getXPosition()][s.top().getYPosition()] = '*';
  52.             s.top().setState(1);
  53.             aPos = new Position(s.top().getXPosition(), s.top().getYPosition() + 1);
  54.             s.push(aPos);
  55.             break;
  56.           }
  57.           s.top().setState(s.top().getState() + 1);
  58.           switch (s.top().getState()){
  59.             case 1:
  60.               aPos = new Position(s.top().getXPosition(), s.top().getYPosition() - 1);
  61.               break;
  62.              
  63.             case 2:
  64.               aPos = new Position(s.top().getXPosition() + 1, s.top().getYPosition());
  65.               break;
  66.              
  67.             case 3:
  68.               aPos = new Position( s.top().getXPosition() - 1, s.top().getYPosition());
  69.               break;
  70.           }
  71.           s.push(aPos);
  72.         }
  73.         else{
  74.           maze[s.top().getXPosition()][s.top().getYPosition()] = '.';
  75.           s.pop();
  76.         }
  77.       }
  78.     }
  79.     return result;
  80.   }
  81.  
  82.   private void readMaze(){
  83.     numRows = data.readInt();
  84.     numCols = data.readInt();
  85.     maze = new char[numRows][numCols];
  86.    
  87.     for (int i = 0; i < numRows; i++){
  88.       for (int j = 0; j < numCols; j++){
  89.           maze[i][j] = data.readC();
  90.       }
  91.     }
  92.     row = data.readInt();
  93.     col = data.readInt();
  94.   }
  95.  
  96.   private void displayMaze(){
  97.    
  98.     for (int i = 0; i < numRows; i++){
  99.       for (int j = 0; j < numCols; j++){
  100.         out.writeC(maze[i][j]);
  101.       }
  102.     }
  103.   }
  104.  
  105.   public static void main ( String[] args ) { TestPathFinder t = new TestPathFinder(); };
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement