1、 面向对象程序设计 课程设计报告题目: 大鱼吃小鱼专业: 网络工程班级: 网络工程 12(2)姓名: 管蔚雄指导教师:徐宁成绩:计算机与信息工程系2014年 6 月 6 日学号 1208020211 2013-2014 学年 第二学期Comment x1: 目录中,页码应该从正文的第一页算起。你的页码设置是错误的。另外,word 有目录的自动生成功能,请查询其使用方式。计算机与信息工程系 面向对象程序设计课程设计报告2目 录第一章 设计的目的与要求2 1.1设计目的21.2设计要求21.3实现功能21.4界面设计2第二章 开发平台与技术.32.1java语言32.2greenfoot42.3环
2、境配置.5第 3章 模块具体实现和主要动画触发.7小结8参考文献.8附录9Comment x2: 你这课程设计的目的写的比我给的任务书还少啊。请从网络中参考别人的课程设计目的,多写几行。Comment x3: 1.这不是界面设计,而是实现功能。你的游戏可以升级,但是游戏的背景界面只牵涉到一个。2.文本中有图时,要在图片下方居中给图一个名字,“图 1 用户界面”,在文档中要写“如图 1所示”这样的提示内容。3.此处用户界面的截图,应该是你导出后用户操作界面。不应该是你的开发界面。计算机与信息工程系 面向对象程序设计课程设计报告3大鱼吃小鱼第一章 设计目的与要求1.1 设计目的通过用 greenf
3、oot来设计“大鱼吃小鱼”这个游戏,来熟悉并学会运用 greenfoot这个软件的同时巩固我们专业课 java知识。1.2 设计要求1.熟悉 GreenFoot平台;2.对游戏中所需类进行设计;3.写出源程序文件;4.对游戏进行调试和分析。1.3 实现功能敌方有三类鱼(鲨鱼、蓝鱼和小黄鱼),每一类鱼的对象出现后,在游戏中处于随机自由移动状态,敌方大鱼能吃小鱼;主角为红鱼且红鱼只有一条,玩家通过键盘方向键控制移动,红鱼有两级状态,初始时处于低级状态,只能吃黄鱼,能被蓝鱼或鲨鱼吃掉。初级状态的红鱼经过重重险恶且吃掉一定数量的黄鱼升级后,能吃黄鱼和蓝鱼,但还是能被鲨鱼吃。吃掉一定数量的鱼,则显示成功
4、信息,结束游戏;若红鱼被鲨鱼或蓝鱼吃掉,则显示失败信息。1.4 界面设计红鱼是主角,玩家通过键盘方向键控制移动,红鱼有两级状态:初级状态只能吃小黄鱼,会被蓝鱼和鲨鱼吃掉;吃掉 20条小黄鱼后回升级即长大,能吃掉蓝鱼,但还是能被鲨鱼吃掉。红鱼升级后,吃黄鱼数量达到 40,蓝鱼数量达到 20,显示成功信息,结束游戏;若红鱼被鲨鱼或蓝鱼吃掉,显示失败信息。敌方大鱼能吃小鱼,即鲨鱼吃蓝鱼和黄鱼,蓝鱼吃黄鱼。Comment x4: 此处的内容介绍显得没头没脑,如果你想说明其特点,应该在前面加一个提示信息,如“java 语言的特点”等。计算机与信息工程系 面向对象程序设计课程设计报告4第二章 开发平台和技
5、术2.1 Java语言简单性:Java 最初是为对家用电器进行集成控制而设计的一种语言,因此它必须简单明了。Java 语言的简单性主要体现在以下三个方面: Java的风格类似于 C+,但是 Java摒弃了 C+中容易引发程序错误的地方,如指针和内存管理。 Java提供了丰富的类库。 Java自身的基本系统所占用空间小于 250KB(即编译器和解释器),它实现了垃圾自动收集,简化了内存的管理工作。可靠性和安全性:Java 不支持指针,这杜绝了内存的非法访问。Java的自动单元收集防止了内存丢失等动态内存分配导致的问题。Java解释器运行时实施检査,可以发现数组和宇符串访问的越界;Java 提供了
6、异常处理机制,以便从错误处理任务恢复。Java通过自己的安全机制防止了病毒程序的产生和下载程序对本地系统的威胁破坏。当 Java字节码进进入解释器时,首先必须经过字节码校验器的检查,然后 Java解释器将决定程序中类的内存布局,随后,类装载器负责把来自网络的类装载到单独的内存区域。Comment x5: 文档中应有简单说明,不应该加一副图就结束。Comment x6: 特点无需面面具到。你的文章是介绍你的设计思路和内容的,对所用工具做简单介绍就可以了。Comment x7: 多打了符号计算机与信息工程系 面向对象程序设计课程设计报告5跨平台性:面向对象:把程序实现的每一个具体功能作为类,然后用
7、类来构成对象。优点是代码可重用、系统易扩展。多线程:通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,提高系统的运行效率。分布性:分布式包括数据分布和操作分布。数据分布是指数据可以分散在网络的不同主机上;操作分布是指把一个计箅分散在不同主机上处理。它支持以上两种分布性。对于前者,Java 提供了一个叫做 URL的对象,利用这个对象,可以访问Internet上的所有网络资源;对于后者,Java 提供的基于流套接字的网络编程接口,为实现网络的应用和 Web应用提供了方便。丰富的类库和 API文档2.2 GreenFootGreenfoot是由肯特大学的 Michael和 Martin开
8、发的一款游戏程序设计平台,主要用于程序设计的辅助教学。它是一个功能完整的开发环境,可以方便地编写游戏和进行游戏模拟。Greenfoot 也可看做是一个二维图形程序框架和集成开发环境的结合体,它支持面向对象程序设计的全部特性,特别适;合进行基于组件的可视化编程。Greenfoot具备以下几个特点:(1)可视化程序设计界面 (2)游戏案例作为项目单元 (3)良好的社区支持J a v a 源代码( * . j a v a 文件 )编写 J a v a 源程序J a v a 字节码( * . c l a s s 文件 )J a v a 编译器J a v aA P IJ a v a 运行环境类加载器J
9、V M字节码校验字节码解释器L i n u x操作系统W i n d o w s操作系统U n i x操作系统M a c O S操作系统Comment x8: 只需给出自己开发时的环境配置就可以。下面的集成开发环境介绍和安装步骤不需要。计算机与信息工程系 面向对象程序设计课程设计报告62.3 环境配置 开发运行环境:JDK(Java Development Kit)+文本编辑器( UltraEdit ) JDK是 java开发工具包,包括 java类库、java 编译器、java 解释器、java运行环境和 java命令行工具。http:/ (Xinox) JBuilder (Borland)
10、 J+(MicroSoft)VisualAge for Java(IBM) beans.orgEclipse http:/www.eclipse.org/downloadsJDK的安装安装:和一般应用程序相似,有向导指引。计算机与信息工程系 面向对象程序设计课程设计报告7环境变量的设置:Path使得系统可以在任何路径下识别 java命令。Classpath为 java加载类(class or lib)路径,只有类在 classpath中,java命令才能识别。JDK的安装路径:C:Javajdkpath路径为:C:Javajdkbinclasspath路径为:. ; C:Javajdklib
11、Comment x9: 此处应该是你文章的主要部分,你应该有条理的介绍自己的思路。以及问题的解决思路,你的介绍太过简单潦草,缺乏条理性。Comment x10: 给出编号,如 3.1之类。Comment x11: 1.应首先对主界面做介绍,给出用户界面的截图,该图应是你导出后的用户操作界面。不应该是你的开发界面。你可以将环境中类的组织结构截图下来。2.文本中有图时,要在图片下方居中给图一个名字,“图 1 用户界面”,在文档中要写“如图 1所示”这样的提示内容。3.分别介绍游戏中用到的类,类的组织结构可以用开发环境中类组织结构图,截图下来放在文档中,更易于人们理解。Comment x12: 给出
12、主要问题的解决思路。如使鱼更换方向,如何升级等。你的介绍实在需要好好理一理思路。计算机与信息工程系 面向对象程序设计课程设计报告8Greenfoot安装:Greenfoot软件直接在自己的 pc机上安装即可用。第 3章 模块具体实现和主要动画触发涉及的类及类名本实验中 world类中有一个子类 sea,actor 类中有十个子类,分别是主角类即红鱼类 Redfish,黄鱼两个类 yellowfish1与 yellowfish2,蓝鱼两个类bluefish1与 bluefish2,鲨鱼类 shark,水泡类 blister,一个计数器Counter,一个 Scoreboard,一个 succes
13、s。各类实现的效果sea类:添加了一个红鱼的对象即主角;计数器的两个对象分别是用于计数吃掉黄鱼的数量和吃掉蓝鱼的数量;黄鱼与蓝鱼在世界里处于随机出现自由移动状态;实现计数器加一的方法;游戏结束的方法;游戏成功的方法;背景音乐循环播放。Redfish类:红鱼设置四种状态,在构造方法中设置了其初始状态,然后通过if判断语句来限制它的状态;在 act方法中设置了关联键盘向左移游戏动作;吃黄鱼蓝鱼动作,具体实现通过 if语句控制;鱼升级及游戏成功也是在 act方法中用 if语句来限定。yellowfish1与 yellowfish2类:黄鱼在边界消失。bluefish1与 bluefish2类:蓝鱼在
14、边界消失;在其 act方法里设置了吃黄鱼,通过 if语句,并调用 sea类的 getCount()方法,其数值小于等于 20情况下可以吃红鱼。shark类:鲨鱼在边界消失;在 act方法中设置了吃黄鱼,蓝鱼,红鱼,并且当吃到红鱼,游戏结束,调用 sea类的 gameover方法。blister类:水泡在边界消失。ScoreBoard与 success类:主要是绘制分数界面背景。Counter类:用于计数的类。Comment x13: 参考文献格式不对。计算机与信息工程系 面向对象程序设计课程设计报告9小结此次课程设计,使我更扎实的掌握了本学期专业课 java知识。当然,设计过程中遇到了一些困难
15、和问题,实在想不出来的问同学或请教老师,终于游逆而解。课程设计体现出自己综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱之处。实践出真知,通过亲自设计,使我们掌握的知识不再是是纸上谈兵。说实话,本次课程设计花了不少时间,时间主要花在游戏设计即代码上,游戏做好后,感觉所花时间是值得的,个人对自己设计游戏较满意,虽然不是做得那么精致,还存在些许需要改进的地方,我想以后有机会继续完善它。我认为,在这次课程设计中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验中,我学会了很多学习的方法。而这是日后最实用的,真的是受益
16、匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识。参考文献:Greenfoot官方网站;Java程序设计教程(牛晓太 主编)。计算机与信息工程系 面向对象程序设计课程设计报告10附录:(部分代码)sea类:import greenfoot.*; public c
17、lass sea extends WorldCounter mycounter;Counter mycounter1;GreenfootSound music;public sea() super(800, 600, 1); addObject(new Redfish(),400,300);mycounter=new Counter(“吃掉的 yellowfish数量:“);mycounter1=new Counter(“吃掉的 blue数量:“);addObject(mycounter,100,20);addObject(mycounter1,300,20);music=new Greenf
18、ootSound(“justin bieber - mistletoe.mp3“);public void act()music.playLoop();if(Greenfoot.getRandomNumber(100)20 )setImage(oldR);else setImage(smallR);move(5);计算机与信息工程系 面向对象程序设计课程设计报告12if(Greenfoot.isKeyDown(“left“)if(sea)getWorld().getCount()20 )setImage(oldL);else setImage(smallL);move(-5);if(Green
19、foot.isKeyDown(“up“)setLocation(getX(),getY()-5);if(Greenfoot.isKeyDown(“down“)setLocation(getX(),getY()+5);if(sea)getWorld().getCount()20 )if(getImage()=smallL) setImage(oldL);if(getImage()=smallR) setImage(oldR);getbluefish(); getyellowfish(); if(sea)getWorld().getCount()40(sea) getWorld().music.s
20、top();(sea) getWorld().gameWin();public void getyellowfish()yellowfish1 yellow1=(yellowfish1)getOneIntersectingObject(yellowfish1.class);yellowfish2 yellow2=(yellowfish2)getOneIntersectingObject(yellowfish2.class);if(yellow1!=null)Greenfoot.playSound(“pop.wav“);yellow1.disappear();(sea) getWorld().c
21、ountChange();if(yellow2!=null)Greenfoot.playSound(“pop.wav“);计算机与信息工程系 面向对象程序设计课程设计报告13yellow2.disappear();(sea) getWorld().countChange();public void getbluefish()bluefish1 blue1=(bluefish1)getOneIntersectingObject(bluefish1.class);bluefish2 blue2=(bluefish2)getOneIntersectingObject(bluefish2.class);if(blue1!=null)blue1.disappear();Greenfoot.playSound(“eating.wav“);(sea) getWorld().countChange1();if(blue2!=null)blue2.disappear();Greenfoot.playSound(“eating.wav“);(sea) getWorld().countChange1();计算机与信息工程系 面向对象程序设计课程设计报告14