走迷宫游戏设计.doc

上传人:xin****828 文档编号:6613865 上传时间:2020-02-29 格式:DOC 页数:12 大小:367KB
返回 下载 相关 举报
走迷宫游戏设计.doc_第1页
第1页 / 共12页
走迷宫游戏设计.doc_第2页
第2页 / 共12页
走迷宫游戏设计.doc_第3页
第3页 / 共12页
点击查看更多>>
资源描述
学号1408010106面向对象程序设计课程设计报告题目:“走迷宫”游戏制作专业:计算机科学与技术班级:计算机科学与技术14(1)姓名:陈晚露指导教师:樊郁徽成绩:计算机学院2016年 5 月 28 日日期改为2016年4月22日目录1、设计目的与要求11.1 设计目的11.2 设计要求11.3 实现功能11.4 界面设计12、开发平台和技术22.1 Java语言2 2.2 GreenFoot3 2.3 环境配置33、 模块具体实现和主要动画触发34、总结45、参考文献:46、附录:5“走迷宫”游戏制作1、设计目的与要求1.1 设计目的(1) 熟练掌握数据结构的基本算法,提高算法设计与分析能力; (2) 基本掌握面向对象设计基本思路和方法; (3)利用所学的基本知识和技能,解决简单的程序设计问题; (4)提高学生的科技论文写作能力;1.2 设计要求(1) 课程设计前必须根据课程设计题目认真准备实验源程序及调试时所需 的数据; (2)要求采用简明、严格的问题描述,设计求解算法;(3) 数据结构选用得当,程序结构合理; (4)程序简明易懂,多运用输出提示,程序运行正确;(5)对设计进行总结和讨论; 1.3 实现功能(1) 用户可以通过单击走迷宫小人图像,开始默认模式的走迷宫游戏。 当小人图像开始移动,计时开始。 (2) 当用户想重新开始游戏时,可以点击窗口下方的【重新开始】按钮, 重新开始游戏。 (3) 用户可以单击菜单栏“选择迷宫”菜单,选择不同模式的迷宫游戏。(4) 用户还可以选择菜单栏“选择墙和路的图像(JPG,GIF)”菜单,从 电脑中选取自己喜欢的图片作为墙和路的图像进行游戏。1.4 界面设计(1)编制一个求解迷宫通路的图形界面演示程序。 (2)设置一个可以任意设置障碍,删除障碍的迷宫。并求出迷宫的一条通路 (3)根据用户界面提示,可以使用事先设定的迷宫也可以使用自定义的迷宫。在着迷宫同路的过程中,需将查找的过程演示出来,并且在最后时,需要标记出查找成功的一条路径。图下方要有序号和标题 2、开发平台和技术2.1 Java语言java语言的流行除了因为它能够编制嵌入HTML文件中的Applet外,还在于Java语言本身的面向对象、简单、平台无关性、安全性、多线程等特点java语言的结构与编写方式,与c语言类似,因此学习Java语言,不仅要了解Java语言特点,同时还要有程序设计基础和面向对象的概念。java语言的特点如下:java语言的特点一:简单、高效Java语言的特点二:面向对象 Java语言的特点三:平台无关性Java语言的特点四:交互式特性 Java语言的特点五:多线程机制 Java语言的特点六:动态的内存管理机制 Java语言的特点七:安全性 2.2 GreenFootGreenfoot1是针对那些想让自己熟悉如何使用Java的人而设计的,是一个功能完整的开发环境,可以使用Java方便地编写游戏和进行模拟。它还可以被用来作为Java语言的教程,以及设计2D小游戏,可以实用于所有年龄段的用户,而不仅仅是初学者。2.3 环境配置 JDK ersion: 2.3.0(版本)及Greenfoot的安装3、 模块具体实现和主要动画触发在设计走迷宫小游戏时,编写了6个JAVA源文件:MazeWindow.java、 MazePoint.java、WallOrRoad.java、Maze.java、PersonInMaze.java、HandleMove.java1、PersonInMaze.java此类继承了JTextField类,当鼠标指向小人图像时会有提示信息“单击我,然后按键盘方向键”。获取走迷宫者的小人图像。 2、MazePoint.java 该类获取MazePoint对象的坐标值,并返回。 3、WallOrRoad.java 此类继承了JPanel类,JPanel 是一般轻量级容器,在此容器上定义了迷宫图形。 4、Maze.javaMaze类对JLayeredPane进行了继承,JLayeredPane位容器添加了深度,允许组件在需要时互相重叠。Integer对象指定容器中每个组件的深度,其中编号较高的组件位于其他组件之上。 5、HandleMove.java HandleMove类不仅对JPanel类进行了继承,还改写了keyPressed(KeyEvent e)和actionPerformed(ActionEvent e),实现了KeyListener和ActionListener两个接口,对鼠标和键盘添加了监听器,使鼠标和键盘可以完成相应操作。 6. MazeWindow.java 此处6点的序号修改为(1).,请依次修改MazeWindow是本游戏程序的主类,在此类中对菜单和菜单项进行了设计。 4、总结“走迷宫”游戏的基本功能都已实现,在此程序中各类间反复的关联和依赖关系让类与类之间的关系复杂,稍有不明白程序就无法继续下去。但是该游戏仅仅对几个简单的迷宫游戏进行了设计,没有实现平常的通关模式的设计,这是此游戏应该改进的地方。 通过这次“走迷宫”游戏的设计让我明白了理论与实践相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践结合起来,从理论中得出结论,才能真正的提高自己的水命,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说是困难重重,并且还发现了自己的很多不足之处,对以前所学过的知识理解得不够深刻、透彻,掌握的不够牢固。同时在这次的设计中也有小小的体验了一下做项目的感受。 我完成了这次JAVA课程设计,不过这只是我学习路上的驿站。我相信我在未来的学习中会记住从本次课程设计中所学到的东西,并将它用到未来的学习中去。5、参考文献:1王元珍,韩宗芬.IBM-PC宏汇编语言程序设计M.第二版.华中理工大学出版社,2005此文献与本课程设计无关,建议删除2叶核亚.数据结构M.Java版第2版.北京:电子工业出版社,20093耿祥义,张跃平.Java基础教程M.第2版.北京:清华大学出版社,20094刘小晶.数据结构M.Java语言描述.北京:清华大学出版社,20096、附录:publicclassPersonInMazeextendsJTextFieldMazePointpoint;Toolkittool;PersonInMaze()tool=getToolkit();/获得工具包setEditable(false);/不可见setBorder(null);/无边框setOpaque(false);/非透明的setToolTipText(单击我,然后按键盘方向键); public void setAtMazePoint(MazePoint p) point=p; public MazePoint getAtMazePoint() return point; public void paintComponent(Graphics g) super.paintComponent(g); int w=getBounds().width; int h=getBounds().height; Image image=tool.getImage(person.gif); /获得image图像 g.drawImage(image,0,0,w,h,this);/绘制image图像。 public class MazePoint int x,y; public MazePoint(int x,int y) this.x=x; this.y=y; public int getX() return x; public int getY() return y; public boolean equals(MazePoint p) if(p.getX()=this.getX()&p.getY()=this.getY() /*如果MazePoint的对象p的x、y值和上面返回的x、y值相同,则返回true,否则返回false*/ return true; else return false; public class WallOrRoad extends JPanel boolean isRoad,isWall,isEnter,isOut; MazePoint point; File wallImage,roadImage; Toolkit tool; WallOrRoad() tool=getToolkit(); public void setIsEnter(boolean boo) isEnter=boo; if(isEnter=true) add(new JLabel(入口);/定义迷宫的入口 Public boolean getIsEnter() return isEnter; public void setIsOut(boolean boo) isOut=boo; if(isOut=true) add(new JLabel(出口);/定义迷宫的出口 public boolean getIsOut() return isOut; public void setIsRoad(boolean boo) isRoad=boo; if(isRoad=true) setBorder(null);/置此组件的边框,无 public boolean getIsRoad() return isRoad; public void setIsWall(boolean boo) isWall=boo; if(isWall=true) setBorder(new SoftBevelBorder(BevelBorder.RAISED); /* publicMaze()setLayout(null);wallImage=newFile(wall.jpg);roadImage=newFile(road.jpg);person=newPersonInMaze();handleMove=newHandleMove();handleMove.initSpendTime();person.addKeyListener(handleMove);setLayer(person,JLayeredPane.DRAG_LAYER);public class MazeWindow extends JFrame implements ActionListenerMaze maze; JMenuBar bar;/声明菜单条对象 JMenu menuChoice,menuImage;/声明菜单对象 JMenuItem wallImage,roadImage,defaultImage;/声明菜单项对象 File mazeFile,wallImageFile,roadImageFile; JButton renew;/声明按钮对象 MazeWindow() wallImageFile=new File(wall.jpg); roadImageFile=new File(road.jpg); bar=new JMenuBar();/创建菜单条对象 menuChoice=new JMenu(选择迷宫); File dir=new File(.); File file=dir.listFiles(new FilenameFilter() public boolean accept(File dir,String name) return name.endsWith(maze); ); for(int i=0;i file.length;i+) JMenuItem item=new JMenuItem(filei.getName(); item.addActionListener(this); menuChoice.add(item); mazeFile=new File(file0.getName(); init(); menuImage=new JMenu(选择墙和路的图像(JPG,GIF);/创建菜单对象 wallImage=new JMenuItem(墙的图像);/创建菜单项对象 roadImage=new JMenuItem(路的图像); defaultImage=new JMenuItem(墙和路的默认图像); menuImage.add(wallImage);/菜单项添加到菜单上, menuImage.add(roadImage); menuImage.add(defaultImage); bar.add(menuChoice); bar.add(menuImage);/菜单添加到菜单条上 setJMenuBar(bar); wallImage.addActionListener(this);/为菜单项添加监听器 roadImage.addActionListener(this); defaultImage.addActionListener(this); renew=new JButton(重新开始); renew.addActionListener(this);/为“重新开始”按钮添加监听器 add(maze,BorderLayout.CENTER);/默认布局, add(renew,BorderLayout.SOUTH); setVisible(true); setBounds(60,60,510,480); validate(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /*EXIT_ON_CLOSE:退出应用程序后的默认窗口关闭操作*/
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 中学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!