java实现老鼠迷宫游戏

我们可以把迷宫当成一个二位数组,其中1代表障碍物,走不了,初始化一个二维数组,设置好障碍物

//老鼠迷宫
        int[][] map = {
                {1,1,1,1,1,1,1,1},
                {1,0,0,0,0,0,0,1},
                {1,1,0,0,0,0,0,1},
                {1,0,1,0,0,0,0,1},
                {1,0,0,0,1,0,0,1},
                {1,0,1,1,0,0,1,1},
                {1,1,0,0,0,0,0,1},
                {1,1,1,1,1,1,1,1},
        };

从全局上来看,老鼠的线路应该是如下的,才能走出迷宫,但实际上,老鼠需要绕路,遇到障碍物回头才对。
在这里插入图片描述
思路:
1.设老鼠的行进路线都是优先选择下->右->上->左。
2.设老鼠很聪明,走过的路线走撒泡尿,表示鼠大爷到此一游,我们可以把数组的值改为3,表示走过,但走不通。
3.这是一个int[8][8]的二位数组,那么开始位置下标是1,1,结束位置是6,6。行和列分别用、j表示。
4.实际路线我们可以设置2表示,我们可以使用递归,让老鼠不断测试路线。
5.最后打印数组,看老鼠的实际路线。
代码如下:

public boolean mouseMaze(int[][] map,int i,int j) {
        if(map[6][6] == 2) {
            return true;
        }else {
            if(map[i][j] == 0) {
                map[i][j] = 2;//假设是可以走的
                if(mouseMaze(map,i + 1, j)) {//向下走
                    return true;
                } else if(mouseMaze(map,i,j + 1)) {//向右走
                    return true;
                } else if(mouseMaze(map,i - 1,j)) {//向上走
                    return true;
                } else if(mouseMaze(map,i,j - 1)) {//向左走
                    return true;
                } else {
                    map[i][j] = 3;
                    return false;
                }
            }else{
                return false;
            }
        }
 }

打印二维数组,数据结果为:
在这里插入图片描述
可以看到,符合我们预期,并且老鼠在其中是走过弯路的,在4,5,6行碰壁后退回,重新选择了路线。

猜你喜欢

转载自blog.csdn.net/Autumn_1/article/details/120704004