资源简介
迷宫老鼠的课程设计,软件截图:http://blog.csdn.net/wxg694175346/article/details/8716983
包含以下主要功能:
1.自定义迷宫大小
2.使用图的深度遍历随机生成迷宫
3.用户使用鼠标绘制自定义迷宫
4.单步求解迷宫
5.一键求解迷宫
6.声音特效
代码片段和文件信息
/**
* 项目: 迷宫老鼠
* 版本: 2.0
* 日期: 03-16
* 作者: 汪海洋
* 文件: MazeModel.java
* 功能: 迷宫的MazeModel模型类
* 描述: 存储完整的迷宫模型信息,封装相关的迷宫功能
*/
package model;
import java.util.ArrayList;
import java.util.Random;
public class MazeModel {
int width = 0;
int height = 0;
private Random myRandom = new Random();
private MazePoint nowPoint;// 迷宫的当前坐标
private Stack pathStack;// 存储迷宫坐标的堆栈
private MazePoint[] offset;// 偏移量数组
private ArrayList maze;// 存储迷宫地图的数组
private int myDirection = 0;// 方向的选择
boolean isDelete = false;// 是否删除
public static final int LAST_OPTION = 3;
/** 初始化迷宫模型 */
public MazeModel(int width int height) {
this.width = width;
this.height = height;
maze = new ArrayList();
nowPoint = new MazePoint(0 0);
pathStack = new Stack(width * height);
offset = new MazePoint[4];// 设置控制方向的偏移量
offset[0] = new MazePoint(1 0);// 向右
offset[1] = new MazePoint(0 1);// 向下
offset[2] = new MazePoint(-1 0);// 向左
offset[3] = new MazePoint(0 -1);// 向上
}
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 Stack getStack() {
return pathStack;
}
public ArrayList initializeMaze() {
for (int h = 0; h < height; h++) {
for (int w = 0; w < width; w++) {
MazePoint point = new MazePoint(w h);
maze.add(point);
}
}
maze.get(0).setState(1);
return maze;
}
public ArrayList resetMaze() {// 返回迷宫点类
for (int i = 0; i < maze.size(); i++) {
maze.get(i).setState(0);
}
maze.get(0).setState(1);
return maze;
}
public ArrayList getRandomMaze() {
System.out.println(“getMaze“);
for (int h = 0; h < height; h++) {
for (int w = 0; w < width; w++) {
MazePoint point = new MazePoint(w h);
maze.add(point);
}
}
return setRandomMaze();
}
/** 随机生成迷宫的算法,基于深度搜索 */
private ArrayList setRandomMaze() {
int top = 0;
int x = 0;
int y = 0;
ArrayList pathStack = new ArrayList();
pathStack.add(maze.get(x + y * width));
while (top >= 0) {
int[] nowPosDir = new int[] { -1 -1 -1 -1 };
int times = 0;
boolean nowMovable = false;// 当前坐标能否前进至下一相邻坐标
MazePoint topPoint = pathStack.get(top);// 取出坐标数组中的第top个元素,top从0开始
x = topPoint.getX();
y = topPoint.getY();
topPoint.visted = true;// 标记该坐标为:已访问
loop: while (times < 4) {
int dir = myRandom.nextInt(4);
if (nowPosDir[dir] == dir)
continue;
else
nowPosDir[dir] = dir;
switch (dir) {
case 0:
/*
* mydir = 0:选择的方向是朝左移动一格,posNow存储当前位置的坐标
* 如果该顶点不是左边界并且尚未被访问,则将当前坐标与其左边坐标打通
* 实现方案:设置maze数组中当前坐标的left值为1并且设置maze数组中左边坐标的right值为1
*/
if ((x - 1) >= 0
&& maze.get(x - 1 +
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 299 2013-03-17 12:49 Maze2.5(Music)\.classpath
文件 390 2013-03-20 15:12 Maze2.5(Music)\.project
文件 629 2012-02-15 12:33 Maze2.5(Music)\.settings\org.eclipse.jdt.core.prefs
文件 3474 2013-03-18 17:02 Maze2.5(Music)\bin\images\1.png
文件 4466 2013-03-18 17:08 Maze2.5(Music)\bin\images\10.png
文件 3674 2013-03-18 17:07 Maze2.5(Music)\bin\images\11.png
文件 4450 2013-03-18 17:07 Maze2.5(Music)\bin\images\12.png
文件 4475 2013-03-18 17:07 Maze2.5(Music)\bin\images\13.png
文件 4199 2013-03-18 17:06 Maze2.5(Music)\bin\images\14.png
文件 4352 2013-03-18 17:06 Maze2.5(Music)\bin\images\15.png
文件 4437 2013-03-18 17:06 Maze2.5(Music)\bin\images\16.png
文件 4142 2013-03-18 17:10 Maze2.5(Music)\bin\images\17.png
文件 4488 2013-03-18 17:06 Maze2.5(Music)\bin\images\18.png
文件 4478 2013-03-18 17:05 Maze2.5(Music)\bin\images\19.png
文件 4086 2013-03-18 17:04 Maze2.5(Music)\bin\images\2.png
文件 4721 2013-03-18 17:05 Maze2.5(Music)\bin\images\20.png
文件 4419 2013-03-18 17:05 Maze2.5(Music)\bin\images\21.png
文件 4336 2013-03-18 17:05 Maze2.5(Music)\bin\images\22.png
文件 4758 2013-03-18 17:04 Maze2.5(Music)\bin\images\23.png
文件 4586 2013-03-18 17:04 Maze2.5(Music)\bin\images\24.png
文件 4703 2013-03-18 17:04 Maze2.5(Music)\bin\images\25.png
文件 4110 2013-03-18 17:04 Maze2.5(Music)\bin\images\3.png
文件 3831 2013-03-18 17:03 Maze2.5(Music)\bin\images\4.png
文件 4006 2013-03-18 17:09 Maze2.5(Music)\bin\images\5.png
文件 4087 2013-03-18 17:08 Maze2.5(Music)\bin\images\6.png
文件 3759 2013-03-18 17:08 Maze2.5(Music)\bin\images\7.png
文件 4125 2013-03-18 17:08 Maze2.5(Music)\bin\images\8.png
文件 4097 2013-03-18 17:08 Maze2.5(Music)\bin\images\9.png
文件 54675 2013-03-17 20:19 Maze2.5(Music)\bin\images\about_back1.png
文件 53133 2013-03-17 20:19 Maze2.5(Music)\bin\images\about_back2.png
............此处省略215个文件信息
相关资源
- 火车订票系统数据库课程设计
- 数电课程设计报告-四人智力竞赛抢答
- 四川大学数据结构课程设计四个实验
- 软件工程课程设计报告(包附源代码
- 课程设计脉搏计设计,电路图及其详
- 二级减速器课程设计Design.zip
- 电磁场与微波课程设计北理工
- 山东大学计算机图形学实验二3D迷宫漫
- 基于ios的视频播放器
- 软件工程课程设计项目:基于Maven+S
- 东南大学微机课程设计7-电梯控制
- 网页设计-课程设计
- EDA课程设计-频率计.zip
- struts2框架设计的网络商城期末课程设
- 基于CC2530的传感数据采集系统(含加
- 学生成绩管理系统源代码+详细设计文
- 山东大学计算机组成原理实验要求及
- 时分秒计时器数电课程设计Multisim14
- Qt随机迷宫及路径获取
- 广州大学计算机组成原理课程设计实
- 密码学课程设计12
- 扬州大学电力拖动课程设计报告
- 北京科技大学自动化学院小学期多人
- Qt实现的迷宫游戏_可执行程序迷宫生
- AE二次开发源码
- 网络购物订单管理系统-课程设计源码
- 杭电操作系统课程设计虚拟文件系统
- 计算机网络课程设计(第二版) 吴功
- 数字钟 数电课程设计 数字钟 电子钟
- 数据库课程设计-考勤信息管理系统
评论
共有 条评论