资源简介

迷宫老鼠的课程设计,软件截图: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个文件信息

评论

共有 条评论