java生成迷宫_java怎么生成迷宫地图
package cn.zhongZw.model;
import java.util.ArrayList;
import java.util.Random;
public class MazeModel {
private int width = 0;
private int height = 0;
private Random rnd = new Random();
public MazeModel() {
this.width = 50; //迷宫宽度
this.height = 50; //迷宫高度
}
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public MazeModel(int width, int height) {
super();
this.width = width;
this.height = height;
}
public ArrayList getMaze() {
ArrayList maze = new ArrayList ();
for (int h = 0; h
for (int w = 0; w
MazePoint point = new MazePoint(w, h);
maze.add(point);
}
}
return CreateMaze(maze);
}
private ArrayList CreateMaze(ArrayList maze) {
int top = 0;
int x = 0;
int y = 0;
ArrayList team = new ArrayList ();
team.add(maze.get(x + y * width));
while (top >= 0) {
int[] val = new int[] {
-1, -1, -1, -1
};
int times = 0;
boolean flag = false;
MazePoint pt = (MazePoint) team.get(top);
x = pt.getX();
y = pt.getY();
pt.visted = true;
ro1: while (times
int dir = rnd.nextInt(4);
if (val[dir] == dir)
continue;
else
val[dir] = dir;
switch (dir) {
case 0: // 左边
if ((x - 1) >= 0 && maze.get(x - 1 + y * width).visted == false) {
maze.get(x + y * width).setLeft();
maze.get(x - 1 + y * width).setRight();
team.add(maze.get(x - 1 + y * width));
top++;
flag = true;
break ro1;
}
break;
case 1: // 右边
if ((x + 1)
maze.get(x + y * width).setRight();
maze.get(x + 1 + y * width).setLeft();
team.add(maze.get(x + 1 + y * width));
top++;
flag = true;
break ro1;
}
break;
case 2: // 上边
if ((y - 1) >= 0 && maze.get(x + (y - 1) * width).visted == false) {
maze.get(x + y * width).setUp();
maze.get(x + (y - 1) * width).setDown();
team.add(maze.get(x + (y - 1) * width));
top++;
flag = true;
break ro1;
}
break;
case 3: // 下边
if ((y + 1)
maze.get(x + y * width).setDown();
maze.get(x + (y + 1) * width).setUp();
team.add(maze.get(x + (y + 1) * width));
top++;
flag = true;
break ro1;
}
break;
}
times += 1;
}
if (!flag) {
team.remove(top);
top -= 1;
}
}
return maze;
}
}
迷宫
[java] view plain copy
//作者:zhongZw
//邮箱:zhong317@32313133353236313431303231363533e58685e5aeb931333365633966126.com
package cn.zhongZw.model;
import java.util.*;
import java.lang.*;
public class MazePoint {
private int left = 0;
private int right = 0;
private int up = 0;
private int down = 0;
private int x;
private int y;
public boolean visted;
public MazePoint(int x, int y) {
this.x = x;
this.y = y;
}
public int getLeft() {
return left;
}
public void setLeft() {
this.left = 1;
}
public int getRight() {
return right;
}
public void setRight() {
this.right = 1;
}
public int getUp() {
return up;
}
public void setUp() {
this.up = 1;
}
public int getDown() {
return down;
}
public void setDown() {
this.down = 1;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
java生成迷宫_java怎么生成迷宫地图相关推荐
- java 随机生成手机号_Java随机密码生成并和邮箱、手机号匹配
废话不多说了,直接给大家贴java代码了,代码有所注释,写的不好,还请各位大家多多关照. 代码如下所示: package com.alibaba.uyuni.common.util; import j ...
- java 动态 枚举_java 动态生成枚举值
在某些场景下我们需要动态生成一些枚举值,主要是通过反射生成,但是这种生成枚举值是不能switch的 1.枚举值类 public enum CodeInfoEnum { LOCK(1L, 1L, &qu ...
- 如何用java做游戏地图_Java为游戏绘制地图网格
嘿,我正在尝试制作地牢爬虫,但我仍停留在地图生成上.我希望生成随机的房间,但是在完成所有操作之前,我必须先在屏幕上绘制地图.我希望地图自上而下,几乎是一个网格,稍后再将地板图像添加到其中.我的思维方式 ...
- java生成迷宫_Java实现可视化迷宫
需求 使用深度优先算法求解迷宫路径,使用Java实现求解过程的可视化,可单步运行,形象直观. 演示效果 红色格子为迷宫终点,迷宫可放大缩小,为了录屏选择了较小的尺寸,有多种不同难度的迷宫可以加载. 简 ...
- java 随机数生成实现_Java中生成随机数的实现方法总结
搜索热词 在实际开发工作中经常需要用到随机数.如有些系统中创建用户后会给用户一个随机的初始化密码.这个密码由于是随机的,为此往往只有用户自己知道.他们获取了这个随机密码之后,需要马上去系统中更改.这就 ...
- java 时间生成字符串_java随机生成时间字符串的方法
本文实例为大家分享了java随机生成时间字符串的具体代码,供大家参考,具体内容如下 package com.wechat.utils; import java.text.SimpleDateForma ...
- java怎么生成字母_java自动生成字母
新建一个类SpringContextUtil.java: import org.springframework.beans.BeansException; import org.springframe ...
- java 字母随机数_java如何生成指定长度的随机数字和英文的字符串
最后贴一下完成的工具类代码 import java.util.Random; public class GeneId { /** * 随机生成包含大小写字母及数字的字符串 * @param lengt ...
- java 唯一流水号_JAVA流水号生成规格,采用同步单例生成,保证永远唯一
流水号格式为yyyyMMddXXXX,规定每天只能到9999,代码如下: 01 import java.text.DecimalFormat; 02 import java.text.SimpleDa ...
最新文章
- Spring Cloud @RefreshScope 原理是什么?
- 个人专著推荐1:Red Hat Linux 9实务自学手册(含光盘)
- YBTOJ:前缀匹配(AC自动机)
- ROS与Android的通信
- mastercam后处理升级_Mastercam中文版后处理MPFan 有了它就可以自己修改后处理了 呵呵...
- jq点击事件多次响应_分享同一个按钮jQuery多次点击实现不同事件的代码
- HTML把表格链接进下拉菜单,excel表格下拉菜单怎么做
- 二级c语言不写编程,计算机二级C语言 到底是不是考原题
- Android 混淆总结
- Win11查看电脑磁盘分区格式的方法教学
- 上海十大it外包公司
- js 获取移动端设备类型及系统版本号
- 电大计算机应用基础期末考试题,电大计算机应用基础模拟题答案.docx
- app常见的专项测试以及面试题
- Linux 命令之 jq
- 安卓(android)即时通讯
- selenium.common.exceptions.WebDriverException: Message: unable to set
- Iar工程编译和下载的使用教程
- 《C#零基础入门之百识百例》(九十一)预处理器指令 -- 代码示例
- 计算机应用多媒体设计,2020年计算机软件水平考试《多媒体应用设计师》问答题及参考答案...