广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java递归实现迷宫游戏
  • 253
分享到

Java递归实现迷宫游戏

2024-04-02 19:04:59 253人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录1.问题由来2.问题的描述3.思路分析4.代码实现5.结果输出1.问题由来 迷宫实验是取自心理学的一个古典实验。在该实验中,把一只老鼠从一个无顶大盒子的门放入,在盒中设置了许多墙

1.问题由来

迷宫实验是取自心理学的一个古典实验。在该实验中,把一只老鼠从一个无顶大盒子的门放入,在盒中设置了许多墙,对行进方向形成了多处阻挡。盒子仅有一个出口,在出口处放置一块奶酪,吸引老鼠在迷宫中寻找道路以到达出口。对同一只老鼠重复进行上述实验,一直到老鼠从入口到出口,而不走错一步。老鼠经多次试验终于得到它学习走迷宫的路线。

2.问题的描述

有一个迷宫地图,有一些可达的位置,也有一些不可达的位置(障碍、墙壁、边界)。从一个位置到下一个位置只能通过向上(或者向右、或者向下、或者向左)走一步来实现,从起点出发,如何找到一条到达终点的通路。

3.思路分析

本文通过按照约定的策略(比如下->右->上->左)不停的递归调用方法寻找迷宫的出口。从起点出发,每个位置都有四种选择(上右下左),先选择一个方向(按约定的顺序选择优先方向),如果该方向能够走下去,那么就往这个方向走,当前位置切换为下一个位置。如果不能走,那么换个方向走,如果所有方向都走不了,那么就回到到上一个位置去。一直这样执行下去,如果当前位置是终点,就退出程序

  • 用二维数组来模拟迷宫地图
  • 1代表墙壁
  • 0代表该位置可达。
  • 2代表每走过一个位置就将地图的对应位置标记 以免重复
  • 3代表走过这个位置但是走不通

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实现迷宫游戏内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java递归实现迷宫游戏

