2017年7月29日 星期六

(Java)老鼠走迷宮

  1. public class MouseToMaze {  
  2.  int ENDX , ENDY  ;  
  3.  int STARTX , STARTY ;  
  4.  boolean pass = false ;  
  5.  public static void  main(String[] args){  
  6.   MouseToMaze mtm = new MouseToMaze();  
  7.   mtm.setMazeSTART(11);  
  8.   mtm.setMazeEND(55);  
  9.   int[][]maze ={{2222222},   
  10.                                {2000002},   
  11.                                {2020202},   
  12.                                {2002022},   
  13.                                {2202022},   
  14.                                {2000002},   
  15.                                {2222222}};   
  16.   mtm.Go_Maze(maze);  
  17.       
  18.   
  19.  }  
  20.        
  21.  public void setMazeSTART(int x , int y){  
  22.   STARTX = x ;  
  23.   STARTY = y ;  
  24.  }      
  25.  public void setMazeEND(int x , int y){  
  26.   ENDX = x;  
  27.   ENDY = y ;  
  28.  }  
  29.  public void Go_Maze(int[][] maze ){  
  30.     
  31.   if(mouse_visit(maze , STARTX , STARTY)){  
  32.   System.out.println("PASS");  
  33.    for(int[] x : maze){  
  34.     for(int y : x){  
  35.      if(y == 2)  
  36.      System.out.print("▉");  
  37.      else if(y==1)  
  38.      System.out.print("X");    
  39.      else  
  40.      System.out.print("  ");  
  41.     }  
  42.     System.out.println();  
  43.    }  
  44.   }else{  
  45.    System.out.println("NO PASS");  
  46.   }  
  47.  }  
  48.  public  boolean mouse_visit(int[][] maze , int x , int y){  
  49.      maze[x][y] = 1 ;//老鼠位置;  
  50.   if(x == ENDX &&y == ENDY)  
  51.        pass = true ;  
  52.     
  53.   if(!pass && maze[x][y+1] == 0)  //東  
  54.    mouse_visit(maze , x , y+1);  
  55.   if(!pass && maze[x+1][y] == 0)  //南  
  56.    mouse_visit(maze , x+1 , y);  
  57.   if(!pass && maze[x][y-1] == 0)   //西  
  58.    mouse_visit(maze , x , y-1);  
  59.   if(!pass && maze[x-1][y] == 0)  
  60.    mouse_visit(maze , x-1 , y+1);  
  61.     
  62.   if(!pass)  
  63.      maze[x][y] = 0 ;//死路退回可選之路   
  64.     
  65.     return pass;  
  66.  }  
  67.   
  68. }  

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。