Java实训报告greenfoot游戏制作Word格式文档下载.docx
- 文档编号:16634606
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:11
- 大小:19.06KB
Java实训报告greenfoot游戏制作Word格式文档下载.docx
《Java实训报告greenfoot游戏制作Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Java实训报告greenfoot游戏制作Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。
我们设计的是一款简单易操作的游戏,我们希望能通过自己的所学知识把它分析开来,真正的了解它的本质。
虽然我们的编程能力不是很强,但是我们组有信心,通过本学期对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)
import
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(){
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代码
*“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){
//加速因子<
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里面,有的类或者对象可以直接拖动,不用在生成和调用了。
看似简单容易操作的游戏背后,确实异常复杂的算法。
在网上查看了类似的逻辑算法和代码,也是各有不同,让我们更认识到了自身学习的不足之处,也更进一步产生了对游戏开发的兴趣。
受益匪浅,感悟颇多。
游戏开发是一个创新的过程,不是一个人就能够完成的,它更需要的是团队合作,由于我们的编程能力有待进一步加强,所以就做了一个很普通的项目。
我们相信只要多用心、多努力一定能做出更好的游戏。
这次很感谢老师给我们提供这样一个平台,我们会加倍努力的!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 报告 greenfoot 游戏 制作