資源簡介
迷宮老鼠的課程設計,軟件截圖: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? for?(int?w?=?0;?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.get(i).setState(0);
}
maze.get(0).setState(1);
return?maze;
}
public?ArrayList?getRandomMaze()?{
System.out.println(“getMaze“);
for?(int?h?=?0;?h? for?(int?w?=?0;?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個文件信息
評論
共有 條評論