2016-02-18 18 views
1

我把我的迷宫类的迷宫,我的递归在布尔,所以每次当我尝试将其打印出来,它会回到课程并打印原始地图而不是进度。你有任何其他方式来做到这一点?我有一段代码,它即刻解决迷宫,我希望它打印每一步它使

class Maze { 


String[][] (map of the maze) 

    public void print_maze() { 
    bla bla bla 


    } // print the maze 



public boolean solve (int i, int j) throws InterruptedException { 

     Maze labyrinth = new Maze();| 
            |i tried to print the maze like this 
     labyrinth.print_maze();  |and they keep printing original maze 
            | 
     boolean done = false; 

     if (valid (i, j)) { 

     grid[i][j] = "C"; // cell has been tried 

     if (i== grid[0].length-8 && j == grid[0].length-1) 
      {done = true;} // maze is solved 
     else { 

      done = solve (i+1, j); // down 

      if (!done) 
       done = solve (i, j+1); // right 

      if (!done) 
       done = solve (i-1, j); // up 

      if (!done) 
       done = solve (i, j-1); // left 


     } 

     if (done) // part of the final path 
      grid[i][j] = "X"; 
     // labyrinth.print_maze(); 
     } 

     return done; 
+0

你就不能打印网格? – anaxin

+1

我没有看到您更新迷宫对象的位置。所以无论你打电话到哪里,labyrinth.print_maze()都会打印出原始设计。 – Frank

回答

1

你的,你不要你执行的类和你的对象区分的问题(尽量让你的迷宫类的外部执行类,你会看到,我的意思)。你应该尝试类似:

labyrinth.grid[i][j]="x"; 

,而不是你的代码在最后一个行之一,因为你的对象迷宫你要更改的对象,而不是迷宫你是:-)。或者,您可以拨打print_maze()而无需labyrinth,因为您已经在一个。

相关问题