import java.util.Random;
public class Drunk_walk {
    public static void main(String[] args) {
        //path全開true,經過時變false
        int x=8,y=8;
        boolean path[][]=new boolean[x][y];
        for (int i=0;i<path.length;i++){
            for (int j=0;j<path[0].length;j++){
                path[i][j]=true;
            }
        }
        Random RD = new Random();
        path[2][2]=false; //start
        int n=2,m=2,walk=0;
        do{
            int temp=RD.nextInt(4)+1;
            switch (temp){
                case 1: //往左走
                    if (n-1<0){
                        System.out.println("撞牆了。因此原地停留。");
                    }else{
                        n-=1;
                        path[n][m]=false;                        
                    }
                    break;
                case 2: //往右走
                    if (n+1>=x){
                        System.out.println("撞牆了。因此原地停留。");
                    }else{
                        n+=1;
                        path[n][m]=false;                        
                    }
                    break;
                case 3: //往上走
                    if (m-1<0){
                        System.out.println("撞牆了。因此原地停留。");
                    }else{
                        m-=1;
                        path[n][m]=false;                        
                    }
                    break;
                case 4: //往下走
                    if (m+1>=y){
                        System.out.println("撞牆了。因此原地停留。");
                    }else{
                        m+=1;
                        path[n][m]=false;                        
                    }
                    break;
            }
            walk++;
            System.out.printf("第%s步:(%s,%s)\n",walk,n,m);
        }while (path[5][5]==true);
    }
}

//一個很有名的電腦問題,稱為醉漢走路,也就是有一個醉漢要回幏,但是他實在醉的幾乎不省人事,完全不記得家的方向,甚至連走過的路都馬上忘記,所以他就隨機地前後左右走出每一步,直到突然發現家已經到了為止。請你用一個8x8的二維矩陣來模仿醉漢走的路線,給定醉漢一開始的位置和家的位置,讓醉漢隨機地在矩陣上下左右移動,直到家的座標為止。

arrow
arrow
    全站熱搜

    z520842z 發表在 痞客邦 留言(0) 人氣()