基于Java的走迷宫游戏软件设计(共17页)_第1页
基于Java的走迷宫游戏软件设计(共17页)_第2页
基于Java的走迷宫游戏软件设计(共17页)_第3页
基于Java的走迷宫游戏软件设计(共17页)_第4页
基于Java的走迷宫游戏软件设计(共17页)_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、沈阳理工大学课程设计报告成 绩 评 定 表学生姓名班级学号 专 业电子信息工程课程设计题目基于Java的走迷宫游戏软件设计评语组长签字:成绩日期 2013 年 月 日课程设计任务书学 院信息学院专 业电子信息工程学生姓名班级学号 课程设计题目基于Java的走迷宫游戏软件设计实践教学要求与任务:采用java技术设计走迷宫游戏软件,游戏的结果是让走迷宫者从迷宫的入口处走到迷宫的出口处。设计要求如下:程序根据文本文件生成迷宫,这些文本文件称作迷宫文件。迷宫文件的扩展名为.maze,其中的文本内容有着特殊的组织结构:任意两行文本所含有的自符个数必须相同,而且字符只可以是“*”、“#”、“0”或“1”。

2、迷宫文件中的“*”和“#”分别代表迷宫的入口和出口,“0”和“1”分别代表迷宫中的“路”和“墙”。/简单迷宫.maze文件1*111111111000100001110110111110000000011111111#11用户可以通过界面上提供的惨淡选项,选择“迷宫文件”来生成对应的“迷宫”。用户可以通过界面上提供的菜单选项,选择迷宫中的“墙”和“路”的外观图像。用户可以通过随时单击界面上提供的按钮,重新开始走“迷宫”。 工作计划与进度安排: 第18周:布置课程设计任务,查阅资料,分组设计,程序调试。 第19周:程序调试,编写课程设计报告,验收,答辩。指导教师: 2013年 6月20日专业负责

3、人: 2013年 6月20日学院教学副院长: 2013年 6月20日目录(ml)课设软件(run jin)的主要功能.1游戏规则描述(mio sh)1游戏设计的目的1游戏(yux)的可行性论证1类总体设计.12.1类组合(zh)关系图.22.2主类.22.3其它(qt)类.5类的UML图.11软件运行结果.12结论.12参考文献.13 课设软件(run jin)的主要功能近年来,Java作为(zuwi)一种新的编程语言。以其简单性、可移植性和平台无关性等优点,得到广泛的应用,特别是Java与万维网的完美结合,使其成为网络编程和嵌入式编程领域(ln y)的首选编程语言。1.1游戏规则描述概要:玩

4、家可以控制迷宫中的小人在迷宫中行走。操作:开始用鼠标单击迷宫中的小人,然后通过键盘上的方向键控制小人行走方向。胜利条件:迷宫中的小人走到指定出口,游戏胜利。1.2游戏设计的目的通过本次毕业设计,让我们掌握如何制作一个游戏软件,以及制作游戏软件的整个流程,制作游戏软件的步骤,让学生熟悉项目开发的完整过程,为即将到来的就业工作打下基础。另外也通过本次设计将三年来所学的专业知识和其他方面的知识融入到实际应用中,在实际运用中学习和掌握Java程序开发的全过程,进一步熟悉掌握Java程序设计语言的基础内容、基本技能和方法,同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作

5、与测试、设计过程的观察、理解和归纳能力的提高。主要是能通过这次开发“走迷宫”小游戏,学会Java程序开发的环境搭建与配置,并提高自己Java程序设计编程的实际能力。进一步熟悉掌握Java程序设计的基础内容,如用户图形界面设计(GUI)等。大体了解怎样用Java来编写小游戏,增强我们实践能力和创新精神的综合培养。1.3游戏的可行性论证“走迷宫”游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎。我们通过所学的JAVA,利用MyEclipse设计一个操作简单、界面美观、功能齐全的“走迷宫”游戏。通过本游戏的开发,达到学习Java技术和熟悉软件开发流程的目的。这个游戏是用图形界面实现的,通过编译

6、解释后,出现一个图形界面。界面上方有一行菜单栏,点击菜单栏上的按钮,出现下拉菜单,可选择不同模式的迷宫,游戏界面是由若干个小方格组成的,每个小方格有一个图标,形成迷宫。类总体设计在设计(shj)走迷宫小游戏时,编写了6个JAVA源文件:MazeWindow.java、MazePoint.java、WallOrRoad.java、Maze.java、PersonInMaze.java、HandleMove.java 2.1类组合(zh)关系图MazeWindow JMenuFileMazePersonlnMazeePersonlnMazeMazePointWallORroadHandleMove