本文链接: https://www.lsjlt.com/news/160002.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java递归实现迷宫游戏
    目录1.问题由来2.问题的描述3.思路分析4.代码实现5.结果输出1.问题由来 迷宫实验是取自心理学的一个古典实验。在该实验中,把一只老鼠从一个无顶大盒子的门放入,在盒中设置了许多墙...
    99+
    2022-11-12
  • Java递归怎样实现迷宫游戏
    本篇文章为大家展示了Java递归怎样实现迷宫游戏,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.问题由来迷宫实验是取自心理学的一个古典实验。在该实验中,把一只老鼠从一个无顶大盒子的门放入,在盒中设...
    99+
    2023-06-22
  • Java实现的迷宫游戏
    目录完整项目地址:软件总体框架软件各模块介绍参数设置模块按钮功能模块迷宫主界面模块迷宫整体界面软件设计方案软件相关原理说明迷宫生成算法Depth First Search Algor...
    99+
    2022-11-12
  • Java怎么实现迷宫游戏
    这篇文章给大家分享的是有关Java怎么实现迷宫游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Java有哪些集合类Java中的集合主要分为四类:1、List列表:有序的,可重复的;2、Queue队列:有序,可重...
    99+
    2023-06-14
  • Java实现经典游戏复杂迷宫
    目录前言主要设计功能截图代码实现总结前言 人类建造迷宫已有5000年的历史。在世界的不同文化发展时期,这些奇特的建筑物始终吸引人们沿着弯弯曲曲、困难重重的小路吃力地行走,寻找真相。迷...
    99+
    2022-11-13
  • Java实现简单的迷宫游戏详解
    目录前言主要设计功能截图代码实现窗口布局核心算法总结前言 人类建造迷宫已有5000年的历史。在世界的不同文化发展时期,这些奇特的建筑物始终吸引人们沿着弯弯曲曲、困难重重的小路吃力地行...
    99+
    2022-11-13
  • 怎么用html5实现迷宫游戏
    这篇文章主要介绍“怎么用html5实现迷宫游戏”,在日常操作中,相信很多人在怎么用html5实现迷宫游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用html5实现迷宫...
    99+
    2022-10-19
  • C++基于easyx实现迷宫游戏
    本文实例为大家分享了C++基于easyx实现迷宫游戏的具体代码,供大家参考,具体内容如下 #define _CRT_SECURE_NO_DEPRECATEd #define _C...
    99+
    2022-11-13
  • Java如何实现经典游戏复杂迷宫
    这篇文章主要为大家展示了“Java如何实现经典游戏复杂迷宫”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java如何实现经典游戏复杂迷宫”这篇文章吧。前言人类建造迷宫已有5000年的历史。在世界...
    99+
    2023-06-29
  • Pygame实战之迷宫游戏的实现
    目录导语正文1)效果展示2)主程序导语 哈喽!哈喽我是栗子,每日更新来啦—— “玩迷宫游戏长大的我们,欣慰地看到,下一代仍热爱着这个经典游戏。 如...
    99+
    2022-11-13
  • Python如何实现过迷宫小游戏
    小编给大家分享一下Python如何实现过迷宫小游戏,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!开发工具Python版本: 3.6.4相关模块:pygame模块;以及一些Python自带的模块。环境搭建安装Python并添...
    99+
    2023-06-22
  • Unity怎么实现3D迷宫小游戏
    这篇文章主要介绍了Unity怎么实现3D迷宫小游戏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Unity怎么实现3D迷宫小游戏文章都会有所收获,下面我们一起来看看吧。一、前言闲来无事,从零开始整个《3D迷宫》...
    99+
    2023-06-29
  • 如何实现一个canvas迷宫游戏
    小编给大家分享一下如何实现一个canvas迷宫游戏,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!正文实现这个小游戏也不难,让我们想想,一个迷宫游戏有哪些基本要素。...
    99+
    2023-06-09
  • C++基于easyx怎么实现迷宫游戏
    本篇内容介绍了“C++基于easyx怎么实现迷宫游戏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!效果:#define _CRT_...
    99+
    2023-06-30
  • java迷宫算法的理解(递归分割,递归回溯,深搜,广搜)
    目录递归分割法:递归回溯法:广度优先深度优先:下面是递归分割法、递归回溯法以及文件加载地图实现的类map最近这学期做了一个java迷宫的课程设计,这里代码及其算法逻辑就分享出来。 首...
    99+
    2022-11-12
  • Python实现过迷宫小游戏示例详解
    目录前言开发工具环境搭建原理简介主要代码前言 今天为大家带来解闷用的过迷宫小游戏分享给大家好了。让我们愉快地开始吧~ 开发工具 Python版本: 3.6.4 相关模块: pygam...
    99+
    2022-11-12
  • Java实现可视化走迷宫小游戏的示例代码
    目录效果图数据层视图层控制层效果图 数据层 本实例需要从 .txt 文件中读取迷宫并绘制,所以先来实现文件读取IO类 MazeData.java,该程序在构造函数运行时将外部文件...
    99+
    2022-11-13
    Java走迷宫游戏 Java 迷宫游戏 Java 迷宫
  • Java数据结构 递归之迷宫回溯案例讲解
    问题介绍: 用二维数组表示一个迷宫,设置迷宫起点和终点,输出迷宫中的一条通路 实现思路: 二维数组表示迷宫: 0表示路且未走过、1表示墙、2表示通路,3表示已经走过但走不通 设置寻...
    99+
    2022-11-12
  • 基于C语言实现迷宫游戏的示例代码
    目录C语言迷宫游戏定义地图打印地图方法一打印地图方法二定义起点和终点位置实现读取按键实现小球下向下移动一步总结小球移动规律实现重新打印地图实现连续移动实现小球下向上下左右移动实现小球...
    99+
    2022-11-13
  • 基于Unity3D实现3D迷宫小游戏的示例代码
    目录一、前言二、构思三、正式开发3-1、搭建场景3-2、设置出入口3-3、添加角色3-4、实现角色移动3-5、出入口逻辑四、总结一、前言 闲来无事,从零开始整个《3D迷宫》小游戏。 ...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作