极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 25645|回复: 5

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

[复制链接]
发表于 2013-5-9 10:03:39 | 显示全部楼层 |阅读模式
上课,这节课我们继续对数据结构的深入学习,这一次我们实践ArrayList实例。
  1. /**
  2. * 对象链表
  3. * by Daniel Shiffman.  
  4. *
  5. * 这个例子主要演示可如何使用ArraryList来存贮一个数量可变化的对象
  6. *  ArrayList它可以添加也可以删除
  7. *
  8. *
  9. * 点击鼠标添加小球
  10. */

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

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

  16.   //创建一个空的链表
  17.   balls = new ArrayList<Ball>();
  18.   
  19.   // 开始添加一个球进去
  20.   balls.add(new Ball(width/2, 0, ballWidth));
  21. }

  22. void draw() {
  23.   background(255);

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

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

  45. class Ball {//自定义类,球类
  46.   
  47.   float x;
  48.   float y;
  49.   float speed;
  50.   float gravity;
  51.   float w;
  52.   float life = 255;
  53.   
  54.   Ball(float tempX, float tempY, float tempW) {//球类的构造函数
  55.     x = tempX;
  56.     y = tempY;
  57.     w = tempW;
  58.     speed = 0;
  59.     gravity = 0.1;
  60.   }
  61.   
  62.     void move() {//移动函数
  63.     // 计算重力加速度
  64.     speed = speed + gravity;
  65.     // 计算新的位置
  66.     y = y + speed;
  67.     // 如果球的边界到达底部
  68.     // 速度方向改变
  69.     if (y > height) {
  70.       // 反弹
  71.       speed = speed * -0.8;
  72.       y = height;
  73.     }
  74.   }
  75.   
  76.   boolean finished() {//球淡出函数
  77.     // 球淡出
  78.     life--;
  79.     if (life < 0) {
  80.       return true;
  81.     } else {
  82.       return false;
  83.     }
  84.   }
  85.   
  86.   void display() {//显示函数
  87.     // Display the circle
  88.     fill(0,life);
  89.     //stroke(0,life);
  90.     ellipse(x,y,w,w);
  91.   }
  92. }  
复制代码


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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2013-5-9 16:56:48 | 显示全部楼层
貌似很高端
回复 支持 反对

使用道具 举报

发表于 2013-6-4 18:44:54 | 显示全部楼层
不错不错{:soso_e179:}
回复 支持 反对

使用道具 举报

发表于 2014-12-1 17:14:02 | 显示全部楼层
高端大气上档次,很不错的例子,值得我们去学习。。。。
回复 支持 反对

使用道具 举报

发表于 2014-12-6 19:47:59 | 显示全部楼层
看上去有点难度呢!好好学!
回复 支持 反对

使用道具 举报

发表于 2015-1-27 15:37:58 | 显示全部楼层
好东本西,就是有些不懂
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-28 20:49 , Processed in 0.043017 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表