Java实训报告-greenfoot游戏制作_第1页
Java实训报告-greenfoot游戏制作_第2页
Java实训报告-greenfoot游戏制作_第3页
Java实训报告-greenfoot游戏制作_第4页
Java实训报告-greenfoot游戏制作_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

.z......资料..."Java实训报告"——Greenfoot游戏程序设计班级:微应1211成员:胡文亚吴桐水利水电职业技术学院第一局部323481.1设计目的251831.2设计要求210071.3实现功能2195921.4界面设计3第二局部289712.1开发平台351342.2环境搭配4第三局部291233.1Space代码4116683.2Obstacle代码63.3SmoothMover代码291237116683.4Body代码1115381第四局部心得体会第一局部1.1设计目的Greenfoot是针对那些想让自己熟悉如何使用JAVA的人而设计的,是一个功能完整的开发环境,可以使用Java方便地编写游戏和进展模拟。我们设计的是一款简单易操作的游戏,我们希望能通过自己的所学知识把它分析开来,真正的了解它的本质。虽然我们的编程能力不是很强,但是我们组有信心,通过本学期对JAVA语言程序设计的学习,经过教师对greenfoot软件的介绍及实际举例、耐心的讲解,我们可以试着用greenfoot来制作简单的小游戏了,虽然不娴熟还有待提高,但是一些技术含量较低的小游戏还是很容易让我们掌握的。此次游戏程序设计的目的,主要是通过greenfoot来制作游戏来更好的掌握java语言。通过greenfoot这个平台,熟习greenfoot在制作游戏方面所需要的技巧,将自己的游戏尽可能多的运用所学到的技术,并且将在平时java课程上面学到的知识付诸于实践,并从实践和实际的工程中提高自己的编程能力。找出自己的缺乏之处进展弥补。1.2设计要求:这次实训任务的课程设计的要选择greenfoot软件作为我们游戏编程的平台。因为我们平时学习的就是java语言,而greenfoot便是一个以Java语言为根底的游戏开发平台,所以在编程的过程中能够提高效率,也让我对java语言和greenfoot之间衔接的关系有了更深了解,同样,也让我更加熟习了这个游戏开发平台的环境。1.3实现功能此款"疯狂之音"游戏的设计思路就是解放双手的弹奏,通过向空白处随意放入不同颜色、不同大小的球,当球下落和上升时触碰到黄色板块会触发出不同的音调,当多个声音同时出现时能够准确的分辨出来。就成为了一首自己创作的优美神曲,并给大家带来娱乐,为听者增加不少乐趣。1.4界面设计第二局部2.1开发平台greenfoot是一个以Java语言为根底的游戏开发平台,编程的过程中能够提高效率,而且对象的可视化和对象的交互性比拟清晰。2.2环境配置1、计算机的环境变量需要设置,计算机需要安装JDK版本为1.6。由于greenfoot需要绑定JDK。2、greenfoot的安装,需要到官网上下载正确的greenfoot版本,安装后需要测试时候可以使用,是否与JDK绑定。第三局部3.1Space代码importgreenfoot.*;//(World,Actor,GreenfootImage,GreenfootandMouseInfo)importjava.awt.Color;publicclassSpacee*tendsWorld{privateString[]soundFiles={"2c","2d","2e","2f","2g","2a","2b","3c","3d","3e","3f","3g","3a","3b"};//十四个声音档/***对于类空间对象的构造函数。*/publicSpace(){super(960,620,1);createObstacles();randomBodies(5);//初始球的数量}/***创立一个排在我们的世界中的障碍。*/publicvoidcreateObstacles(){inti=0;while(i<soundFiles.length){//声音档的长addObject(newObstacle(soundFiles[i]+".wav"),80+i*60,310);//声音资源文件i++;}}/***创立一个给定的宇宙中的物体的数量。每一个身体都有一个随机的初始状态(size大小,mass集中,direction方向,speed速度,color颜色,location位置).//世界里创立了一个给定的数量的球,每个球都有一个随机的初始状态*/publicvoidrandomBodies(intnumber){while(number>0){intsize=20+Greenfoot.getRandomNumber(30);//从一组数据中随机取出一定数量的随机数doublemass=size*7.0;intdirection=Greenfoot.getRandomNumber(360);//方向doublespeed=Greenfoot.getRandomNumber(150)/100.0;//速度int*=Greenfoot.getRandomNumber(getWidth());//取宽度inty=Greenfoot.getRandomNumber(getHeight());//取长度intr=Greenfoot.getRandomNumber(255);intg=Greenfoot.getRandomNumber(255);intb=Greenfoot.getRandomNumber(255);addObject(newBody(size,mass,newVector(direction,speed),newColor(r,g,b)),*,y);number--;}}}3.2Obstacle代码importgreenfoot.*;//(World,Actor,GreenfootImage,GreenfootandMouseInfo)publicclassObstaclee*tendsActor{privateStringsound;privatebooleantouched=false;/***创立一个具有相关的声音文件的一个障碍。*/publicObstacle(StringsoundFile){sound=soundFile;//声音档}/***每一次循环,检查是否被击中。如果我们发挥我们的声音。*/publicvoidact(){Actorbody=getOneIntersectingObject(Body.class);if(touched&&body==null)//不用触碰{touched=false;setImage("block.png");}elseif(!touched&&body!=null){//暂时的触碰touched=true;setImage("block-light.png");Greenfoot.playSound(sound);//播放声音}}publicvoidplaySound(){Greenfoot.playSound(sound);}}3.3SmoothMover代码importgreenfoot.*;//(World,Actor,GreenfootImage,andGreenfoot)/***一个变化的一个Actor,保持准确的位置〔使用双打的坐标而不是整数〕。它还保持当*前的运动矢量的运动形式。*/publicabstractclassSmoothMovere*tendsActor{privateVectormovement;privatedoublee*act*;privatedoublee*actY;publicSmoothMover(){this(newVector());}/***创造新事物以给定的速度初始化的*/publicSmoothMover(Vectormovement){this.movement=movement;}/***在当前的运动方向移动*/publicvoidmove(){e*act*=e*act*+movement.get*();e*actY=e*actY+movement.getY();super.setLocation((int)e*act*,(int)e*actY);}/***设置位置使用准确坐标(double)*/publicvoidsetLocation(double*,doubley){e*act*=*;e*actY=y;super.setLocation((int)*,(int)y);}/***设置的位置。重新定义标准的Greenfoot方法来确定*确切的坐标更新同步*/publicvoidsetLocation(int*,inty){e*act*=*;e*actY=y;super.setLocation(*,y);}/***返回确切的**/publicdoublegetE*act*(){returne*act*;}/***Returnthee*actyco-ordinate(asadouble).返回确切的y*/publicdoublegetE*actY(){returne*actY;}/***修改当前的运动通过添加一个新的向量到现有的运动*/publicvoidaddForce(Vectorforce){movement.add(force);}/***加速这种原动力的速度给定的因素。(因子小于1*减速)。方向保持不变。*/publicvoidaccelerate(doublefactor){movement.scale(factor);if(movement.getLength()<0.15){movement.setNeutral();}}/***返回这个球的速度.*/publicdoublegetSpeed(){returnmovement.getLength();}/***返回该对象的当前运动*/publicVectorgetMovement(){returnmovement;}}3.3Body代码importgreenfoot.*;//(World,Actor,GreenfootImage,GreenfootandMouseInfo)importjava.awt.Color;importjava.util.List;/***“Body〞是任何类型的对象在空间,有一个大的,或其他任何漂浮在周围空间。*/publicclassBodye*tendsSmoothMover{privatestaticfinaldoubleGRAVITY=7.8;privatestaticfinalColordefaultColor=newColor(255,216,0);//黄色的球privatedoublemass;/***.构造一个球是默认大小,方向,运动,和颜色*/publicBody(){this(20,300,newVector(0,0.0),defaultColor);}/***构造一个球是默认大小,方向,运动,和颜色*/publicBody(intsize,doublemass,Vectormovement,Colorcolor){this.mass=mass;addForce(movement);GreenfootImageimage=newGreenfootImage(size,size);image.setColor(color);image.fillOval(0,0,size-1,size-1);setImage(image);}/***行为。那就是将引力部份从所有其他体的周围,然后移动。*/publicvoidact(){applyForces();move();bounceAtEdge();}/***检查是否到达背景的边缘,如果是就反弹.*/privatevoidbounceAtEdge(){if(get*()==0||get*()==getWorld().getWidth()-1){setLocation((double)get*(),(double)getY());getMovement().revertHorizontal();accelerate(0.9);}elseif(getY()==0||getY()==getWorld().getHeight()-1){setLocation((double)get*(),(double)getY());getMovement().revertVertical();accelerate(0.9);}}/***应用重力的力量从这个宇宙中其他天体*/privatevoidapplyForces(){List<Body>bodies=(List<Body>)getWorld().getObjects(Body.class);for(Bodybody:bodies){if(body!=this){applyGravity(body);}}//确保不会太快:如果当前速度非常快,减速.if(getSpeed()>7){accelerate(0.9);//加速因子<1实际上减慢}}/***适用于一个给定的球的重力*/privatevoidapplyGravity(Bodyother){doubled*=other.getE*act*()-this.getE*act*();doubledy=other.getE*actY()-this.getE*actY();Vectorforce=n

温馨提示

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

评论

0/150

提交评论