1、Java实训汇报 Green foot游戏程序设计班 级:微应1211成 员:胡文亚吴 桐安徽水利水电职业技术学院第一部分1.1 设计目标21.2 设计要求21.3 实现功效21.4 界面设计3第二部分 2.1开发平台32.2环境搭配4第三部分 3.1 Space代码43.2 Obstacle代码63.3 SmoothMover代码73.4 Body代码11第四部分 心得体会第一部分 1.1设计目标Green foot是针对那些想让自己熟悉怎样使用JAVA人而设计,是一个功效完整开发环境,能够使用Java方便地编写游戏和进行模拟。我们设计是一款简单易操作游戏,我们期望能经过自己所学知识把它分析
2、开来,真正了解它本质。即使我们编程能力不是很强,不过我们组有信心,经过本学期对JAVA语言程序设计学习,经过老师对greenfoot软件介绍及实际举例、耐心讲解,我们能够试着用greenfoot来制作简单小游戏了,即使不娴熟还有待提升,不过部分技术含量较低小游戏还是很轻易让我们掌握。此次游戏程序设计目标,关键是经过greenfoot来制作游戏来愈加好掌握java语言。经过greenfoot这个平台,熟习greenfoot在制作游戏方面所需要技巧,将自己游戏尽可能多利用所学到技术,而且将在平时java课程上面学到知识付诸于实践,并从实践和实际项目中提升自己编程能力。找出自己不足之处进行填补。1.
3、2设计要求:这次实训任务课程设计要求是选择greenfoot软件作为我们游戏编程平台。因为我们平时学习就是java语言,而greenfoot便是一个以Java语言为基础游戏开发平台,所以在编程过程中能够提升效率,也让我对java语言和greenfoot之间衔接关系有了更深了解,一样,也让我愈加熟习了这个游戏开发平台环境。1.3 实现功效此款疯狂之音游戏设计思绪就是解放双手弹奏,经过向空白处随意放入不一样颜色、不一样大小球,当球下落和上升时触碰到黄色板块会触发出不一样音调,当多个声音同时出现时能够正确分辨出来。就成为了一首自己创作优美神曲,并给大家带来娱乐,为听者增加不少乐趣。1.4 界面设计第
4、二部分2.1开发平台greenfoot是一个以Java语言为基础游戏开发平台,编程过程中能够提升效率,而且对象可视化和对象交互性比较清楚。2.2 环境配置1、计算机环境变量需要设置,计算机需要安装JDK版本为1.6。因为greenfoot需要绑定JDK。2、greenfoot安装,需要到官网上下载正确greenfoot版本,安装后需要测试时候能够使用,是否和JDK绑定。第三部分3.1 Space代码import greenfoot.*; / (World, Actor, GreenfootImage, Greenfoot and MouseInfo)import java.awt.Color;
5、public class Space extends World private String soundFiles = 2c, 2d, 2e, 2f, 2g, 2a, 2b, 3c, 3d, 3e, 3f, 3g, 3a, 3b ;/十四个声音档 /* *对于类空间对象结构函数。 */ public Space() super(960, 620, 1); createObstacles(); randomBodies(5);/初始球数量 /* *创建一个排在我们世界中障碍。*/ public void createObstacles() int i = 0; while (i 0) int
6、size = 20 + Greenfoot.getRandomNumber(30); /从一组数据中随机取出一定数量随机数double mass = size * 7.0; int direction= Greenfoot.getRandomNumber(360);/方向double speed = Greenfoot.getRandomNumber(150) / 100.0; /速度 int x = Greenfoot.getRandomNumber(getWidth(); /取宽度 int y = Greenfoot.getRandomNumber(getHeight(); /取长度 in
7、t r = Greenfoot.getRandomNumber(255); int g = Greenfoot.getRandomNumber(255); int b = Greenfoot.getRandomNumber(255); addObject (new Body (size, mass, new Vector(direction, speed), new Color(r, g, b), x, y); number-; 3.2 Obstacle代码import greenfoot.*; / (World, Actor, GreenfootImage, Greenfoot and Mo
8、useInfo)public class Obstacle extends Actor private String sound; private boolean touched = false; /* *创建一个含有相关声音文件一个障碍。 */ public Obstacle(String soundFile) sound = soundFile;/声音档 /* *每一次循环,检验是否被击中。假如我们发挥我们声音。 */ public void act() Actor body = getOneIntersectingObject(Body.class); if (touched & bod
9、y = null) /不用触碰 touched = false; setImage (block.png); else if (!touched & body != null) /临时触碰 touched = true; setImage (block-light.png); Greenfoot.playSound(sound); /播放声音 public void playSound() Greenfoot.playSound(sound); 3.3 SmoothMover代码import greenfoot.*;/ (World,Actor,GreenfootImage,and Green
10、foot)/* *一个改变一个Actor,保持正确位置(使用双打坐标而不是整数)。它还保持当*前运动矢量运动形式。*/public abstract class SmoothMover extends Actor private Vector movement; private double exactX; private double exactY; public SmoothMover() this(new Vector(); /* * 发明新事物以给定速度初始化 */ public SmoothMover(Vector movement) this.movement = movement
11、; /* * 在目前运动方向移动 */ public void move() exactX = exactX + movement.getX(); exactY = exactY + movement.getY(); super.setLocation(int) exactX, (int) exactY); /* * 设置位置使用正确坐标(double) */ public void setLocation(double x, double y) exactX = x; exactY = y; super.setLocation(int) x, (int) y); /* * 设置位置。重新定义
12、标准Greenfoot方法来确定 *确切坐标更新同时 */ public void setLocation(int x, int y) exactX = x; exactY = y; super.setLocation(x, y); /* * 返回确切x */ public double getExactX() return exactX; /* * Return the exact y co-ordinate (as a double).返回确切y */ public double getExactY() return exactY; /* *修改目前运动经过添加一个新向量到现有运动 */
13、public void addForce(Vector force) movement.add(force); /* *加速这种原动力速度给定原因。(因子小于1 * 减速)。方向保持不变。 */ public void accelerate(double factor) movement.scale(factor); if (movement.getLength() 0.15) movement.setNeutral(); /* * 返回这个球速度. */ public double getSpeed() return movement.getLength(); /* * 返回该对象目前运动
14、*/ public Vector getMovement() return movement; 3.3 Body代码import greenfoot.*; / (World, Actor, GreenfootImage, Greenfoot and MouseInfo)import java.awt.Color;import java.util.List;/* *“Body”是任何类型对象在空间,有一个大,或其它任何漂浮在周围空间。 */public class Body extends SmoothMover private static final double GRAVITY = 7.8
15、; private static final Color defaultColor = new Color(255, 216, 0); / 黄色球 private double mass; /* *.结构一个球是默认大小,方向,运动,和颜色 */ public Body() this (20, 300, new Vector(0, 0.0), defaultColor); /* * 结构一个球是默认大小,方向,运动,和颜色 */public Body(int size, double mass, Vector movement, Color color) this.mass = mass; a
16、ddForce(movement); GreenfootImage image = new GreenfootImage (size, size); image.setColor (color); image.fillOval (0, 0, size-1, size-1); setImage (image); /* *行为。那就是将引力部份从全部其它体周围,然后移动。 */ public void act() applyForces(); move(); bounceAtEdge(); /* * 检验是否抵达背景边缘,假如是就反弹. */ private void bounceAtEdge()
17、 if (getX() = 0 | getX() = getWorld().getWidth()-1) setLocation(double)getX(), (double)getY(); getMovement().revertHorizontal(); accelerate(0.9); else if (getY() = 0 | getY() = getWorld().getHeight()-1) setLocation(double)getX(), (double)getY(); getMovement().revertVertical(); accelerate(0.9); /* *应
18、用重力力量从这个宇宙中其它天体 */ private void applyForces() List bodies = (List) getWorld().getObjects(Body.class); for (Body body : bodies) if (body != this) applyGravity (body); / 确保不会太快:假如目前速度很快,减速. if (getSpeed() 7) accelerate (0.9); / 加速因子 1实际上减慢 /* *适适用于一个给定球重力 */ private void applyGravity(Body other) doubl
19、e dx = other.getExactX() - this.getExactX(); double dy = other.getExactY() - this.getExactY(); Vector force = new Vector (dx, dy); double distance = Math.sqrt (dx*dx + dy*dy); double strength = GRAVITY * this.mass * other.mass / (distance * distance); double acceleration = strength / this.mass; forc
20、e.setLength (acceleration); addForce (force); /* * /适适用于一个给定身体重力这一套 */ public double getMass() return mass; 第四部分 心得体会经过一个星期对greenfoot学习,我们基础掌握了greenfoot比较基础编程方法。因为greenfoot是以java语言为基础游戏制作平台,它语言标准和java没有什么本质不一样,所以经过以往对java学习和认识,真正操作起来,并不是极难着手。只要上课认真听老师细心讲解,我们认为greenfoot这个软件还是很轻易上手,甚至在一些方面还比eclipse还轻易一点。最少在greenfoot里面,有类或对象能够直接拖动,不用在生成和调用了。看似简单轻易操作游戏背后,确实异常复杂算法。在网上查看了类似逻辑算法和代码,也是各有不一样,让我们更认识到了本身学习不足之处,也更深入产生了对游戏开发爱好。受益匪浅,感悟颇多。游戏开发是一个创新过程,不是一个人就能够完成,它更需要是团体合作,因为我们编程能力有待深入加强,所以就做了一个很一般项目。我们相信只要多用心、多努力一定能做出愈加好游戏。这次很感谢老师给我们提供这么一个平台,我们会加倍努力!