J2EE课程设计实验报告:保卫家园单机小游戏设计_第1页
J2EE课程设计实验报告:保卫家园单机小游戏设计_第2页
J2EE课程设计实验报告:保卫家园单机小游戏设计_第3页
J2EE课程设计实验报告:保卫家园单机小游戏设计_第4页
J2EE课程设计实验报告:保卫家园单机小游戏设计_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

课程设计报告(说明书)课程名称:_____J2EE课程设计_________起止时间:2015年6月16日----2015年6月21日共1周题目:保卫家园单机小游戏设计组员一:组员二:组员三:组员四:指导教师:2015年6月21日经济管理学院湖北汽车工业学院经济管理学院信管系课程设计任务书一、题目:保卫家园二、内容此游戏中,有对象:如大僵尸,小僵尸,保卫者,武器,铠甲等。但各种武器有不同的杀伤力和射程。各种铠甲有不同的保护力。因而将采用命令模式,策略模式,装饰模式进行代码设计,命令模式主要对装备和铠甲进行替换。策略模式对僵尸,保卫者等对象进行抽象和封装等编写,装饰模式针对诸如:一个保卫者需要铠甲,武器等多个装饰对象。三、基本工作量要求1、运用课堂所学UML语言方法,画出课程设计中的主要的UML图。2、代码的设计要体现出少修改,多扩展,松散耦合,宜维护。运用java设计模式中的两种以上的模式对系统的代码进行设计,要巧妙地使用java中常用的技术方法,封装,委托,多态,继承,重写覆盖等,同时对代码要进行注解。3、根据系统的要达到的目的,建立测试指标,对系统进行测试。4、根据指导老师审核意见及课程设计规范,整理、修改,完成一篇字数不少于6000字的课程设计报告。起止日期:2014年6月16日至2014年6月20日(包括答辩共1周)五、候选学生任务表姓名班级学号任务及贡献杜逸君T1253-920120530901万志超T1253-920120530919周强T1253-920120530921陈臣T1253-920120530922指导教师签名:日期:目录系统描述1.1设计的目的和意义.....................................................11.2设计的主要内容.......................................................11.2.1游戏背景..........................................................11.2.2游戏过程..........................................................11.3需要实现的功能......................................................2第二章系统分析与设计2.1需求分析............................................................22.2设计模式及相关类图.................................................22.2.1策略模式.........................................................22.2.2装饰模式.........................................................32.2.3命令模式.........................................................42.2.4工厂模式.........................................................4第三章心得体会3.1个人心得体会........................................................53.2小组心得体会........................................................7第四章结束语4.1致谢...............................................................74.2参考文献...........................................................74.3附录...............................................................7相关代码..............................................................8系统描述保卫家园是一款单小游戏,本游戏主要讲诉了家园保卫者与侵略者之间展开的一场激烈而又刺激的战斗。没有游戏界面的制作,各个过程都从控制台输出结果。1.1设计的目的和意义在这个各类益智类小游戏层不不穷的信息时代,在这处处需要和平,需要正义的时代,为了满足游戏爱好者的需要,为了呼吁更多人爱好和平,我们基于刺激而又充满正能量的设计理念,着手开发了这款守卫者与侵略者之间的进行的一场反侵略斗争。本游戏的主要意义在于唤醒更多人的正义感,誓死保卫家园,反对侵略,敢于同非正义侵略作斗争。同时传达了一种战争给被侵略者和侵略者带来苦难,珍惜和平才能避免不必要的伤害的信息,呼吁更多的人爱好和平,珍惜和平。1.2设计的主要内容游戏背景在一座政局稳定,人民安居乐业,百姓丰衣足食,堪称世外桃源的小城堡里,一代明君(城主)统领着自己的士兵和百姓一起过着幸福的生活。知道有一天,一大批僵尸来袭,扰乱了这座小城的安宁,为了赶走侵略者,这里的城主带领自己的士兵浴血奋战,誓死保卫家园,同侵袭着展开了一场激烈而又充满正义的反侵略战争。1.2.2游戏过程城主带领自己的士兵同侵略者作斗争的过程中,向来爱好和平的城主为了保护全城百姓,同时也为了抵御侵略者伤害,城主穿着铠甲带领自己的士兵同手持长剑僵尸浴血奋战。战斗过程中,侵略者有大僵尸和小僵尸,他们可以锋利的长剑作为武器来屠城,守卫者城主和他的士兵有可以抵御伤害的铠甲来抵御侵略者。历经一场又一场的激烈战争,最终。。。结果待定,敬请期待!1.3需要实现的功能本游戏设计开发基于java设计模式设计的一个保卫家园游戏,通过各个类之间的联系,每个类的属性,各个父类和子类之间的继承和方法来实现生产僵尸,给僵尸装饰武器,命令保卫者打僵尸,通过血量和攻击力的计算关系,得出胜负。第二章系统分析与设计2.1需求分析僵尸:(称号,血量,攻击力)僵尸分为大僵尸和小僵尸,每个僵尸都有自己的称号,在战斗的过程中血量会减少,使用武器之后攻击力会提高。城主:(血量,攻击力,铠甲)城主在战斗的过程中有铠甲,且血量会减少,穿铠甲会降低血量下降的速度。同时攻击力也有所变化,攻击力的变化会影响敌方血量的减少量。。士兵:(攻击力,血量)士兵在战斗过程中血量会随着伤害的持续时间二减少,同时会因自身攻击力给敌方造成伤害,使得敌方血量减少。长剑:(攻击力,伤害)是双方战斗过程中的武器,使用了该武器会自己的增加攻击力,同时会影响敌方血量变化的速度。血量:城主,大小僵尸,士兵在战斗的过程中,血量会随着伤害的持续而减少。使用武器之后会加快血量变化速度,穿戴铠甲之后减缓血量减少的速度。铠甲:(护甲值,抵御伤害)可以减缓守卫者城主,士兵血量的减少幅度,抵御敌方造成的伤害。2.2设计模式及其相关类图策略模式通过控制角色(大小僵尸,城主,士兵),为他们配备不同装备和铠甲等策略来应不同攻击力和不同护甲值的敌方角色。为战斗取得胜利作好相关策略。装饰模式通过设定大小僵尸,士兵,城主的不同血量和不同攻击力对这些对象进行装饰,同时通过穿戴铠甲来装饰城主,减缓城主失血速度。2.2.3命令模式命令不同角色使用或者不使用武器,穿戴铠甲或者不穿戴铠甲,命令攻击敌方等方式来实现命令模式。工厂模式通过键盘操作利用工厂模式来生产具备不同攻击力和血量值的僵尸来应对敌方的攻击,增加对敌方的伤害。.心得体会3.1个人心得体会为期一周的J2EE课程设计就要结束了,在本次课程设计中我们的任务是设计一款游戏,这个游戏的名字叫做保卫家园,游戏中有士兵,城主,僵尸等游戏角色。其中我么采用了命令模式、策略模式、装饰模式以及工厂模式。我们分工明确完成每个模式。在这次课设任务中,我们一起讨论怎样完成,中间有过争吵,有过欢乐。但更多的是我们收获了许多理论中得不到的实践经验,虽然本次实验做的成果不是很完美,但我相信在以后的学习中,我一定会不断完善自己,珍惜每一次实践的机会,从中发现问题,解决问题。我觉得学号这门课程,一定要有一种自我约束力和自学的能力。遇到问题要有能力去解决问题,当尝试用各种放学解决问题时,这就是一种财富。同时通过这次课设,我深深的感觉到自身所学的知识有限,有些知识点以前没有学过。但我们没有研究,当课设中用到是感觉自己还是特别无知。虽然努力可以解决,但是浪费了大量的时间,这一点我必须在以后的学习中改正。同时也要督促自己在学习的过程中不断的完善自我。另外一点,也是在课设中必不可少的部分,就是同学之间的互相帮助。相互帮助是很重要的一点,这在以后的工作或生活中也是很关键的。此次课设,我深深体会到了积累知识的重要性。当中我们遇到了不少难题,经过我们大家的讨论和老师细心的一一指导,问题得到了解决。更深刻的认识到要做一个合格的编程者并非我以前想像的则容易,最重要的还是细致严谨。工作岗位是不会要一个一无是处的人的,所以我们要更多更快地从一个学生向工作者转变,总的来说我对这次实习还是比较充实的,它使我学到了很多东西,为我以后的学习做了引导,点明了方向,我相信在不远的未来定会有属于我们自己的一片美好天空!再一次感谢老师的帮助。——杜逸君本次课程设计对我们来说还是挺有挑战性的,通过五天时间的开发设计,我们最终成型了一个比较简单的守卫家园的游戏,虽然游戏界面做不出来,所有的流程都是从控制台输出,但我们依然是花费了很长时间。在本次试验中,我们分工合作,我们的策略是将游戏中涉及到的对象,属性等设计好了之后,大家分工负责不同的模式,最后再整合成一个完整的游戏。在本次课程设计中我主要是负责工厂模式的编写,以及类图的制作。通过工厂模式,生产出两种不同的僵尸,一开始真实难以下手。在各种百度各种翻书后,大体上有了编写工厂模式这一部分代码的思路。我建了四个类和一个测试主类。僵尸工厂类定义了生产僵尸的方法,抽象类僵尸类定义了僵尸的属性,具体的大小僵尸的名字,血量,攻击力的具体值。生产出一个大僵尸一个小僵尸。然后就是类图的制作,这个只要代码写出来了,类图还是比较好画的。通过本次课程设计,除了对我负责的工厂模式有了更深的理解外,我们本次课程设计所用到的命令模式,装饰模式,策略模式也有了很大的提高。但是我们在课程设计中还是有很多不足的,在我们分工将各个板块的模式编写完毕后,整合就成了一个最大的问题,我们也是请教了有经验的同学给我们指导,最后成功完成了游戏的整合。通过这次课程设计,我明白了,平时在课堂上所听的所学的必须要通过一个项目实践出来,可能当时听的是感觉好像都明白,但是真正操作起来却不则简单。要想学号技术,不仅仅是靠平时听的那些理论的东西,只有自己亲自动手才能真正的学会东西,学到技术。——万志超通过本次课设对小游戏的基本开发环境有了基本的了解,对之前所学的java相关知识有了更深刻的理解。这是第一次在掌握理论知识的基础上进行的游开发实践。时实践的过程中学到了许多之前没能掌握的知识,同时也巩固了java相关的基础知识。在游戏开发的过程中,在单机小游戏的开发过程中,游戏设计思想方法和设计理念是非常重要的,在此基础上,再结合所学知识来完成整个游戏的开发。设计模式也是非常重要的环节,首先具体了解了相关模式的创建方法,再对装饰模式,策略模式,工厂模式,命令模式等模式的基本使用方法和使用环境有做具体的理解,然后再设计相关模式,此过程,不仅加深了自己对相关知识的了解,更拓宽了视野,对今后有关知识的学习奠定了一定的基础。此外,在游戏开发的过程中。画UML类图也是至关重要的环节。画UML类图,首先必须熟悉各个实体类,类的属性及其相关方法。同时对各个符号所代表的基本含义要有了解。在此基础上根据游戏开发的需要,结合代码来完善UML类图。本次课程设计的过程中,遇到了许多难题,通过小组成员之间的密切协作,向老师请教,广泛查阅相关资料,最终使得问题迎刃而解。与此同时不仅加深了对相关知识的理解,更学到了许多课堂之外了的理论知识和实践知识。本次课设学到了许多,也收获了许多,无疑是一次充满艰辛,也充满喜悦的旅行。最后诚信的感谢老师的细心指导,和耐心讲解,也非常感谢小伙伴们不遗余力,团结协作完成本次课程设计。——周强我们用了一个周的时间,才把保卫家园游戏完成了大体的框架结构。这一个周里,我们每天都忙到很晚去搜集资料、查看书籍,由于上课期间对J2EE模式设计这门课程只是停留在略懂皮毛的理论阶段,对于许多模式都不懂,因此这个游戏制作的实际操作对于我们来说有巨大的难度。在系统分析阶段,我们针对保卫家园游戏,初步地定下了要实现的功能,并将整个游戏分成若干个模式。接下来是人员的分工,我们每个人都负责一个模式代码的编写,每个人都有不同的功能要实现,将复杂的过程变的简单起来。在模式编写阶段,出现了不少技术上的问题,我们每个人既独立又合作,遇难题一同攻克。出于我们基础不扎实这方面的原因,我们在模式设计的时候遇到了许多不同的问题,甚至被装饰模式中的简单问题弄得焦头烂额。但在一次次的错误的实践中,我们对各种设计的模式理解得更加深刻,也因此重新燃起斗志,在一次次的失败中,我们总结经验,渐渐的就学会了许多。可是在如游戏运行方面,我们始终不能完成这一功能,这也是我们缺陷的所在。鉴于水平能力问题,对于保卫家园的游戏开发我们并未完成,握。但是通过这次课设,我们也学到了许许多多的东西:首先自然是课本知识了,这次课设我们对各种模式都有了一个深刻的理解,对JAVA语言更是有了一个全新的认识,同时,我们更深地体会到J2EE的理念,并大致掌握了各种模式设计的基本过程;另一方面,也让我感受到团队合作的重要性。让我学会了如何与他人更好的合作,如何发表自己的看法。也让我学会了与人沟通,怎么发现并学习他人的有点。总的来说,这次课设让我受益很大,我很珍惜这次课设的经历,谢谢和我一起努力的同学,同时也感谢老师对我的指导。——陈臣3.2小组心得体会通过本此课程设计实训,使我们掌握了简单单机小游戏开发的基本方法和相关基础知识,对J2ee这门课程也有了更深的了解和全新的认识。在完成课设的过程中不仅使得我们巩固了之前所学的java基础知识,更加深了我们队Java知识的理解,还让我们通过理论结合实际去完成一项具体的开发。这对我们今后的学习和实践提供了又一个平台。在课程设计的过程中,有最开始看到课题无从下手,到现在的得心应手,无疑是一个很好地学习过程和提升过程。课设伊始,我们都被各种疑惑和问题困扰,通过不断地查阅资料,不断地向老师和同学请教,不仅解决了许多实际问题,还丰富了我们的知识,加深了我们对着方面知识的理解。在课堂学习的过程中,知识浅显的了解了部分设计模式,课设时通过翻阅相关书籍和网络搜索,又了解了更多的模式,对Java最常用的23中模式的用法都有所了解,这对今后学习这方面的知识打下了良好的基础,为今后更深入的学习提供了保障。本次课程设计对我们来说,不仅我们今后的学习和实践提供了一个良好的平台,更加强了我们对知识的理解和掌握,所以说本次课设所蕴含的意义是很重大的,对我们每个人今后的发展提供了很好地锻炼平台。4.1致谢真诚感谢在此次课设的过程中,为我们提供帮助和指导的指导老师!也感谢相互协作,不懈努力的小伙伴们!4.2参考文献[1]《Java23种设计模式》.百度百科

