第1步:代码逻辑

package com.lian.pojo;/*** 递归实现迷宫玩法*/
public class Mouse {public static void main(String[] args) {//绘制迷宫int[][] arr = new int[8][7];//将最上面和最下面的一维数组 的所有元素均赋值 1for (int i = 0; i < 7; i++) {arr[0][i] = 1;arr[7][i] = 1;}//将最左面和最右面的一维数组 的所有元素均赋值 1for (int i = 0; i < 7; i++) {arr[i][0] = 1;arr[i][6] = 1;}//将指定位置设置为1,表示障碍物arr[3][0] = 1;arr[3][1] = 1;arr[3][2] = 1;//输出当前的地图,打印此二维数组System.out.println("======current map=======");for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr[i].length; j++) {System.out.print(arr[i][j]+" ");}System.out.println();}//使用findway找路T t = new T();//第1种走法,走路策略:下-右-上-左//t.findWay(arr,1,1);//第2种走法,走路策略:上-右-下-左t.findWay2(arr,1,1);System.out.println("\n=======find path situation=======");//输出当前的地图,打印此二维数组for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr[i].length; j++) {System.out.print(arr[i][j]+" ");}System.out.println();}}
}class T{/*** 使用递归回溯,findway方法就是找迷宫的路径* 如果找到就返回true,否则返回false* 0 表示可以走* 1 表示障碍物不可以走* 2、假设可以走通* 3、表示已经走过,但走不通是死路*/public boolean findWay(int[][] arr,int i,int j){//说明已经找到if (arr[6][5] == 2){return true;}else {//当前位置为0 ,说明可以走if (arr[i][j] == 0){//假设位置arr[i][j]可以走通,用2代表//如果某个位置是0代表可以走,走完标志其为2,记录可以走通arr[i][j] = 2;//使用找路策略,来确定该位置是否可以真的走通//下 右 上 左if (findWay(arr,i+1,j)){  //向下走return true;}else if (findWay(arr,i,j+1)){  //向右走return true;}else if (findWay(arr,i-1,j)){ //向上走return true;}else if (findWay(arr,i,j-1)){  //向左走return true;//如果前后左右都走不通,则此路标记为已走通}else {arr[i][j] = 3;return false;}}else {return false;}}}//修改找路策略 改为 上-右-下-左public boolean findWay2(int[][] arr,int i,int j){//说明已经找到if (arr[6][5] == 2){return true;}else {//当前位置为0 ,说明可以走if (arr[i][j] == 0){//假设位置arr[i][j]可以走通,用2代表//如果某个位置是0代表可以走,走完标志其为2,记录可以走通arr[i][j] = 2;//使用找路策略,来确定该位置是否可以真的走通//上 右 下 左if (findWay2(arr,i-1,j)){  //向上走return true;}else if (findWay2(arr,i,j+1)){  //向右走return true;}else if (findWay2(arr,i+1,j)){ //向下走return true;}else if (findWay2(arr,i,j-1)){  //向左走return true;//如果前后左右都走不通,则此路标记为已走通}else {arr[i][j] = 3;return false;}}else {return false;}}}}

第2步:结果展示

======current map=======
1 1 1 1 1 1 1
1 0 0 0 0 0 1
1 0 0 0 0 0 1
1 1 1 0 0 0 1
1 0 0 0 0 0 1
1 0 0 0 0 0 1
1 0 0 0 0 0 1
1 1 1 1 1 1 1 =======find path situation=======
1 1 1 1 1 1 1
1 2 2 2 2 2 1
1 0 0 0 0 2 1
1 1 1 0 0 2 1
1 0 0 0 0 2 1
1 0 0 0 0 2 1
1 0 0 0 0 2 1
1 1 1 1 1 1 1 

java递归走迷宫游戏相关推荐

  1. 遗传算法在走迷宫游戏中的应用

    我的数据挖掘算法库:https://github.com/linyiqun/DataMiningAlgorithm  我的算法库:https://github.com/linyiqun/lyq-alg ...

  2. c语言大作业走迷宫,基于C语言实现简单的走迷宫游戏

    本文实例讲述了C语言实现简单的走迷宫游戏的方法,代码完整,便于读者理解. 学数据结构时用"栈"写的一个走迷宫程序,实际上用到双向队列,方便在运行完毕后输出经过的点. #includ ...

  3. Dev-c++编写走迷宫游戏 思路和代码 详解

    创作背景 今天又是放元旦假的一天,无聊的我刷够了手机,就跑过去打开电脑······ 熟悉的Dev-c++图标又映入我的眼帘,今天编点什么呢······ 我绞尽脑汁,冥思苦想,终于想到了一个游戏--走迷 ...

  4. 递归走迷宫java,java递归实现的迷宫游戏

    java递归实现的迷宫游戏 public class Migong { private int gard[][]={  {1,1,1,1,0,1,1,1}, {0,0,0,1,1,1,1,1}, {1 ...

  5. c语言课程设计走迷宫游戏,C语言课程设计-迷宫游戏.doc

    计算机技术基础课程设计 C语言 设计报告 题目:完整的二维迷宫游戏 学院:工商管理学院 专业:信息系统与信息管理 班级:050507 姓名:孙月 指导教师:张首伟 设计日期:2004年12月10日 题 ...

  6. 基于JAVA的简单迷宫游戏

    一.实验要求 1. 迷宫游戏是非常经典的游戏,在该题中要求随机生成一个迷宫,并求解迷宫. 2. 要求游戏支持玩家走迷宫,和系统走迷宫路径两种模式.玩家走迷宫,通过键盘方向键控制,并在行走路径上留下痕迹 ...

  7. fla 走迷宫游戏 源码_迷宫新玩法,果断一试

    迷宫, 真的是谜一样的存在, 大到几十岁的成年人, 小到三岁小儿, 都对其没有抵抗力. 而迷宫君也是真给力, 除了能给人带来愉悦感与成就感, 还能同时锻炼专注力.空间感.思维力.视觉追踪等, 是儿童感 ...

  8. c语言走迷宫游戏代码

    废话不多说,直接上代码(版本:v1.0.8) #include <stdio.h> #include <stdlib.h> #include <windows.h> ...

  9. C++算法实现走迷宫游戏,10分钟学会迷宫算法!

    本文实例为大家分享了C++实现走迷宫的具体代码,供大家参考,具体内容如下 用n*n个小方格代表迷宫,每个方格上有一个字符0或1,0代表这个格子不能走,1代表这个格子可以走.只能一个格子一个走,而且只能 ...

  10. 520,花一夜给女神写走迷宫游戏

    以前虽然写过走迷宫,很多人反映没找到代码不会部署,没看明白原理,这次把更详细写出优化并将代码放到github,趁着520可以自己放一些图片献给女神! 起因 先看效果图(文末有动态图)(在线电脑尝试地址 ...

最新文章

  1. Cell:肠道菌群促进帕金森发生ParkinsonDisease
  2. 最好用的嵌入式网络C库、Lua库
  3. java怎么给类中的私有变量赋值_Java学习笔记分享 如何理解接口抽象类和关键字...
  4. 屏幕的遮挡层,js得到屏幕宽高、页面宽高 (window.screen.availHeight)等--
  5. 介绍 Echoo: go 语言编写的 echo 服务器
  6. android 八核手机,八核手机
  7. oracle学习笔记系列------oracle 基本操作之表的增删改查
  8. 安装nrm,报错request@2.88.2: request has been deprecated, see https://github.com/request/request/issu
  9. Linux一些软件的安装
  10. ftk学习记(消息框篇)
  11. 理解Angular的Reactive Form
  12. Bailian3175 验证极限【数学】
  13. mysql 配置 explicit_defaults_for_timestamp
  14. Hadoop 101: Programming MapReduce with Native Libraries, Hive, Pig, and Cascading
  15. word表格内插入某月某日星期几_Word文字技巧—如何在Word中自动生成日历
  16. 无线蹭网工具奶瓶Beini使用教程
  17. 读书笔记《TAOCP》 V1 S1.1
  18. 有趣的USB接口和颜色分类
  19. 祝贺父亲节快乐的python代码_父亲节快乐的祝福语贺词(最新)
  20. stack(后进先出)

热门文章

  1. 洛谷P3227 切糕
  2. 气球java游戏_团队游戏 气球
  3. should be described in NUMA config 和 CPU feature cmt not found
  4. 技术经理、架构师、技术总监、VP、CTO,这些岗位都是如何挣出来
  5. 基于java的KTV点歌选歌系统
  6. HCIA—网络基本知识—双绞线(文字 + 图解)
  7. 第九章——有ISI和AWGN信道的最佳接收机
  8. dedecms 安装后 管理后台ie假死 无响应的解决方法
  9. 计算机网络技术的职业倾向,(职业规划)计算机网络技术专业个人职业生涯规划书(8页)-原创力文档...
  10. 计算机处理器(CPU)基础