溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java遞歸怎樣實現迷宮游戲

發布時間:2021-12-16 11:37:22 來源:億速云 閱讀:162 作者:柒染 欄目:開發技術

本篇文章為大家展示了Java遞歸怎樣實現迷宮游戲,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

1.問題由來

迷宮實驗是取自心理學的一個古典實驗。在該實驗中,把一只老鼠從一個無頂大盒子的門放入,在盒中設置了許多墻,對行進方向形成了多處阻擋。盒子僅有一個出口,在出口處放置一塊奶酪,吸引老鼠在迷宮中尋找道路以到達出口。對同一只老鼠重復進行上述實驗,一直到老鼠從入口到出口,而不走錯一步。老鼠經多次試驗終于得到它學習走迷宮的路線。

2.問題的描述

有一個迷宮地圖,有一些可達的位置,也有一些不可達的位置(障礙、墻壁、邊界)。從一個位置到下一個位置只能通過向上(或者向右、或者向下、或者向左)走一步來實現,從起點出發,如何找到一條到達終點的通路。

3.思路分析

通過按照約定的策略(比如下->右->上->左)不停的遞歸調用方法尋找迷宮的出口。從起點出發,每個位置都有四種選擇(上右下左),先選擇一個方向(按約定的順序選擇優先方向),如果該方向能夠走下去,那么就往這個方向走,當前位置切換為下一個位置。如果不能走,那么換個方向走,如果所有方向都走不了,那么就回到到上一個位置去。一直這樣執行下去,如果當前位置是終點,就退出程序

  • 用二維數組來模擬迷宮地圖

  • 1代表墻壁

  • 0代表該位置可達。

  • 2代表每走過一個位置就將地圖的對應位置標記 以免重復

  • 3代表走過這個位置但是走不通

Java遞歸怎樣實現迷宮游戲

Java遞歸怎樣實現迷宮游戲

4.代碼實現

public class MiGong {
    public static void main(String[] args) {
        int[][] map = new int[8][8];
        /**
         * 初始化迷宮
         */
        for (int i = 0; i < 8; i++) {
            map[0][i] = 1;
            map[7][i] = 1;
            map[i][0] = 1;
            map[i][7] = 1;
        }
        for (int i = 0; i < 4; i++) {
            map[3][1+i] = 1;
            map[5][6-i] = 1;
        }
        System.out.println("======迷宮形狀======");
        for (int i = 0; i < map.length; i++) {
            for (int j = 0; j < map[i].length; j++) {
                System.out.print(map[i][j]+" ");
            }
            System.out.println();
        }

        getWay(map,1,1);

        System.out.println("======行走軌跡======");
        for (int i = 0; i < map.length; i++) {
            for (int j = 0; j < map[i].length; j++) {
                System.out.print(map[i][j]+" ");
            }
            System.out.println();
        }
    }

    public static boolean getWay(int[][] map,int i,int j){
        if (map[6][6] == 2){              //已經到達終點
            return true;
        }else {
            if (map[i][j] == 0){          //當前位置還沒走過
                map[i][j] = 2;
                if (getWay(map,i+1,j)){  //向下走
                    return true;
                }
                if (getWay(map,i,j+1)){  //向右走
                    return true;
                }
                if (getWay(map,i,j-1)){  //向左走
                    return true;
                }
                if (getWay(map,i-1,j)){  //向上走
                    return true;
                }else{
                    map[i][j] = 3;         //四邊都走不通
                    return false;
                }
            }else{                         //如果不是0就說明過不了或者走過了
                return false;
            }
        }
    }
}

5.結果輸出

由于按照下->右->上->左的約定順序取判定下一步是否可走
在到達(4,5)位置時會向向右走黃色的那條路線 當走到(1,2)
位置時四周都不為0即四邊都不可走那么它就會退回到上一個位置
回到(1,3)后發現四周依舊不可達依此規則直至回到(4,5)

最終行走的路線就為紅線所示:

Java遞歸怎樣實現迷宮游戲

按照不同的策略有不同的行走路線

上述內容就是Java遞歸怎樣實現迷宮游戲,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女