您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 汽车理论 > 数据结构课程设计迷宫算法的实现-JAVA
数据结构课程设计系别电子信息系专业计算机科学与技术班级学号姓名指导教师丁顺利成绩年月日一、需求分析1.编制一个求解迷宫通路的图形界面演示程序2.设置一个可以任意设置障碍,删除障碍的迷宫。并求出迷宫的一条通路3.根据用户界面提示,可以使用事先设定的迷宫也可以使用自定义的迷宫。在着迷宫同路的过程中,需将查找的过程演示出来,并且在最后时,需要标记出查找成功的一条路径。4.本程序只求出一条成功的通路,因受图形界面限制,不能保存或载入测试文件(此功能可在Maze_text中实现)。5)当路径掩盖起点或终点时,消息显示“Isthereanywaytogo?tellme”;找到路径时,屏幕显示足迹,并在消息框出现,“bingofindit,soeasy”二、概要设计为实现上述程序功能,主要使用的JAVAAWT和JAVASWING包importjava.awt.*;importjavax.swing.*;importhartech.ui.*;3.本程序包含四个模块:1)主程序模块:importjava.awt.*;importjavax.swing.*;importhartech.ui.*;/***pTitle:mazeGlobalclass/p**pDescription:/p**pDate:2006-08-31/p*/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){//启动新线程,创建一个窗口javax.swing.SwingUtilities.invokeLater(newRunnable(){publicvoidrun(){J.setLookAndFeel(Metal);jFrame=newJFrame(isthereanywaytogo?Maze---);//建立一个Swing窗体jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//单击关闭图标后,程序退出并关闭//addMain.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){walking.timer.stop();}clean();brick=copyBoolean(brick_reset);speed=speed_reset;UI.jSlider.setValue(speed);setBricks();}//用于清楚已标记上的数字publicstaticvoidclean(){if(walking!=null){walking.timer.stop();}for(inti=0;irows;i++){for(intj=0;jcols;j++){buttons[i][j].setText();//清除按钮的数字,设置名字为空buttons[i][j].setForeground(null);}}UI.jLabel_state.setText(Movenow?);}//去掉全部砖publicstaticvoidblank(){if(walking!=null){walking.timer.stop();}for(inti=0;irows;i++){for(intj=0;jcols;j++){buttons[i][j].setText();buttons[i][j].setForeground(null);buttons[i][j].setSelected(true);}}UI.jLabel_state.setText(Movenow?);}//重画按钮图,根据rows、colspublicstaticJPaneldrawButtons(){buttons=newJToggleButton[rows][cols];UI.jPanel_map=newJPanel(newGridLayout(rows,cols));for(inti=0;irows;i++){for(intj=0;jcols;j++){buttons[i][j]=newJToggleButton();UI.jPanel_map.add(buttons[i][j]);}}Main.ui.add(UI.jPanel_map,BorderLayout.CENTER);Main.ui.setVisible(true);returnUI.jPanel_map;}//根据brick[][]设置按钮障碍publicstaticvoidsetBricks(){for(inti=0;irows;i++){for(intj=0;jcols;j++){buttons[i][j].setSelected(brick[i][j]);}}}//根据现在按钮情况设置brick[][]数组,用于move()内前面publicstaticvoidreadBricks(){for(inti=0;irows;i++){for(intj=0;jcols;j++){brick[i][j]=buttons[i][j].isSelected();}}}//开始走publicstaticvoidmove(){if(walking!=null){walking.timer.stop();}clean();readBricks();//readToFile();walking=newWalking(brick);}/**//用于把绘制好地图数据写入文件publicstaticvoidreadToFile(){Stringout=;for(inti=0;irows;i++){out+={;for(intj=0;jcols;j++){if(brick[i][j]){out+=true,;}else{out+=false,;}}out+=},\r\n;}hartech.JFile.stringToFile(out,E:/dest.txt);}*///复制二维数组publicstaticboolean[][]copyBoolean(boolean[][]in){introw=in.length,col=in[0].length;boolean[][]out=newboolean[row][col];for(inti=0;irow;i++){for(intj=0;jcol;j++){out[i][j]=in[i][j];}}returnout;}}2)UI模块——实现整个控制面板内组件的布局管理;3)Walking模块——实现走迷宫的算法;4)Applete模块——设置控制面板。三、详细设计1.UI模块packagehartech.kids.maze;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjavax.swing.event.*;/***pTitle:maze'sMainUI/p**pDescription:/p**pDate:2006-08-31/p*/publicclassUIextendsJPanel{privatestaticfinallongserialVersionUID=5924032800440919028L;staticJPaneljPanel_state,jPanel_map,jPanel_control;staticJLabeljLabel_state;staticJButtonjButton_move,jButton_clean,jButton_blank,jButton_reset;staticJSliderjSlider;//添加面板,向面板里添加各个组件publicUI(){super(newBorderLayout());//addadd(jPanel_control(),BorderLayout.SOUTH);//布局管理器,从左到右设置按钮}publicstaticJPaneljPanel_control(){jLabel_state=newJLabel(Movenow?);jLabel_state.setHorizontalTextPosition(JLabel.LEFT);//将Movenow标签添加//在面板的左下角jSlider=newJSlider(JSlider.HORIZONTAL,5,400,Main.speed);//建立一个水平方向的滑竿jSlider.setPreferredSize(newDimension(5,5));//滑杆的大小jSlider.setBackground(newColor(208,220,255));jSlider.addChangeListener(newChangeListe
本文标题:数据结构课程设计迷宫算法的实现-JAVA
链接地址:https://www.777doc.com/doc-5238195 .html