《走迷宫游戏的JAVA实现(12页).doc》由会员分享,可在线阅读,更多相关《走迷宫游戏的JAVA实现(12页).doc(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-走迷宫游戏的JAVA实现-第 12 页目录内容摘要2Abstract2第1章绪论3第2章走迷宫游戏的描述3游戏规则描述3游戏设计的目的3游戏的可行性论证4第3章走迷宫游戏的分析与设计4游戏的设计4功能设计4类的设计4类的UML图14第4章总结15致谢词15参考文献16内容摘要游戏发展至今已经有30多年历史,在这个短暂的时期里,随着硬件水平的提高,游戏开发新技术层出不穷,经典游戏比比皆是。走迷宫游戏,是指在一个区域内由道路和墙面形成迷宫,通过键盘方向键控制走迷宫者的图像,走到指定出口则游戏成功。游戏期间记录游戏时间。本游戏采用JAVA语言开发,以MyEclipse为开发平台。游戏主界面是基于G
2、UI(图形用户界面)的开发,使得游戏界面简单清晰。并调用了其中的一些函数,完成了事件的触发功能。关键词:走迷宫、小游戏、JAVAAbstractThe game now has 30 years of history, in this short period of time, raising the level of hardware, game developers of new technology after another classic game abound.Maze game, maze within a region formed by the roads and walls
3、, through the keyboard arrow keys to control the maze of images, went to the designated export the game. The game recorded during the time of the game. This game uses the JAVA language development platform for developers to MyEclipse. The main game interface surface is based on the development of th
4、e GUI (Graphical User Interface) makes the game interface is simple and clear. And call some of these functions, the event trigger function. Key words:MazeGameJAVA第1章绪论游戏产业作为现代电脑电子技术的产物,正在以其独特的魅力在全世界的娱乐领域占据主流地位,我们在成人广大娱乐网民的选择空间狭小的同时,也必须明确的一点就是游戏本身所具有的强大的吸引力。游戏的吸引力主要在于,它在让玩家打发时间的同时,可以让人在紧张的工作之余带来最大程度
5、的放松,也可以增进人们之间的交流、沟通,通过游戏还可以认识更多的朋友。现在小游戏、网页游戏越来越受网民欢迎,除了玩的方法简单外(不像其他游戏还需要注册下载繁琐过程),很多游戏不乏经典。走迷宫游戏也是经典的小游戏之一。游戏“走迷宫”顾名思义就是从迷宫中走出去,走迷宫在网上基本是用在小游戏中。第2章走迷宫游戏的描述近年来,Java作为一种新的编程语言。以其简单性、可移植性和平台无关性等优点,得到广泛的应用,特别是Java与万维网的完美结合,使其成为网络编程和嵌入式编程领域的首选编程语言。2.1游戏规则描述1、 概要:玩家可以控制迷宫中的小人在迷宫中行走。2、 操作:开始用鼠标单击迷宫中的小人,然后
6、通过键盘上的方向键控制小人行走方向。3、 胜利条件:迷宫中的小人走到指定出口,游戏胜利。2.2游戏设计的目的通过本次毕业设计,让我们掌握如何制作一个游戏软件,以及制作游戏软件的整个流程,制作游戏软件的步骤,让学生熟悉项目开发的完整过程,为即将到来的就业工作打下基础。另外也通过本次设计将三年来所学的专业知识和其他方面的知识融入到实际应用中,在实际运用中学习和掌握Java程序开发的全过程,进一步熟悉掌握Java程序设计语言的基础内容、基本技能和方法,同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。1、 主要是能通过这次
7、开发“走迷宫”小游戏,学会Java程序开发的环境搭建与配置,并提高自己Java程序设计编程的实际能力。2、 进一步熟悉掌握Java程序设计的基础内容,如用户图形界面设计(GUI)等。3、 大体了解怎样用Java来编写小游戏,增强我们实践能力和创新精神的综合培养。2.3游戏的可行性论证“走迷宫”游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎。我们通过所学的JAVA,利用MyEclipse设计一个操作简单、界面美观、功能齐全的“走迷宫”游戏。通过本游戏的开发,达到学习Java技术和熟悉软件开发流程的目的。这个游戏是用图形界面实现的,通过编译解释后,出现一个图形界面。界面上方有一行菜单栏,点
8、击菜单栏上的按钮,出现下拉菜单,可选择不同模式的迷宫,游戏界面是由若干个小方格组成的,每个小方格有一个图标,形成迷宫。第3章走迷宫游戏的分析与设计3.1游戏的设计3.1.1功能设计1. 用户可以通过单击走迷宫小人图像,开始默认模式的走迷宫游戏。当小人图像开始移动,计时开始。2. 当用户想重新开始游戏时,可以点击窗口下方的【重新开始】按钮,重新开始游戏。3. 用户可以单击菜单栏“选择迷宫”菜单,选择不同模式的迷宫游戏。4. 用户还可以选择菜单栏“选择墙和路的图像(JPG,GIF)”菜单,从电脑中选取自己喜欢的图片作为墙和路的图像进行游戏。3.1.2类的设计此类继承了JTextField类,当鼠标
9、指向小人图像时会有提示信息“单击我,然后按键盘方向键”。获取走迷宫者的小人图像。public class PersonInMaze extends JTextField MazePoint point; Toolkit tool; PersonInMaze() tool=getToolkit();/获得工具包 setEditable(false);/不可见 setBorder(null);/无边框 setOpaque(false);/非透明的 setToolTipText(单击我,然后按键盘方向键);/提示信息,如图3-1所示。 public void setAtMazePoint(MazeP
10、oint 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图像。图3-1该类获取MazePoint对象的坐标值,并返回
11、。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 fa
12、lse; 此类继承了JPanel类,JPanel 是一般轻量级容器,在此容器上定义了迷宫图形,如图3-2。图3-2public 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 JLab
13、el(入口);/定义迷宫的入口 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 getIsRo
14、ad() return isRoad; public void setIsWall(boolean boo) isWall=boo; if(isWall=true) setBorder(new SoftBevelBorder(BevelBorder.RAISED);/* SoftBevelBorder是实现某种斜面的类,这种斜面要么凸出要么凹入且拐角圆滑,BevelBorder该类实现简单的双线斜面边框,RAISED:凸出斜面类型。*/ catch(Exception exp)Maze类对JLayeredPane进行了继承,JLayeredPane 为 容器添加了深度,允许组件在需要时互相重叠
15、。Integer 对象指定容器中每个组件的深度,其中编号较高的组件位于其他组件之上。public Maze() setLayout(null); wallImage=new File(wall.jpg); roadImage=new File(road.jpg); person=new PersonInMaze(); handleMove=new HandleMove(); handleMove.initSpendTime(); person.addKeyListener(handleMove); setLayer(person,JLayeredPane.DRAG_LAYER);DRAG_LA
16、YER:拖动一个组件时,将该组件重分配到拖动层可确保将其定位在容器中的其他所有组件之上。完成拖动后,可将该组件重分配到其正常层。这样可确保person图像在走到roadImage图像时可覆盖roadImage图像,在走过后roadImage显示,如图3-3、3-4。图3-3图3-4public void setMazeFile(File f) mazeFile=f; char a; RandomAccessFile in=null; String lineWord=null; try in=new RandomAccessFile(mazeFile,r);/创建RandomAccessFile
17、类的只读对象/*RandomAccessFile是用来访问那些保存数据记录的文件的,这样你就可以用seek( )方法来访问记录,并进行读写了*/ long length=in.length(); long position=0; in.seek(position); while(position=n) n=str.length(); position=in.getFilePointer(); m+; a=new charmn; position=0; in.seek(position); m=0; while(positionlength) String str=in.readLine();
18、am=str.toCharArray(); position=in.getFilePointer(); m+; in.close(); wallOrRoad=new WallOrRoadmn; catch(IOException exp) JButton mess=new JButton(无效的迷宫文件); add(mess); mess.setBounds(30,30,100,100); mess.setFont(new Font(宋体,Font.BOLD,30); System.out.println(exp+mess);这个类通过数组和循环对迷宫进行了设置。HandleMove类不仅对J
19、Panel类进行了继承,还改写了keyPressed(KeyEvent e)和actionPerformed(ActionEvent e),实现了KeyListener和ActionListener两个接口,对鼠标和键盘添加了监听器,使鼠标和键盘可以完成相应操作。MazeWindow是本游戏程序的主类,在此类中对菜单和菜单项进行了设计。public class MazeWindow extends JFrame implements ActionListener Maze maze; JMenuBar bar;/声明菜单条对象 JMenu menuChoice,menuImage;/声明菜单对
20、象 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.listFile
21、s(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,G
22、IF);/创建菜单对象 wallImage=new JMenuItem(墙的图像);/创建菜单项对象 roadImage=new JMenuItem(路的图像); defaultImage=new JMenuItem(墙和路的默认图像); menuImage.add(wallImage);/菜单项添加到菜单上,如图3-5 menuImage.add(roadImage); menuImage.add(defaultImage); bar.add(menuChoice); bar.add(menuImage);/菜单添加到菜单条上,如图3-6 setJMenuBar(bar); wallImag
23、e.addActionListener(this);/为菜单项添加监听器 roadImage.addActionListener(this); defaultImage.addActionListener(this); renew=new JButton(重新开始); renew.addActionListener(this);/为“重新开始”按钮添加监听器 add(maze,BorderLayout.CENTER);/默认布局,如图3-7 add(renew,BorderLayout.SOUTH); setVisible(true); setBounds(60,60,510,480); va
24、lidate(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /*EXIT_ON_CLOSE:退出应用程序后的默认窗口关闭操作*/图3-5图3-6图3-73.2类的UML图第4章总结“走迷宫”游戏的基本功能都已实现,在此程序中各类间反复的关联和依赖关系让类与类之间的关系复杂,稍有不明白程序就无法继续下去。但是该游戏仅仅对几个简单的迷宫游戏进行了设计,没有实现平常的通关模式的设计,这是此游戏应该改进的地方。通过这次“走迷宫”游戏的设计让我明白了理论与实践相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践结合起来,从理论中得出
25、结论,才能真正的提高自己的水命,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说是困难重重,并且还发现了自己的很多不足之处,对以前所学过的知识理解得不够深刻、透彻,掌握的不够牢固。同时在这次的设计中也有小小的体验了一下做项目的感受。我完成了这次JAVA课程设计,不过这只是我学习路上的驿站。我相信我在未来的学习中会记住从本次课程设计中所学到的东西,并将它用到未来的学习中去。致谢词本课题在选题及研究过程中得到仲老师的悉心指导。仲老师多次询问研究进程,并为我指点迷津,帮助我开拓研究思路,精心点拨、热忱鼓励。仲老师一丝不苟的作风,严谨求实的态度,踏踏实实的精神,不仅授我以文,而且教我做人,虽历时三载,却给以终生受益无穷之道。对仲老师的感激之情是无法用言语表达的。感谢仲老师、赵老师、刘老师等对我的教育培养。他们细心指导我的学习与研究,在此,我要向诸位老师深深地鞠上一躬。数学科学学院各位领导和老师为我提供了良好的学习和研究条件,谨向各位同仁表示诚挚的敬意和谢忱。 参考文献【1】耿祥义、张跃平.Java面向对象程序设计M清华大学出版社,2010年1月第1版
限制150内