Java实训报告greenfoot游戏制作Word格式文档下载.doc

上传人:wj 文档编号:5096878 上传时间:2023-05-04 格式:DOC 页数:14 大小:271KB
下载 相关 举报
Java实训报告greenfoot游戏制作Word格式文档下载.doc_第1页
第1页 / 共14页
Java实训报告greenfoot游戏制作Word格式文档下载.doc_第2页
第2页 / 共14页
Java实训报告greenfoot游戏制作Word格式文档下载.doc_第3页
第3页 / 共14页
Java实训报告greenfoot游戏制作Word格式文档下载.doc_第4页
第4页 / 共14页
Java实训报告greenfoot游戏制作Word格式文档下载.doc_第5页
第5页 / 共14页
Java实训报告greenfoot游戏制作Word格式文档下载.doc_第6页
第6页 / 共14页
Java实训报告greenfoot游戏制作Word格式文档下载.doc_第7页
第7页 / 共14页
Java实训报告greenfoot游戏制作Word格式文档下载.doc_第8页
第8页 / 共14页
Java实训报告greenfoot游戏制作Word格式文档下载.doc_第9页
第9页 / 共14页
Java实训报告greenfoot游戏制作Word格式文档下载.doc_第10页
第10页 / 共14页
Java实训报告greenfoot游戏制作Word格式文档下载.doc_第11页
第11页 / 共14页
Java实训报告greenfoot游戏制作Word格式文档下载.doc_第12页
第12页 / 共14页
Java实训报告greenfoot游戏制作Word格式文档下载.doc_第13页
第13页 / 共14页
Java实训报告greenfoot游戏制作Word格式文档下载.doc_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Java实训报告greenfoot游戏制作Word格式文档下载.doc

《Java实训报告greenfoot游戏制作Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《Java实训报告greenfoot游戏制作Word格式文档下载.doc(14页珍藏版)》请在冰点文库上搜索。

Java实训报告greenfoot游戏制作Word格式文档下载.doc

通过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;

publicclassSpaceextendsWorld{

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;

//速度

intx=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)),x,y);

number--;

}

}

3.2Obstacle代码

publicclassObstacleextendsActor{

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;

block-light.png"

Greenfoot.playSound(sound);

//播放声音

}

publicvoidplaySound(){

Greenfoot.playSound(sound);

3.3SmoothMover代码

//(World,Actor,GreenfootImage,andGreenfoot)

/**

*一个变化的一个Actor,保持精确的位置(使用双打的坐标而不是整数)。

它还保持当*前的运动矢量的运动形式。

publicabstractclassSmoothMoverextendsActor{

privateVectormovement;

privatedoubleexactX;

privatedoubleexactY;

publicSmoothMover(){

this(newVector());

*创造新事物以给定的速度初始化的

publicSmoothMover(Vectormovement){

this.movement=movement;

*在当前的运动方向移动

publicvoidmove(){

exactX=exactX+movement.getX();

exactY=exactY+movement.getY();

super.setLocation((int)exactX,(int)exactY);

/**

*设置位置使用精确坐标(double)

publicvoidsetLocation(doublex,doubley){

exactX=x;

exactY=y;

super.setLocation((int)x,(int)y);

/**

*设置的位置。

重新定义标准的Greenfoot方法来确定

*确切的坐标更新同步

publicvoidsetLocation(intx,inty){

super.setLocation(x,y);

*返回确切的x

publicdoublegetExactX(){

returnexactX;

*Returntheexactyco-ordinate(asadouble).返回确切的y

publicdoublegetExactY(){

returnexactY;

*修改当前的运动通过添加一个新的向量到现有的运动

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代码

importjava.util.List;

*“Body”是任何类型的对象在空间,有一个大的,或其他任何漂浮在周围空间。

*/

publicclassBodyextendsSmoothMover{

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(getX()==0||getX()==getWorld().getWidth()-1){

setLocation((double)getX(),(double)getY());

getMovement().revertHorizontal();

accelerate(0.9);

elseif(getY()==0||getY()==getWorld().getHeight()-1){

getMovement().revertVertical();

*应用重力的力量从这个宇宙中其他天体

privatevoidapplyForces(){

List<

Body>

bodies=(List<

)getWorld().getObjects(Body.class);

for(Bodybody:

bodies){

if(body!

=this){

applyGravity(body);

}

//确保不会太快:

如果当前速度非常快,减速.

if(getSpeed()>

7){

accelerate(0.9);

//加速因子<

1实际上减慢

*适用于一个给定的球的重力

privatevoidapplyGravity(Bodyother){

doubledx=other.getExactX()-this.getExactX();

doubledy=other.getExactY()-this.getExactY();

Vectorforce=newVector(dx,dy);

doubledistance=Math.sqrt(dx*dx+dy*dy);

doublestrength=GRAVITY*this.mass*other.mass/(distance*distance);

doubleacceleration=strength/this.mass;

force.setLength(acceleration);

addForce(force);

*//适用于一个给定的身体的重力这一套

publicdoublegetMass(){

returnmass;

经过一个星期对greenfoot的学习,我们基本掌握了greenfoot的比较基础的编程方法。

因为greenfoot是以java语言为基础的游戏制作平台,它的语言标准和java的没有什么本质的不同,所以通过以往对java的学习和认识,真正的操作起来,并不是很难着手。

只要上课认真听老师细心的讲解,我们觉得greenfoot这个软件还是很容易上手的,甚至在某些方面还比eclipse还容易一点。

至少在greenfoot里面,有的类或者对象可以直接拖动,不用在生成和调用了。

看似简单容易操作的游戏背后,确实异常复杂的算法。

在网上查看了类似的逻辑算法和代码,也是各有不同,让我们更认识到了自身学习的不足之处,也更进一步产生了对游戏开发的兴趣。

受益匪浅,感悟颇多。

游戏开发是一个创新的过程,不是一个人就能够完成的,它更需要的是团队合作,由于我们的编程能力有待进一步加强,所以就做了一个很普通的项目。

我们相信只要多用心、多努力一定能做出更好的游戏。

这次很感谢老师给我们提供这样一个平台,我们会加倍努力的!

第-14-页共14页

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2