JAVA课程设计报告标准格式(吴国文).doc_第1页
JAVA课程设计报告标准格式(吴国文).doc_第2页
JAVA课程设计报告标准格式(吴国文).doc_第3页
JAVA课程设计报告标准格式(吴国文).doc_第4页
JAVA课程设计报告标准格式(吴国文).doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

淮 海 工 学 院 计算机工程学院课程设计报告设计名称: 面向对象课程设计 选题名称: 益智类小游戏的设计与实现 姓 名: 吴国文 学 号: 510856111 专业班级: D软件081 系 (院): 计算机工程学院 设计时间: 2010.6.142010.6.27 设计地点: 软件实验室、教室 成绩:指导教师评语: 签名: 年 月 日面向对象课程设计报告 第 21 页,共 21 页1课程设计目的设计目的:面向对象程序设计是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力。2课程设计任务与要求:课程设计可选用Eclipse、JBuilder、NetBeans等作为开发平台以提高开发效率,尽可能熟练掌握其中一种集成开发环境。建议采用UML建模技术进行系统的分析设计,在Visio中画出系统用例图和类图,并将UML图复制到设计报告中。 (1) 每位同学通过智能教学平台需提交可独立运行的应用程序,要求程序书写规范,源程序需加必要的注释;(2) 每位同学需独立提交书面设计报告书(每人一份),要求编排格式统一、规范、内容充实,同时通过教学平台提交设计报告电子版;设计报告书封面和正文格式要符合淮海工学院课程设计报告书封面与正文标准格式要求,设计报告内容不少5000字。其正文一般应包括需求分析、概要设计、详细设计、调试分析、运行界面(附主要代码)、测试结果、附录或参考资料、心得体会等内容。 (3) 提交日期:第20周周一(2010年7月5日)之前。3课程设计说明书本次设计要达到的目标分别从以下模块进行阐述: 游戏主界面模块:游戏的主界面是进入游戏后,能够给玩家第一感官的部分,主要包括游戏图形区域界面、游戏的速度选择更新界面、游戏分数的显示更新界面、新生方块的预览、游戏开始按钮、暂停游戏按钮、退出游戏按钮以及游戏排行榜按钮。从很大程度上决定了玩家对游戏的兴趣问题,因此,游戏的主界面应该力求美观,爽心悦目。 游戏控制模块: 这个模块是游戏的中心环节,主要完成控制游戏的开始、暂停、退出等功能。为了能够给玩家一个很好的游戏环境,这部分应该做到易懂、易操作。1.4 设计实现功能和目标本设计所开发的是基于Java的一个贪吃蛇游戏软件,主要实现游戏的开始、暂停、退出、等功能,分为: 游戏主界面模块、游戏控制模块以二个模块。 性能:本软件在设计方面本着方便、实用及娱乐性高的宗旨,在对界面进行设计的过程中,始终坚持清晰明了,在性能方面能够实现效率高,不易出错等优点。 游戏主界面模块:主要包括游戏图形区域界面、游戏开始按钮、暂停游戏按钮、关闭按钮。游戏的主界面应该力求美观,爽心悦目。 游戏控制模块:主要完成控制游戏的开始、暂停、退出等功能,这部分应该做到易懂、易操作而且准确率高,不易出错。1.5游戏设计环境 本次课程设计所涉及和实现的是用Java编程语言开发的贪吃蛇游戏。本次设计的系统环境及工具如下: 运行环境:windows xp 编程语言:Java 3.分析与设计(1)游戏处理流程。本次游戏处理流程如图1所示。进入游戏画面 单机“begin”按钮,游戏开始,蛇开始随即出现键盘操作: “左移” “右移” “向下” “向上”没有吃到实物且蛇碰到边界或者自身游戏中途欲退出,单击游戏界面上的“”游戏结束图1 游戏流程设计(2)功能模块设计。软件开发过程中的功能模块设计,主要解决实现该游戏需求的程序模块设计问题。包括如何把该游戏划分成若干个模块,决定各个模块之间的接口、模块之间传递的信息,以及模块结构的设计等。(3)游戏功能 本系统主要完成一下几个方面的功能:1. 游戏控制功能包括游戏的开始、暂停、退出2. 界面布局3. 其他辅助功能(4)总设计模块的划分根据游戏游戏需求中游戏所要实现的功能,整个游戏分为二个模块进行具体的设计,如图2所示。贪吃蛇游戏游戏控制模块游戏主界面模块图2游戏总设计模块(5)游戏煮界面模块游戏界面主框架主要包括游戏图形区域界面、游戏的开始按钮、暂停按钮、游戏的退出按钮。游戏界面主框架的主要结构如图3所。游戏的主界面框架游戏控制按钮界面游戏图形区域界面(即游戏画布)图3游戏主界面框架(6)游戏控制模块游戏控制模块主要通过主界面上的按钮来控制游戏的开始、游戏的暂停、游戏的退出这三个功能。在这个模块中,需要给各个按钮或文本框加入代码,来对上述的功能加以进一步的实现。游戏控制模块的主要框架如图4所示。游戏控制模块游戏的退出功能游戏的的开始功能图4游戏控制模块框架1. 游戏开始控制:单击“begin”按钮,游戏画布既有移动的贪吃蛇出现,游戏正式开始2. 游戏退出控制:单击“”按钮,退出游戏。(7)类模块设计1.类模块之间的关系通过对功能要求的分析,将贪吃蛇游戏功能划分为6个类模块,他们的关系如图5所示。GreedSnake(主类)SnakeFrame(用户界面类)SnakePabel(游戏界面及内容)SnakeModel(游戏内容)AnayIndex(游戏方向)AnayIndexReadOnly(方向)图5贪吃蛇之间的关系(8)各类模块设计概要1.GreedSnake类GreedSnake类该类包含main方法,为应用程序的主类。该类用来创建游戏的用户界面,整个程序从该类的main方法开始执行。 SnakeFrame类用来设计游戏的用户界面。 SnakePanel类设置游戏运行状态,设置蛇头颜色,背景颜色,随机块颜色,移动以及分数更新,实现上下左右移动的方法接口。 SnakeModel类设置初始化蛇的形状和运行方向,设置随机块的位置,判断游戏是否出界,以及出界后的处理,设置方向的更新。 ArrayIndex类 用来得到坐标,设置坐标以及判断运行方向相同或相反。 ArrayIndexReadOnly类用来得到坐标,以及判断运行方向相同或相反。 (9)详细设计1.程序的主要结构:本次所设计贪吃蛇游戏程序的主结构如图6所示。初始化失败初始化不正常退出进入时间等待状态返回相关事件退出开始请求正常退出图6贪吃蛇程序主结构2.类模块流程图 GreedSnake类创建SnakeFrame窗口类的一个实例设置关闭窗口按键和窗口高度宽带图7GreedSnake类程序流程图SnakeFrame第一菜单及菜单变量创建菜单及菜单项将组件注册给事件监听者处理给予菜单动作时间图8SnakeFrame类程序流程图SnakePanel类设置蛇头身体,随机块和初始运行方向变量处理游戏动作设置蛇头、背景、随机块颜色实现移动接口实现按键接口定义数据成员图9SnakePanel类程序流程图SnakeModel类设置函数坐标和方向设置初始化状态设置贪吃蛇界面并初始化游戏Y是否与运行方向相反保持原来方向N按指示方向运动Y重设置蛇头和蛇身,重新生产随即块蛇是否吃了随机块NY是否出界游戏结束NY游戏结束是否相交N移动,把蛇头加到蛇身体里面并且把尾巴移出是否吃了足够的果实Y游戏结束,“你赢了”图10SnakeModel类程序流程图ArrayIndexReadOnly类构造函数得到坐标设置与运行方向相同和相反的表示方法图11 ArrayIndexReadOnly类程序流程图ArrayIndex类设置X,Y坐标设置与运行方向相同或相反的表示方法图12 ArrayIndex类程序流程图4课程设计成果打开贪吃蛇游戏后,出现如图14所示界面。图14点击“begin”出现如图15界面。图15按“”控制蛇的方向,如图16所示。图16吃了足够的果实游戏结束,出现“you win”,如图16所示。图16蛇碰到边界则游戏结束,出现“game over”,如图17所示。图17蛇碰到自己的身体则游戏结束,如图18所示。图18本次实验部分源程序代码:import java.awt.*; import java.awt.event.*; public class GreedSnake /主类 /* * param args */ public static void main(String args) / TODO Auto-generated method stub new MyWindow(); class MyPanel extends Panel implements KeyListener,Runnable/自定义面板类,继承了键盘和线程接口 Button snake; /定义蛇按钮 int shu=0; /蛇的节数 int food; /食物数组 boolean result=true; /判定结果是输 还是赢 Thread thread; /定义线程 static int weix,weiy; /食物位置 boolean t=true; /判定游戏是否结束 int fangxiang=0; /蛇移动方向 int x=0,y=0; /蛇头位置 MyPanel() setLayout(null); snake=new Button20; food=new int 20; thread=new Thread(this);if(shu=15) /如果蛇节数等于15则胜利 t=false; result=true; repaint(); public void keyPressed(KeyEvent e) /按下键盘方向键 if(e.getKeyCode()=KeyEvent.VK_RIGHT)/右键 if(fangxiang!=1)/如果先前方向不为左 fangxiang=0; else if(e.getKeyCode()=KeyEvent.VK_LEFT) if(fangxiang!=0) fangxiang=1; else if(e.getKeyCode()=KeyEvent.VK_UP) if(fangxiang!=3) fangxiang=2; else if(e.getKeyCode()=KeyEvent.VK_DOWN) if(fangxiang!=2) fangxiang=3; public void keyTyped(KeyEvent e) public void keyReleased(KeyEvent e) public void paint(Graphics g) /在面板上绘图 int x1=this.getWidth()-1; int y1=this.getHeight()-1; g.setColor(Color.red); g.fillOval(weix, weiy, 10, 10);/食物 g.drawRect(0, 0, x1, y1); /墙 if(t=false&result=false) g.drawString(GAME OVER!, 250, 200);/输出游戏失败 else if(t=false&result=true) g.drawString(YOU WIN!, 250, 200);/输出游戏成功 class MyWindow extends Frame implements ActionListener/自定义窗口类 MyPanel my; Button btn; Panel panel; MyWindow() super(GreedSnake); my=new MyPanel(); btn=new Button(begin); panel=new Panel(); btn.addActionListener(this); panel.add(new Label(begin后请按Tab键选定蛇); panel.add(btn); panel.add(new Label(按上下左右键控制蛇行动); add(panel,BorderLayout.NORTH); add(my,BorderLayout.CENTER); setBounds(100,100,610,500); setVisible(true); validate(); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); public void actionPerformed(ActionEvent e)/按下begin按钮 if(e.getSource()=btn) try my.thread.start(); /开始线程 my.validate(); catch(Exception ee) 5.课程设计心得通过这次课程设计,我对上学期所学的JAVA语言程序设计有一个更深刻的了解,将所学的知识应用于实践,由于所学知识有限,为了使游戏能够能够实现自己预先的构

温馨提示

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

评论

0/150

提交评论