yangfanconan 发表于 2013-5-9 10:03:39

Processing之旅-----【6课,ArrayList实验课】

上课,这节课我们继续对数据结构的深入学习,这一次我们实践ArrayList实例。
/**
* 对象链表
* by Daniel Shiffman.
*
* 这个例子主要演示可如何使用ArraryList来存贮一个数量可变化的对象
*ArrayList它可以添加也可以删除
*
*
* 点击鼠标添加小球
*/

ArrayList<Ball> balls;//定义了一个对象类型为《ball》的链表 对象 balls 【超级绕口】
int ballWidth = 48;//定义了一个整形变量ballwidth 球宽

void setup() {
size(640, 360);// 设置了窗口大小
noStroke();//图形都没有边框

//创建一个空的链表
balls = new ArrayList<Ball>();

// 开始添加一个球进去
balls.add(new Ball(width/2, 0, ballWidth));
}

void draw() {
background(255);

// 对于一个数组, 我们说balls.length是数组的长度(元素数), 对于一个ArrayList, 我们说balls.size()是链表的长度(元素数)
// ArrayList的长度是动态的
// 请注意,在ArrayList我们采用的是后序遍历。
// 这是因为我们要从中删除元素
for (int i = balls.size()-1; i >= 0; i--) {
    // 一个 ArrayList 并不知道我们存贮的是什么,所以我们要显示的声明,并接受其中的元素。
    Ball ball = balls.get(i);
    ball.move();
    ball.display();
    if (ball.finished()) {
      //remove()是删除元素的函数
      balls.remove(i);
    }
   
}

}

void mousePressed() {
// 添加一个新球
balls.add(new Ball(mouseX, mouseY, ballWidth));
}

class Ball {//自定义类,球类

float x;
float y;
float speed;
float gravity;
float w;
float life = 255;

Ball(float tempX, float tempY, float tempW) {//球类的构造函数
    x = tempX;
    y = tempY;
    w = tempW;
    speed = 0;
    gravity = 0.1;
}

    void move() {//移动函数
    // 计算重力加速度
    speed = speed + gravity;
    // 计算新的位置
    y = y + speed;
    // 如果球的边界到达底部
    // 速度方向改变
    if (y > height) {
      // 反弹
      speed = speed * -0.8;
      y = height;
    }
}

boolean finished() {//球淡出函数
    // 球淡出
    life--;
    if (life < 0) {
      return true;
    } else {
      return false;
    }
}

void display() {//显示函数
    // Display the circle
    fill(0,life);
    //stroke(0,life);
    ellipse(x,y,w,w);
}
}

那么,这节课就上到这里。下课。{:soso__13766225770624999893_3:}

迷你强 发表于 2013-5-9 16:56:48

:funk:貌似很高端

xuwenhua625 发表于 2013-6-4 18:44:54

不错不错{:soso_e179:}

gytzzss 发表于 2014-12-1 17:14:02

高端大气上档次,很不错的例子,值得我们去学习。。。。

boo649687421 发表于 2014-12-6 19:47:59

看上去有点难度呢!好好学!

yhy630 发表于 2015-1-27 15:37:58

好东本西,就是有些不懂
页: [1]
查看完整版本: Processing之旅-----【6课,ArrayList实验课】