1. 数据结构和算法(十)递归-迷宫游戏

1.1 迷宫游戏

  今天做一个简单的迷宫游戏,用二维数实现地图,让程序自动寻路的小游戏。

1.2 简单的迷宫

  1. 简单的迷宫
    用二维数实现地图,找路策略:【右->下->左->上】方式进行找路, 0:表示是路 1:表示迷宫墙 2:表示是通路 3:表示是不通。
   package com.yuanxw.datastructure.chapter10;/*** 简单的迷宫* 迷宫寻路的方法:* 找路策略:【右->下->左->上】方式进行找路* 是否找到:map[map.length - 2][map[0].length - 2] == 2 表示找到终点。即9,9的从标为:2标识找到终点* 图示如下: 0:表示是路 1:表示迷宫墙 2:表示是通路 3:表示是不通*/
public class MazeExample {public static void main(String[] args) {int[][] mazeMap = drawMazeMap();// 从左上角,1,1坐标的位置开始寻路getWay(mazeMap, 1, 1);System.out.println("==================迷宫地图==================");printMap(mazeMap);}/*** 创建10 * 10 迷宫图* 说明:1 表示是墙,0 表示是路** @return*/private static int[][] drawMazeMap() {int[][] map = new int[10][10];// 绘制横行坐标墙for (int x = 0; x < map.length; x++) {map[0][x] = 1;map[map.length - 1][x] = 1;}// 绘制纵向坐标墙for (int y = 0; y < map[0].length; y++) {map[y][0] = 1;map[y][map[0].length - 1] = 1;}// 设置路障for (int y = 1; y <= 7; y++) {map[3][y] = 1;}return map;}/*** 迷宫寻路的方法。* 找路策略:【右->下->左->上】方式进行找路* 是否找到:map[map.length - 2][map[0].length - 2] == 2 表示找到终点。即9,9的从标为:2标识找到终点* 图示如下: 0:表示是路 1:表示迷宫墙 2:表示是通路 3:表示是不通** @param map 地图* @param x   横向坐标* @param y   纵向坐标* @return*/private static boolean getWay(int[][] map, int x, int y) {if (map[map.length - 2][map[0].length - 2] == 2) {return true;} else if (map[x][y] != 0) {return false;} else {// 初始坐标初始值为:2。暂时表示是通路,寻路结束后,可得到最终结果。map[x][y] = 2;// 找路策略:【右->下->左->上】方式进行找路if (getWay(map, x + 1, y)) {return true;} else if (getWay(map, x, y + 1)) {return true;} else if (getWay(map, x - 1, y)) {return true;} else if (getWay(map, x, y - 1)) {return true;}// 如果 右->下->左->上 都寻路失败,那么表示该位置不通,赋值为:3map[x][y] = 3;return false;}}/*** 打印迷宫地图** @param map*/public static void printMap(int[][] map) {for (int i = 0; i < map.length; i++) {for (int j = 0; j < map[0].length; j++) {if(map[i][j] == 1){System.out.print(String.format("\033[31m%s\033[m\t", map[i][j]));}else if(map[i][j] == 2){System.out.print(String.format("\033[46m%s\033[m\t",  map[i][j]));}else {System.out.print(map[i][j] + "\t");}}System.out.println("");}}
}

执行结果:

    – 以上为《数据结构和算法(十)递归-迷宫游戏》,如有不当之处请指出,我后续逐步完善更正,大家共同提高。谢谢大家对我的关注。

——厚积薄发(yuanxw)

数据结构和算法(十)递归-迷宫游戏相关推荐

  1. 数据结构与算法之递归题目

    数据结构与算法之递归题目 目录 求n!的结果 汉若塔问题 打印字符串的全部子序列,包括空字符串 打印一个字符串的全部排序 1. 求n!的结果 public static long getFactori ...

  2. 【算法】递归|迷宫回溯问题|八皇后问题

    [算法]递归|迷宫回溯问题|八皇后问题   迷宫回溯问题,要用动态的眼光来看待这个递归算法. package com.serein.recursion;/*** @author baichuan* @ ...

  3. 数据结构与算法之递归系列

    本文来自一个不甘平凡的码农 写在前边 几个月之前就想写这样一篇文章分享给大家,由于自己有心而力不足,没有把真正的学到的东西沉淀下来,所以一直在不断的在自学. 然后又用了一个星期的时间去整理.分类,才有 ...

  4. 数据结构与算法解析 -- “递归”篇

    2020-6-16 十步杀一人,千里不留行.事了拂衣去,深藏身与名. 李白 – <侠客行 > 一.概述 递归,在数学与计算机科学中,是指在函数的定义中使用函数自身的方法.也就是说,递归算法 ...

  5. (数据结构与算法)递归及一些经典递归问题

    文章目录 1. 递归的概念 2. 递归的调用机制 3. 递归需要遵守的重要规则 4. 递归 - 迷宫问题 5. 递归-八皇后问题 1. 递归的概念 递归就是方法自己调用自己,每次调用时传入不同的变量. ...

  6. python数据结构与算法 20 递归和递归三定律

    递归 本章目标 理解很多复杂问题,如果不用递归就很难解决,用递归也许非常简单 学会怎样进行递归编程 理解并应用递归三定律 理解递归也是一种迭代 建立一个问题的递归方法 理解递归在计算机系统内是如何进行 ...

  7. java 数据结构 迷宫_JAVA数据结构与算法之递归(一)~ 迷宫问题

    递归 递归需要遵守的重要规则 1) 执行一个方法时,就创建一个新的受保护的独立空间(栈空间) 2) 方法的局部变量是独立的,不会相互影响, 比如 n 变量 3) 如果方法中使用的是引用类型变量(比如数 ...

  8. 数据结构与算法(十二):八大经典排序算法再回顾

    文章出自汪磊的博客,未经允许不得转载 一.排序的理解 提到排序大部分同学肯定第一时间想到int数组的排序,简单啊,所谓排序不就是将int数组按照从大到小或者从小到大排序吗,如果我有个数组存放的不是in ...

  9. 编程迷宫_跟我学编程第十期——迷宫游戏

    编程改变世界 图源:APPLE官网 01 效 果 演 示 IEffect demonstration 跟我学编程公益课程又和你见面了!这期ray老师将带大家来学习编程制作一个迷宫小游戏! 怎么样,你也 ...

最新文章

  1. 怎样用ug画铝型材_用UG画钻头,适合初学UG的小伙伴,快来学习吧!
  2. 阶乘的累加(3.11)(Java)
  3. LDO的最小输入输出压差和最小负载电流
  4. bytes转16进制整数 python_Python 十进制转二进制、八进制、十六进制
  5. 机器视觉传感器选型,交互作用决定取舍
  6. php实现分页mssql,PHP操作mssql数据库类,含分页类[分页类原创]
  7. 半学期学计算机有感论文,【计算机学习心得论文】_计算机学习心得论文参考资料-毕业论文范文网...
  8. php钩子是啥意思,thinkphp钩子是什么意思
  9. 将一个普通 JAR 文件打包为 plugin 的一个问题
  10. 数据类型选方法【SPSS 073期】
  11. 全球及中国缓控释肥行业产能规模与投资盈利能力分析报告2022版
  12. android 游戏音效格式,Android基础 - Android Studio 添加游戏音效
  13. 网络错误CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://repo.anaconda.com/pkgs/mai...
  14. VVC帧内预测(六)MIP
  15. java获取西瓜视频的下载地址
  16. 使用xamarin开发Android、iOS报错failed to open directory: 系统找不到指定的文件
  17. PHP函数记录-trim导致的编码异常
  18. Qt多个平台安装与维护
  19. 【猫图识别】【HTML】一张猫图,告诉你猫咪在哪
  20. Linux系统装进U盘里,制作随身携带的便捷系统

热门文章

  1. SQLite3 dll加载失败问题解决
  2. 应付帐款—制单处理,出现“供应商被锁定”的解决方法
  3. 2006年日语一级听力原文
  4. css渐变斑马条纹_创建斑马条纹表
  5. 攻击JavaWeb应用————2、CS交互安全
  6. 稳定婚配问题的所有可能解
  7. LeetCode:145. Binary Tree Postorder Traversal
  8. jackson学习之五:JsonInclude注解,颠覆认知
  9. XSS(Cross-site Script,跨站脚本)漏洞笔记
  10. 东莞SEO联盟电商【干货分享】