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

下载本文档

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

文档简介

1、第 - 1 - 页 共 15 页Java 实训报告实训报告 Green foot 游戏程序设计班 级:微应 1211成 员:胡文亚吴 桐安徽水利水电职业技术学院安徽水利水电职业技术学院第 - 2 - 页 共 15 页第一部分第一部分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第四部分第四部分 心得体会第一部分第一部分 第 - 3 - 页 共 1

2、5 页1.1 设计目的设计目的Green foot 是针对那些想让自己熟悉如何使用 JAVA 的人而设计的,是一个功能完整的开发环境,可以使用 Java 方便地编写游戏和进行模拟。我们设计的是一款简单易操作的游戏, 我们希望能通过自己的所学知识把它分析开来,真正的了解它的本质。虽然我们的编程能力不是很强,但是我们组有信心,通过本学期对 JAVA 语言程序设计的学习 ,经过老师对 greenfoot 软件的介绍及实际举例、耐心的讲解 ,我们可以试着用 greenfoot 来制作简单的小游戏了,虽然不娴熟还有待提高,但是一些技术含量较低的小游戏还是很容易让我们掌握的。此次游戏程序设计的目的,主要是

3、通过greenfoot 来制作游戏来更好的掌握 java 语言。通过 greenfoot 这个平台,熟习 greenfoot 在制作游戏方面所需要的技巧,将自己的游戏尽可能多的运用所学到的技术,并且将在平时 java 课程上面学到的知识付诸于实践,并从 实践和实际的项目中提高自己的编程能力。找出自己的不足之处进行弥补。1 1. .2 2 设设计计要要求求:这次实训任务的课程设计的要求是选择greenfoot 软件作为我们游戏编程的平台。因为我们平时学习的就是java 语言,而 greenfoot 便是一个以 Java 语言为基础的游戏开发平台,所以在编程的过程中能够提高效率,也让我对 java

4、 语言和 greenfoot 之间衔接的关系有了更深了解,同样,也让我更加熟习了这个游戏开发平台的环境。1 1. .3 3 实实现现功功能能此款疯狂之音游戏的设计思路就是解放双手的弹奏, 通过向空白处随意放入不同颜色、不同大小的球 ,当球下落和上升时触碰到黄色板块会触发出不同的音调,当多个声音同时出现时 能够准确的分辨出来。 就成为了一首自己创作的优美神曲,并给大家带来娱乐,为听者增加不少乐趣。第 - 4 - 页 共 15 页1 1. .4 4 界界面面设设计计第二部分第二部分2.12.1 开发平台开发平台greenfoot 是一个以 Java 语言为基础的游戏开发平台,编程的过程中能够提高效

5、率,而且对象的可视化和对象的交互性 比较清晰。2.22.2 环境配置环境配置第 - 5 - 页 共 15 页1、计算机的环境变量需要设置,计算机需要安装 JDK 版本为 1.6。由于 greenfoot 需要绑定 JDK。2、greenfoot 的安装,需要到官网上下载正确的 greenfoot 版本,安装后需要测试时候可以使用,是否与 JDK 绑定。第三部分第三部分3 3. .1 1 S Sp pa ac ce e 代代码码import greenfoot.*; / (World, Actor, GreenfootImage, Greenfoot and MouseInfo)import j

6、ava.awt.Color;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()第 - 6 - 页

7、 共 15 页 int i = 0; while (i 0) int 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.

