数据结构课程设计迷宫算法的实现JAVA.docx

上传人:b****5 文档编号:4967709 上传时间:2022-12-12 格式:DOCX 页数:28 大小:23.96KB
下载 相关 举报
数据结构课程设计迷宫算法的实现JAVA.docx_第1页
第1页 / 共28页
数据结构课程设计迷宫算法的实现JAVA.docx_第2页
第2页 / 共28页
数据结构课程设计迷宫算法的实现JAVA.docx_第3页
第3页 / 共28页
数据结构课程设计迷宫算法的实现JAVA.docx_第4页
第4页 / 共28页
数据结构课程设计迷宫算法的实现JAVA.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

数据结构课程设计迷宫算法的实现JAVA.docx

《数据结构课程设计迷宫算法的实现JAVA.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计迷宫算法的实现JAVA.docx(28页珍藏版)》请在冰豆网上搜索。

数据结构课程设计迷宫算法的实现JAVA.docx

数据结构课程设计迷宫算法的实现JAVA

数据结构课程设计

走迷宫

学号:

姓名:

日期:

6月16日

一、题目说明

.分别用以下算法实现。

并设计图形用户界面提供迷宫大小、入口及出口位置和初始状态等,演示走迷宫的过程和结果。

1.递归算法。

2.使用栈作为辅助结构。

3.使用队列作为辅助结构。

二、总体设计方案以及细节设计

为实现上述程序功能,主要使用的JAVAAWT和JAVASWING包

importjava.awt.*;

importjavax.swing.*;

importhartech.ui.*;

3.本程序包含四个模块:

1)主程序模块:

packagemg;

importjava.awt.*;

importjavax.swing.*;

/**

*

Title:

mazeGlobalclass

*

*

Description:

*

*

Date:

2006-08-31

*/