[2]

刘建勋.

设计模式作业.

设计模式——装饰模式总结及实例.[3]《java5游戏编程》JonathanS.Harbourr著.机械工业出版社4.3附录Packagecelue僵尸类接口:packagecelue;publicinterfaceJiangshi{publicvoidbeida();继承:①packagecelue;publicclassJiaose1implementsJiangshi{@Overridepublicvoidbeida(){ System.out.println("移动中被打");packagecelue;publicclassJiaoseimplementsJiangshi{@Overridepublicvoidbeida(){ System.out.println("原地站着被打");Test.javapackagecelue;publicclassTest{publicstaticvoidmain(String[]args){ Jiangshijianhshi=newJiaose(); Contextcontext=newContext(jianhshi); context.fight(); Jiangshijianhshi1=newJiaose1(); Contextcontext1=newContext(jianhshi1); context1.fight();运行结果截图:Packagefactorypackagefactory;publicclassBigjiangshiextendsJiangshi{publicintxueliang=1000;publicintgongjili=50; privateStringname="大僵尸";publicBigjiangshi(){publicvoidsetName(Stringname){=name;publicStringgetName(){returnname;publicvoidSay(){ System.out.println("我是"+name+"我的血量是"+xueliang+"我的攻击力为"+gongjili);②packagefactory;publicabstractclassJiangshi{intxueliang;intgongjili;Stringname;③packagefactory;publicclassJiangshiFactory{publicJiangshicreateJiangshi(Stringtype){ Jiangshijiangshi;if(type.equals("bigjiangshi")) jiangshi=newBigjiangshi();else jiangshi=newSmalljiangshi();returnjiangshi;④packagefactory;publicclassSmalljiangshiextendsJiangshi{publicintxueliang=500;publicintgongjili=25;publicString name="小僵尸";publicSmalljiangshi(){publicvoidsetName(Stringname){=name;publicStringgetName(){returnname;publicvoidsay(){ System.out.println("我是"+name+"我的血量是"+xueliang+"我的攻击力为"+gongjili);⑤packagefactory;importfactory.Bigjiangshi;importfactory.Smalljiangshi;publicclassTest{publicstaticvoidmain(String[]args){ Bigjiangshirg; rg=newBigjiangshi(); rg.Say();Smalljiangshic;c=newSmalljiangshi();c.say();运行结果截图:packageminglingpackageMingling;publicabstractclassGroup{publicabstractvoidda();packageMingling;importfactory.Bigjiangshi;importfactory.JiangshiFactory;importfactory.Smalljiangshi;publicclasskongshouextendsGroup{ publicvoidda1(){ JiangshiFactoryfactory1=newJiangshiFactory(); Smalljiangshismalljiangshi=(Smalljiangshi)factory1.createJiangshi("smalljiangshi"); System.out.println("士兵打"+smalljiangshi.getName()); publicvoidda(){ JiangshiFactoryfactory=newJiangshiFactory(); Bigjiangshibigjiangshi=(Bigjiangshi)factory.createJiangshi("bigjiangshi"); System.out.println("城主打"+bigjiangshi.getName());packageMingling;publicclassText{publicstaticvoidmain(String[]arge){ System.out.println("守卫者攻击方式..."); kongshourg; rg=newkongshou(); rg.da(); rg.da1();运行结果截图:packagezhuangshi/**packagejiangshi;publicclasschangjianextendsjiangshi{ publicchangjian(){ description="changjian"; publicchangjian(jiangshijiangshi2){ //TODOAuto-generatedconstructorstub @Override publicdoublegongjili(){ return500; @Override publicdoublexueliang(){ return0;packagezhuangshi;publicclasschangjianextendscondimentdecorator{ jiangshiJiangshi; publicchangjian(jiangshiJiangshi){ this.Jiangshi=Jiangshi; @Override publicStringgetDescription(){ //TODOAuto-generatedmethodstub returnJiangshi.getDescription(); @Override publicdoublegongjili(){ //TODOAuto-generatedmethodstub return.200+Jiangshi.gongjili(); @Override publicdoublexueliang(){ //TODOAuto-generatedmethodstub return.2000+Jiangshi.xueliang();packagezhuangshi;publicclasschengzhuextendsjiangshi{publicchengzhu(){description="城主";publicchengzhu(jiangshijiangshi2){//TODOAuto-generatedconstructorstub@Overridepublicdoublegongjili(){return100; }@Overridepublicdoublexueliang(){return3000;packagezhuangshi;publicabstractclasscondimentdecoratorextendsjiangshi{publicabstractStringgetDescription();packagezhuangshi;publicclassdajiangshiextendsjiangshi{publicdajiangshi(){description="大僵尸";publicdajiangshi(jiangshijiangshi2){//TODOAuto-generatedconstructorstub@Overridepublicdoublegongjili(){return50;@Overridepublicdoublexueliang(){return1000;⑤packagezhuangshi;publicclassfanjiaextendscondimentdecorator{ jiangshiJiangshi;publicfanjia(jiangshiJiangshi){this.Jiangshi=Jiangshi;@OverridepublicStringgetDescription(){//TODOAuto-generatedmethodstubreturnJiangshi.getDescription()+"司令";@Overridepublicdoublegongjili(){//TODOAuto-generatedmethodstubreturn.1000+Jiangshi.gongjili();@Overridepublicdoublexueliang(){//TODOAuto-generatedmethodstubreturn.2000+Jiangshi.xueliang();⑥packagezhuangshi;publicabstractclassjiangshi{ Stringdescription="Unknownjiangshi";publicStringgetDescription(){returndescription;publicabstractdoublexueliang();publicabstractdoublegongjili();⑦//packagejiangshi;/**publicclasskaijiaextendsjiangshi{ jiangshijianshi2; publicStringgetDescription(){ returnjianshi2.getDescription()+"xueliang"; publickaijia(jiangshijiangshi2){ this.jianshi2=jiangshi2; publicdoublexueliang(){ return5000; @Override publicdoublegongjili(){ //TODOAuto-generatedmethodstub return50;packagezhuangshi;publicclasskaijiaextendscondimentdecorator{ jiangshiJiangshi; publickaijia(jiangshiJiangshi){ this.Jiangshi=Jiangshi; @Override publicStringgetDescription(){ //TODOAuto-generatedmethodstub returnJiangshi.getDescription(); @Override publicdoublegongjili(){ //TODOAuto-generatedmethodstub return.0+Jiangshi

温馨提示

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

评论

0/150

提交评论