8、getRandomNumber(getHeight(); /取长度 int 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-; 第 - 7 - 页 共 15 页3 3. .2 2 O Ob bs st ta ac cl l

9、e e 代代码码import greenfoot.*; / (World, Actor, GreenfootImage, Greenfoot and MouseInfo)public class Obstacle extends Actor private String sound; private boolean touched = false; /* *创建一个具有相关的声音文件的一个障碍。 */ public Obstacle(String soundFile) sound = soundFile;/声音档 /* *每一次循环,检查是否被击中。如果我们发挥我们的声音。 */ public

10、 void act() Actor body = getOneIntersectingObject(Body.class); if (touched & body = null) /不用触碰 touched = false; setImage (block.png); else if (!touched & body != null) /暂时的触碰 touched = true; setImage (block-light.png); Greenfoot.playSound(sound); /播放声音第 - 8 - 页 共 15 页 public void playSound(

11、) Greenfoot.playSound(sound); 3.33.3 SmoothMoverSmoothMover 代码代码import greenfoot.*;/ (World,Actor,GreenfootImage,and Greenfoot)/* *一个变化的一个Actor,保持精确的位置(使用双打的坐标而不是整数) 。它还保持当*前的运动矢量的运动形式。*/public abstract class SmoothMover extends Actor private Vector movement; private double exactX; private double ex

12、actY; public SmoothMover() this(new Vector(); /* * 创造新事物以给定的速度初始化的 */ public SmoothMover(Vector movement) this.movement = movement; /* * 在当前的运动方向移动 */第 - 9 - 页 共 15 页 public void move() exactX = exactX + movement.getX(); exactY = exactY + movement.getY(); super.setLocation(int) exactX, (int) exactY)

13、; /* * 设置位置使用精确坐标 (double) */ public void setLocation(double x, double y) exactX = x; exactY = y; super.setLocation(int) x, (int) y); /* * 设置的位置。重新定义标准的 Greenfoot 方法来确定 *确切的坐标更新同步 */ public void setLocation(int x, int y) exactX = x; exactY = y; super.setLocation(x, y); /* * 返回确切的 x */ public double

14、getExactX() return exactX; /*第 - 10 - 页 共 15 页 * Return the exact y co-ordinate (as a double).返回确切的y */ public double getExactY() return exactY; /* *修改当前的运动通过添加一个新的向量到现有的运动 */ public void addForce(Vector force) movement.add(force); /* *加速这种原动力的速度给定的因素。 (因子小于 1 * 减速)。方向保持不变。 */ public void accelerate

15、(double factor) movement.scale(factor); if (movement.getLength() 0.15) movement.setNeutral(); /* * 返回这个球的速度 . */ public double getSpeed() return movement.getLength(); /*第 - 11 - 页 共 15 页 * 返回该对象的当前运动 */ public Vector getMovement() return movement; 3 3. .3 3 B Bo od dy y 代代码码import greenfoot.*; / (Wo

16、rld, 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; private static final Color defaultColor = new Color(255, 216, 0); / 黄色的球 privat

17、e double mass; /* *.构造一个球是默认大小,方向,运动,和颜色 */ public Body() this (20, 300, new Vector(0, 0.0), defaultColor); /* * 构造一个球是默认大小,方向,运动,和颜色第 - 12 - 页 共 15 页 */public Body(int size, double mass, Vector movement, Color color) this.mass = mass; addForce(movement); GreenfootImage image = new GreenfootImage (s

18、ize, size); image.setColor (color); image.fillOval (0, 0, size-1, size-1); setImage (image); /* *行为。那就是将引力部份从所有其他体的周围,然后移动。 */ public void act() applyForces(); move(); bounceAtEdge(); /* * 检查是否到达背景的边缘,如果是就反弹 . */ private void bounceAtEdge() if (getX() = 0 | getX() = getWorld().getWidth()-1) setLocat

19、ion(double)getX(), (double)getY(); getMovement().revertHorizontal(); accelerate(0.9); else if (getY() = 0 | getY() = getWorld().getHeight()-1) setLocation(double)getX(), (double)getY();第 - 13 - 页 共 15 页 getMovement().revertVertical(); accelerate(0.9); /* *应用重力的力量从这个宇宙中其他天体 */ private void applyForce

20、s() 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) double 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 / 第 - 14 -

温馨提示

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

评论

0/150

提交评论