publicclassMain{

//_reset变量用于reset时用

staticintrows=12,cols=14;

staticintspeed_reset=50,speed=speed_reset;

staticJToggleButton[][]buttons;

staticWalkingwalking;

staticboolean[][]brick,brick_reset={

{true,true,true,true,true,false,true,true,true,true,

true,true,true,true,},

{true,false,false,false,true,false,true,true,true,true,

false,false,false,true,},

{true,false,true,false,true,false,false,false,false,true,

true,false,true,true,},

{true,false,true,false,true,false,true,true,true,false,

true,false,true,false,},

{true,true,true,false,false,false,true,false,true,false,

true,false,true,true,},

{true,false,true,true,true,true,true,false,true,false,

true,false,false,true,},

{true,false,true,true,true,true,true,false,true,false,

true,false,true,true,},

{true,false,false,false,false,false,true,true,true,false,

true,false,true,false,},

{true,false,true,true,true,false,false,false,false,false,

true,false,true,true,},

{true,false,true,false,true,false,true,true,true,true,

true,false,false,true,},

{true,false,true,false,true,false,true,false,false,false,

false,false,true,true,},

{true,true,true,false,true,true,true,true,true,true,

true,false,true,true,}

};

staticJFramejFrame;

staticUIui;

publicstaticvoidmain(String[]args){

//启动新线程,创建一个窗口

Runnable(){

publicvoidrun(){

//J.setLookAndFeel("Metal");

jFrame=newJFrame(

"isthereanywaytogo?

Maze---");//建立一个Swing窗体

jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//单击关闭图标后,程序退出并关闭

//add

Main.ui=newUI();

jFrame.add(ui,BorderLayout.CENTER);

jFrame.setSize(700,400);

//J.goCenter(jFrame);

Main.drawButtons();

Main.reset();

jFrame.setVisible(true);

}

});

}

//用于重置到软件开始

publicstaticvoidreset(){

if(walking!

=null){

;

}

clean();

brick=copyBoolean(brick_reset);

speed=speed_reset;

;

setBricks();

}

//用于清楚已标记上的数字

publicstaticvoidclean(){

if(walking!

=null){

;

}

for(inti=0;i

for(intj=0;j

buttons[i][j].setText("");//清除按钮的数字,设置名字为空

buttons[i][j].setForeground(null);

}

}

UI.jLabel_state.setText("Movenow?

");

}

//去掉全部砖

publicstaticvoidblank(){

if(walking!

=null){

;

}

for(inti=0;i

for(intj=0;j

buttons[i][j].setText("");

buttons[i][j].setForeground(null);

buttons[i][j].setSelected(true);

}

}

UI.jLabel_state.setText("Movenow?

");

}

//重画按钮图,根据rows、cols

publicstaticJPaneldrawButtons(){

buttons=newJToggleButton[rows][cols];

UI.jPanel_map=newJPanel(newGridLayout(rows,cols));

for(inti=0;i

for(intj=0;j

buttons[i][j]=newJToggleButton();

UI.jPanel_map.add(buttons[i][j]);

}

}

BorderLayout.CENTER);

;

returnUI.jPanel_map;

}

//根据brick[][]设置按钮障碍

publicstaticvoidsetBricks(){

for(inti=0;i

for(intj=0;j

buttons[i][j].setSelected(brick[i][j]);

}

}

}

//根据现在按钮情况设置brick[][]数组,用于move()内前面

publicstaticvoidreadBricks(){

for(inti=0;i

for(intj=0;j

brick[i][j]=buttons[i][j].isSelected();

}

}

}

//开始走

publicstaticvoidmove(){

if(walking!

=null){

;

}

clean();

readBricks();

//readToFile();

walking=newWalking(brick);

}

/**

//用于把绘制好地图数据写入文件

publicstaticvoidreadToFile(){

Stringout="";

for(inti=0;i

out+="{";

for(intj=0;j

if(brick[i][j]){

out+="true,";

}

else{

out+="false,";

}

}

out+="},\r\n";

}

"E:

/dest.txt");

}

*/

//复制二维数组

publicstaticboolean[][]copyBoolean(boolean[][]in){

introw=in.length,col=in[0].length;

boolean[][]out=newboolean[row][col];

for(inti=0;i

for(intj=0;j

out[i][j]=in[i][j];

}

}

returnout;

}

}

importjava.awt.*;

importjavax.swing.*;

importhartech.ui.*;

/**

*

Title:

mazeGlobalclass

*

*

Description:

*

*

Date:

2006-08-31

*/

publicclassMain{

//_reset变量用于reset时用

staticintrows=12,cols=14;

staticintspeed_reset=50,speed=speed_reset;

staticJToggleButton[][]buttons;

staticWalkingwalking;

staticboolean[][]brick,brick_reset={

{true,true,true,true,true,false,true,true,true,true,

true,true,true,true,},

{true,false,false,false,true,false,true,true,true,true,

false,false,false,true,},

{true,false,true,false,true,false,false,false,false,true,

true,false,true,true,},

{true,false,true,false,true,false,true,true,true,false,

true,false,true,false,},

{true,true,true,false,false,false,true,false,true,false,

true,false,true,true,},

{true,false,true,true,true,true,true,false,true,false,

true,false,false,true,},

{true,false,true,true,true,true,true,false,true,false,

true,false,true,true,},

{true,false,false,false,false,false,true,true,true,false,

true,false,true,false,},

{true,false,true,true,true,false,false,false,false,false,

true,false,true,true,},

{true,false,true,false,true,false,true,true,true,true,

true,false,false,true,},

{true,false,true,false,true,false,true,false,false,false,

false,false,true,true,},

{true,true,true,false,true,true,true,true,true,true,

true,false,true,true,}

};

staticJFramejFrame;

staticUIui;

publicstaticvoidmain(String[]args){

//启动新线程,创建一个窗口

Runnable(){

publicvoidrun(){

J.setLookAndFeel("Metal");

jFrame=newJFrame(

"isthereanywaytogo?

Maze---");//建立一个Swing窗体

jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//单击关闭图标后,程序退出并关闭

//add

Main.ui=newUI();

jFrame.add(ui,BorderLayout.CENTER);

jFrame.setSize(700,400);

J.goCenter(jFrame);

Main.drawButtons();

Main.reset();

jFrame.setVisible(true);

}

});

}

//用于重置到软件开始

publicstaticvoidreset(){

if(walking!

=null){

;

}

clean();

brick=copyBoolean(brick_reset);

speed=speed_reset;

;

setBricks();

}

//用于清楚已标记上的数字

publicstaticvoidclean(){

if(walking!

=null){

;

}

for(inti=0;i

for(intj=0;j

buttons[i][j].setText("");//清除按钮的数字,设置名字为空

buttons[i][j].setForeground(null);

}

}

UI.jLabel_state.setText("Movenow?

");

}

//去掉全部砖

publicstaticvoidblank(){

if(walking!

=null){

;

}

for(inti=0;i

for(intj=0;j

buttons[i][j].setText("");

buttons[i][j].setForeground(null);

buttons[i][j].setSelected(true);

}

}

UI.jLabel_state.setText("Movenow?

");

}

//重画按钮图,根据rows、cols

publicstaticJPaneldrawButtons(){

buttons=newJToggleButton[rows][cols];

UI.jPanel_map=newJPanel(newGridLayout(rows,cols));

for(inti=0;i

for(intj=0;j

buttons[i][j]=newJToggleButton();

UI.jPanel_map.add(buttons[i][j]);

}

}

BorderLayout.CENTER);

;

returnUI.jPanel_map;

}

//根据brick[][]设置按钮障碍

publicstaticvoidsetBricks(){

for(inti=0;i

for(intj=0;j

buttons[i][j].setSelected(brick[i][j]);

}

}

}

//根据现在按钮情况设置brick[][]数组,用于move()内前面

publicstaticvoidreadBricks(){

for(inti=0;i

for(intj=0;j

brick[i][j]=buttons[i][j].isSelected();

}

}

}

//开始走

publicstaticvoidmove(){

if(walking!

=null){

;

}

clean();

readBricks();

//readToFile();

walking=newWalking(brick);

}

/**

//用于把绘制好地图数据写入文件

publicstaticvoidreadToFile(){

Stringout="";

for(inti=0;i

out+="{";

for(intj=0;j

if(brick[i][j]){

out+="true,";

}

else{

out+="false,";

}

}

out+="},\r\n";

}

"E:

/dest.txt");

}

*/

//复制二维数组

publicstaticboolean[][]copyBoolean(boolean[][]in){

introw=in.length,col=in[0].length;

boolean[][]out=newboolean[row][col];

for(inti=0;i

for(intj=0;j

out[i][j]=in[i][j];

}

}

returnout;

}

}

2)UI模块——实现整个控制面板内组件的布局管理;

3)Walking模块——实现走迷宫的算法;

4)Applete模块——设置控制面板。

三、详细设计

1.UI模块

packagemg;

importjava.awt.*;

import;

importjavax.swing.*;

import;

/**

*

Title:

maze'sMainUI

*

*

Description:

*

*

Date:

2006-08-31

*/

publicclassUIextendsJPanel{

privatestaticfinallongserialVersionUID=008L;

staticJPaneljPanel_state,jPanel_map,jPanel_control;

staticJLabeljLabel_state;

staticJButtonjButton_move,jButton_clean,jButton_blank,jButton_reset;

staticJSliderjSlider;//添加面板,向面板里添

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1