7、 如图2-12.2主类MazeWindow.java(主类)MazeWindow是本游戏程序(chngx)的主类,在此类中对菜单和菜单项进行了设计。核心代码:public class MazeWindow extends JFrame implements ActionListener Maze maze; JMenuBar bar;/声明菜单条对象 JMenu menuChoice,menuImage;/声明菜单对象 JMenuItem wallImage,roadImage,defaultImage;/声明菜单项对象 File mazeFile,wallImageFile,roadImag

8、eFile; JButton renew;/声明按钮对象 MazeWindow() wallImageFile=new File(wall.jpg); roadImageFile=new File(road.jpg); bar=new JMenuBar();/创建菜单(ci dn)条对象 menuChoice=new JMenu(选择(xunz)迷宫); File dir=new File(.); File file=dir.listFiles(new FilenameFilter() public boolean accept(File dir,String name) return nam

9、e.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);/创建菜单(ci dn)对象 wallImage=new JMenuItem(墙的图像);/创建菜单项对象 roadImage=new JM

10、enuItem(路的图像); defaultImage=new JMenuItem(墙和路的默认图像); menuImage.add(wallImage);/菜单项添加到菜单上,如图3-5 menuImage.add(roadImage); menuImage.add(defaultImage); bar.add(menuChoice); bar.add(menuImage);/菜单添加到菜单条上,如图3-6 setJMenuBar(bar); wallImage.addActionListener(this);/为菜单项添加监听器 roadImage.addActionListener(th

11、is); defaultImage.addActionListener(this); renew=new JButton(重新开始); renew.addActionListener(this);/为“重新开始”按钮添加监听器 add(maze,BorderLayout.CENTER);/默认(mrn)布局,如图3-7 add(renew,BorderLayout.SOUTH); setVisible(true); setBounds(60,60,510,480); validate(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /*EX

12、IT_ON_CLOSE:退出应用程序后的默认(mrn)窗口关闭操作*/ 如图2-2 如图2-3 如图2-42.3其它(qt)类 2.3.1 PersonInMaze.java此类继承(jchng)了JTextField类,当鼠标指向小人图像时会(sh hu)有提示信息“单击我,然后按键盘方向键”。获取走迷宫者的小人图像。public class PersonInMaze extends JTextField MazePoint point; Toolkit tool; PersonInMaze() tool=getToolkit();/获得工具包 setEditable(false);/不可见

13、 setBorder(null);/无边框 setOpaque(false);/非透明的 setToolTipText(单击我,然后按键盘方向键);/提示信息,如图3-1所示。 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;

14、 Image image=tool.getImage(person.gif); /获得(hud)image图像(t xin) g.drawImage(image,0,0,w,h,this);/绘制(huzh)image图像。 2.3.2 MazePoint.java该类获取MazePoint对象的坐标值,并返回。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; publi

15、c 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; 2.3.3 WallOrRoad.java此类继承(jchng)了JPanel类,JPanel 是一般(ybn)轻量级容器,在此容器(rngq)上定义了迷宫图。public class WallOrRoad extends JPanel boolean isRoad,isWal

16、l,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=tr

17、ue) 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(Bev

18、elBorder.RAISED);/* SoftBevelBorder是实现某种斜面的类,这种斜面要么凸出要么凹入且拐角(guijio)圆滑,BevelBorder该类实现简单的双线斜面(ximin)边框,RAISED:凸出(t ch)斜面类型。*/ catch(Exception exp) 2.3.4 Maze.javaMaze类对JLayeredPane进行了继承,JLayeredPane 为 容器添加了深度,允许组件在需要时互相重叠。Integer 对象指定容器中每个组件的深度,其中编号较高的组件位于其他组件之上。public Maze() setLayout(null); wallIm

19、age=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_LAYER:拖动一个组件时,将该组件重分配到拖动层可确保(qubo)将其定位在容器中的其他所有组件之上。完成拖动后,可将该组件重分配到其正常层。这样(zhyng

20、)可确保person图像(t xin)在走到roadImage图像时可覆盖roadImage图像,在走过后roadImage显示, 图3-3、 图3-4。public void setMazeFile(File f) mazeFile=f; char a; RandomAccessFile in=null; String lineWord=null; try in=new RandomAccessFile(mazeFile,r);/创建RandomAccessFile类的只读对象/*RandomAccessFile是用来访问那些保存数据记录的文件的,这样你就可以用seek( )方法来访问记录,

21、并进行读写了*/ 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(); am=str.toCharArray(); position=in.getFilePointer(); m+; in.close(); wallOrRoad=new WallOrRoadmn; catch(IOException exp) JButton mess=new JButton(无效的迷宫(mgng)文件); add(mess); mess.setBounds(30,30,100,100); mess.setFont(new Font(宋体,Font.BOLD,30); System.out.println(exp+mess); 这个类通过数组和循环对迷宫进行(jnxng)了设置。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论