<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    cavenaghi

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      4 Posts :: 0 Stories :: 3 Comments :: 0 Trackbacks

    迷宮文件boya.ice:

    8
    9
    #########
    #s0##0###
    #0##00###
    #0##0####
    #0000####
    #0##0####
    #0##00e##
    #0000####

     

    package maze;
    import java.io.*;
    import java.util.*;
    public class Maze{
     private char[][] maze;//迷宮數組
     private int startX,startY,endX,endY;//迷宮起點,終點的位置
     private int x,y,step=0;//迷宮長寬及步驟
     //依據輸入的文件名創建對象
     private Maze(String fileName){
      try{
       LinkedList aList=new LinkedList();//用于存儲文件每行的內容
       BufferedReader files=new BufferedReader(new FileReader("map\\"+fileName));
       //將每行的內容依次加入到LinkedList中
       String temp=new String();
       int i=0;
       while((temp=files.readLine())!=null){
        aList.add(temp);
       }
       files.close();
       //讀取并設置迷宮的長寬
       x=Integer.parseInt((String)aList.getFirst())+2;
       aList.removeFirst();
       y=Integer.parseInt((String)aList.getFirst())+2;
       aList.removeFirst();
       //依據長寬對迷宮進行初始化
       maze=new char[x][y];
       //將迷宮的賦予外圍墻
       for(i=0;i<x;i++){
        maze[i][0]='#';
        maze[i][y-1]='#';
       }
       for(i=0;i<y;i++){
        maze[0][i]='#';
        maze[x-1][i]='#';
       }
       //將LinkedList中內容讀入數組
       Iterator it=aList.iterator();
       i=1;
       char[] row;
       while(it.hasNext()){
        temp=((String)it.next());
        row=new char[y-2];
        row=temp.toCharArray();
        for(int j=1;j<y-1;j++){
         maze[i][j]=row[j-1];
         if(maze[i][j]=='s'){
          startX=i;
          startY=j;
          maze[i][j]='0';
         }
         else if(maze[i][j]=='e'){
          endX=i;
          endY=j;
          maze[i][j]='0';
         }
        }
        i++;
       }
      }
      catch(FileNotFoundException e){
       System.out.println("File Name Input Wrong!!!");
      }
      catch(IOException e){
       System.out.println("Wrong Input!!!");
      }
     }
     //遞歸方法尋找路徑
     private boolean findWay(int x,int y){
      if(maze[endX][endY]=='i')
       return true;
      else
       if(maze[x][y]=='0'){
        maze[x][y]='i';
        if(findWay(x-1,y))
         return true;
        else if(findWay(x+1,y))
         return true;
        else if(findWay(x,y+1))
         return true;
        else if(findWay(x,y-1))
         return true;
        else{
         maze[x][y]='c';
         return false;
        }
       }
       else return false;
     }
     //打印迷宮路徑
     private void show(){
      maze[startX][startY]='s';
      maze[endX][endY]='e';
      for(int i=1;i<x-1;i++){
       for(int j=1;j<y-1;j++){
        if(maze[i][j]=='i'){
         maze[i][j]=' ';
         step++;
        }
        else if(maze[i][j]=='c') maze[i][j]='0';
        System.out.print(maze[i][j]);
       }
       System.out.println("");
      }
      System.out.println("I Have went "+step+" Steps To The End!");
     }
     public static void main(String arg[]){
      try{
       System.out.println("Boya(8*9)\n"+"Ice(10*12)\n"+"Sky(15*17)\n"+"Input the map name:");
       BufferedReader is=new BufferedReader(new InputStreamReader(System.in));
       for(;;){
        String input=new String();
        input=is.readLine().trim();
        if(input.equals("q")) break;
        else{
         Maze boya=new Maze(input+".ice");
         if(boya.findWay(boya.startX,boya.startY)){
          boya.show();
         }
         else System.out.println("No Ways to the end!");
        }
        System.out.println("Input another map name or input 'q' to quit:");
       }
       is.close();
      }
      catch(IOException e){
       System.out.println("Wrong Input!!!");
      }
      catch(NullPointerException e){
       System.out.println("Wrong Input!!!");
      }
     }
    }

    posted on 2005-07-27 11:54 Cavenaghi 閱讀(767) 評論(1)  編輯  收藏

    Feedback

    # re: 遞歸尋求迷宮出路 2005-12-11 04:55 sd
    xing bu xing ya zhe duan dai ma ?  回復  更多評論
      


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 久久久久亚洲精品成人网小说| 国产老女人精品免费视频| 在线观看免费视频网站色| baoyu777永久免费视频| 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲 | 国产高清视频免费在线观看| 精品无码一级毛片免费视频观看| 3344免费播放观看视频| 午夜私人影院免费体验区| 亚洲国产成人影院播放| 亚洲伊人久久大香线蕉苏妲己| 亚洲综合小说另类图片动图| 欧亚一级毛片免费看| xxxxwww免费| 亚洲午夜久久久久久久久电影网| 亚洲人成人77777网站不卡 | 亚洲精品国产福利在线观看| 成人精品国产亚洲欧洲| 亚洲视频在线免费观看| 在线免费观看a级片| 青青青亚洲精品国产| 亚洲中文字幕无码久久精品1 | 免费女人高潮流视频在线观看| 亚洲Aⅴ无码一区二区二三区软件 亚洲AⅤ视频一区二区三区 | 亚洲一区二区视频在线观看| 免费人成在线观看视频高潮| 国产成人在线免费观看| 人妻免费久久久久久久了| 四虎影视免费在线| 一级做a爱片特黄在线观看免费看| 毛片免费全部播放一级| 久久久亚洲欧洲日产国码二区| 国产va免费精品观看精品| 亚洲黄色在线观看网站| 成人电影在线免费观看| 亚洲精品在线免费看| 免费a级毛片永久免费| 色天使亚洲综合一区二区| 国产精品国产亚洲精品看不卡| 乱淫片免费影院观看| 久久久久亚洲av无码专区导航 |