Java实训报告 - greenfoot游戏制作(3)

2020-04-14 02:07

}

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;

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; addForce(movement);

GreenfootImage image = new GreenfootImage (size, size); image.setColor (color);

第 - 11 - 页 共 14 页

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) { 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); } } /**

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

第 - 12 - 页 共 14 页

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){

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 (distance * distance);

double acceleration = strength / this.mass; force.setLength (acceleration); addForce (force); } /**

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

第 - 13 - 页 共 14 页

/ */

public double getMass(){ return mass; } }

第四部分 心得体会

经过一个星期对greenfoot的学习,我们基本掌握了greenfoot的比较基础的编程方法。因为greenfoot是以java语言为基础的游戏制作平台,它的语言标准和java的没有什么本质的不同,所以通过以往对java的学习和认识,真正的操作起来,并不是很难着手。只要上课认真听老师细心的讲解,我们觉得greenfoot这个软件还是很容易上手的,甚至在某些方面还比eclipse还容易一点。至少在greenfoot里面,有的类或者对象可以直接拖动,不用在生成和调用了。

看似简单容易操作的游戏背后,确实异常复杂的算法。在网上查看了类似的逻辑算法和代码,也是各有不同,让我们更认识到了自身学习的不足之处,也更进一步产生了对游戏开发的兴趣。受益匪浅,感悟颇多。游戏开发是一个创新的过程,不是一个人就能够完成的,它更需要的是团队合作,由于我们的编程能力有待进一步加强,所以就做了一个很普通的项目。我们相信只要多用心、多努力一定能做出更好的游戏。这次很感谢老师给我们提供这样一个平台,我们会加倍努力的!

第 - 14 - 页 共 14 页


Java实训报告 - greenfoot游戏制作(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:一轮复习高中必修2课内文言文挖孔训练+答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: