北京邮电大学毕业设计毕业论文内容摘要:

所以深度优先算法适用于较为简单的迷宫的生成。 相较而言,普里姆算法比较复杂。 其生成的迷宫岔路较多,生成的迷宫看起来很自然,但是想要找出一条通路是比较有难度的。 所以相比,普里姆算法适用于难度较大的迷宫生成算法。 相关示意图如 图 43。 北京邮电大学毕业设计 8 图 43 深普里姆算法生成迷宫 北京邮电大学毕业设计 9 5 详细设计 详细设计阶段的根本目标是确定应该怎样具体实现 所 要求的系统,也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以吧这个描述直接翻译成某种程序设计语言书写的程序。 详细设计的结果基本上决定了最终 程序设计 代码的质量。 详细设计的目标你仅仅是逻辑上正确地实现每个模块的功能,更重要的是设计出的处理过程尽可能简明易懂。 结构程序设计技术是实现上述目标的关键技术,因此是详细设计的逻辑基础。 核心包的设计 本游戏主要由游戏界面和游戏后台两大部分组成,其中 的基本类包括 如下 :AbstractMap,DFSMap,MainController,MainFrame,PathMap,Point,SetFrame,ShowPane,Test 工程图如图 51。 图 51 工程图 MainFrame 类的设计与实现 本类主要是主界面的显示设计。 主界面主要由 JMenuBar、 Container、 JPanel 三个容器组成。 其中 JMenuBar 主要放置菜单选项“开始”和“设置”, Container 是用来显示地图, JPanel 是放置“开始游戏”、“显示路线”及上下左右四个方向键。 之后为菜单项设置监听器以及为上下左右四个方向键设置监听。 MainFrame类的主要代码如下: @SuppressWarnings(serial) class EnterKeyListener implements KeyListener { @Override public void keyTyped(KeyEvent e) { // TODO Autogenerated method stub int keyCode = ()。 switch (keyCode) { case : 北京邮电大学毕业设计 10 (1)。 break。 case : (2)。 break。 case : (3)。 break。 case : (4)。 break。 } } class GoListener implements ActionListener// 方向监听 { int i。 GoListener(int i) { = i。 } @Override public void actionPerformed(ActionEvent e) { // TODO Autogenerated method stub (i)。 ()。 } } class ItemListener implements ActionListener// 菜单项监听器 { MainFrame mainFrame。 public ItemListener(MainFrame mainFrame) { // TODO Autogenerated constructor stub = mainFrame。 } @Override public void actionPerformed(ActionEvent e) { // TODO Autogenerated method stub if (() == item11) { (0)。 } else if (() == item21) { new SetFrame(mainFrame)。 } } } 北京邮电大学毕业设计 11 public static void main(String[] args) { new MainFrame()。 } } 主界面如图 52。 图 52 主界面 SetFrame 类的设计与实现 SetFrame 主要实现菜单中“设置”选项的设计。 在设置选项中可以选择生成迷宫的算法,各为深度优先算法或者普里姆算法。 还可以对游戏的难度进行设置,分别为“简单”、“中等”、“复杂”。 设置其默认选项为“深度优先算法”和“中等”难度。 设置完毕之后,按确认键开始游戏。 对不同的游戏难度进行相应,即不同难度的游戏设置地图的边界大小的不同。 通过变换地图长宽的值近而改变地图的难易程度。 当玩家不想在继续游戏时 ,可选择设置栏上的 “开始”选项,继续选择“退出”,则可以退出游戏。 SetFrame 类的主要代码如下: private void setRadio() { int m = ()。 if (m == 20) (true)。 else if (m == 50) (true)。 else if (m == 35) 北京邮电大学毕业设计 12 (true)。 } private void setMapRadio() { int w = ()。 if (w == 0) (true)。 else if (w == 1) (true)。 else if (w == 2) (true)。 } class SureListener implements ActionListener { SetFrame s。 public SureListener(SetFrame setFrame) { // TODO Autogenerated constructor stub s = setFrame。 } @Override // 不同难度的响应 public void actionPerformed(ActionEvent e) { // TODO Autogenerated method stub if (() == okBut) { if (()) { (20)。 (20)。 } if (()) (0)。 else if (()) (1)。 else if (()) (2)。 } else if (() == exitBut)。 // (false)。 (true)。 (false)。 } } } 设置界面如图 53。 北京邮电大学毕业设计 13 图 53 设置界面图 ShowPane 类的设计与实现 首先将迷宫所有格子设置成背景黑色,绘制迷宫时,所有迷宫的墙均为绿色,若寻找出的路径中含有某块格子,则将此块格子设置成红色。 若不依赖游戏寻找出的路径,而是玩家自己寻找路径,当玩家走到迷宫的出口时,则此时弹出对话框“恭喜你,到迷宫的尽头。 ” ShowPane 类主要代码如下: @SuppressWarnings(serial) public class ShowPane extends JPanel { boolean a[][]。 private static final int SX = 30。 private static final int SY = 30。 private StackPoint stack。 ShowPane(boolean a[][]) { = a。 stack = new StackPoint()。 ()。 (new Point(1, 0))。 repaint()。 } ShowPane() { a = new boolean[1][1]。 北京邮电大学毕业设计 14 stack = new StackPoint()。 ()。 } @Override protected void paintComponent(Graphics g) { // TODO Autogenerated method stub ()。 (0, 0, (), ())。 ()。 for (int i = 0。 i。 i++) { for (int j = 0。 j a[0].length。 j++) { if (a[i][j] == false) { (SX + i * 8, SY + j * 8, 8, 8)。 } else if (isHas(i, j)) { ()。 (SX + i * 8, SY + j * 8, 8, 8)。 ()。 } } } } public void redraw(boolean a[][])// 重绘界面 { = a。 ()。 (new Point(1, 0))。 repaint()。 } public void play(int keyvalue)// 走迷宫(玩家自玩) { if (() == 1) { Point p = ()。 int x = ()。 int y = ()。 if (x == 1 amp。 amp。 y == 0) { if (keyvalue == 2) { ()。 (new Point(x, y + 1))。 } } else if (x == 2 amp。 amp。 y == a[0].length 1) { (this, 恭喜你,到迷宫的尽头。 )。 } else { if (keyvalue == 1 amp。 amp。 a[x][y 1] == true) { 北京邮电大学毕业设计 15 ()。 (new Point(x, y 1))。 } else if (keyvalue == 2 amp。 amp。 a[x][y + 1] == true) { ()。 (new Point(x, y + 1))。 } else if (keyvalue == 3 amp。 amp。 a[x 1][y] == true) { ()。 (new Point(x 1, y))。 } else if (keyvalue == 4 amp。 amp。 a[x + 1][y] == true) { ()。 (new Point(x + 1, y))。 } } } repaint()。 } 相关示意图如图 54和图 55。 图 54 迷宫路线显示图 北京邮电大学毕业设计 16 图 55 玩家找到出口时的相关提示 MainController 类的设计与实现 本类主要负责“绘制地图”、“显示路径”、“隐藏路径”单个按钮的控制。 通过为按钮增加监听,使按键被得到相应的控制。 本游戏中,每一种游戏的难度可以绘制若干种地图,但每种显示的地图只有一次显示路径的机会。 MainController 类的主要代码如下: package maze4。 public class MainController { class ButtonListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { // TODO Autogenera。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。