极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 22891|回复: 6

Processing之旅-----【9课,Table数据实验课】

[复制链接]
发表于 2013-5-10 17:05:22 | 显示全部楼层 |阅读模式
同学们,上课!今天进行Table数据类型的实践课!
[pre lang="rocessing" line="1"]/**
* 读取Table数据
* by Daniel Shiffman.  
*
* 这个例子示范了如何使用 loadTable()
* 去取出数据从CSV文件中并生成一个对象从数据中
* CSV是(逗号分隔值)的英文缩写,通常都是纯文本文件。
*建议使用WORDPAD或是记事本(NOTE)来开启,
*再则先另存新档后用EXCEL开启,也是方法之一。
*开启后的CSV档包含了四或五个字段(部分),
*由左至右分别记载着:文件名称(XXXX.JPG)、档案大小(以BYTE为单位)、
*CRC32值(八个英文字母或数字组成)、档案路径和档案内容描述。
*而其中第四栏「档案路径」因为每个人储存整理图档的方式不同,
*所以本栏通常不存在,而一般有含有「档案路径」这栏的CSV档,又称为ECSV档案。
*
* 本例中 CSV 文件内容是这样的:
*
   x,y,diameter,name
   160,103,43.19838,Happy
   372,137,52.42526,Sad
   273,235,61.14072,Joyous
   121,179,44.758068,Melancholy
*/

// 定义了一个Bubble类型的数组
Bubble[] bubbles;
// 定义了一个表=Table对象的实例。
Table table;

void setup() {
  size(640, 360);//设置窗口大小
  loadData();//这个是调用的函数不是系统函数,是自定义函数。
}

void draw() {
  background(255);
  // 显示所有的气泡
  for (Bubble b : bubbles) {//这个循环相当于for(int i=0;i《bubbles。lenght;i++)
    b.display();
    b.rollover(mouseX, mouseY);
  }

  textAlign(LEFT);//文字输出左对齐
  fill(0);
  text("Click to add bubbles.", 10, height-10);
}

void loadData() {
  //读取CSV文件并将其中的数据导入Table对象中
  // header"选项指示该文件的标题行
  table = loadTable("data.csv","header");

  // 这个bubbles数组的大小是根据CSV文件的行数决定的
    bubbles = new Bubble[table.getRowCount()];

  // 你可以循环访问表中的所有行通过游标
  int rowCount = 0;
  for (TableRow row : table.rows()) {
    // 你可以访问每一行通过列字段(或目录)
    float x = row.getFloat("x");
    float y = row.getFloat("y");
    float d = row.getFloat("diameter");
    String n = row.getString("name");
    // 让气泡对象接受数据
    bubbles[rowCount] = new Bubble(x, y, d, n);
    rowCount++;//行计数器自加1
  }  

}

void mousePressed() {
  // 创建一个新的行
  TableRow row = table.addRow();
  // 保存值
  row.setFloat("x", mouseX);
  row.setFloat("y", mouseY);
  row.setFloat("diameter", random(40, 80));
  row.setString("name", "Blah");

  // 写进csv文件中
  saveTable(table,"data/data.csv");
  // 然后再从新读一遍csv文件
  loadData();
}
//一个气泡类
class Bubble {

  float x,y;//位置
  float diameter;//直径
  String name;//名字
  
  boolean over = false;
  
  // 构造函数,创建气泡用的。
  Bubble(float x_, float y_, float diameter_, String s) {
    x = x_;
    y = y_;
    diameter = diameter_;
    name = s;
  }
  
  // 当鼠标在气泡上
  void rollover(float px, float py) {
    float d = dist(px,py,x,y);
    if (d < diameter/2) {
      over = true;
    } else {
      over = false;
    }
  }
  
  // 显示气泡
  void display() {
    stroke(0);
    strokeWeight(2);
    noFill();
    ellipse(x,y,diameter,diameter);
    if (over) {
      fill(0);
      textAlign(CENTER);
      text(name,x,y+diameter/2+20);
    }
  }
}[/code]

效果很明显,Table将永久的保存你画过的圆,那么这节课就上到这里。下课!{:soso__13766225770624999893_7:}

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2013-5-10 21:49:27 | 显示全部楼层
总感觉,很快能看到纸质书籍了。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-10 21:58:21 | 显示全部楼层
迷你强 发表于 2013-5-10 21:49
总感觉,很快能看到纸质书籍了。。。

什么纸质书籍?
回复 支持 反对

使用道具 举报

发表于 2013-5-11 09:33:53 | 显示全部楼层
{:soso_e113:}嘿嘿嘿
回复 支持 反对

使用道具 举报

发表于 2014-12-1 16:23:21 | 显示全部楼层
继续顶~~~~~~~~
回复 支持 反对

使用道具 举报

发表于 2015-1-14 17:44:18 | 显示全部楼层
2015接触processing
回复 支持 反对

使用道具 举报

发表于 2015-1-14 17:44:48 | 显示全部楼层
完善processing,努力!!!!!!!!!!!!!!!!!
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-4-19 04:20 , Processed in 0.043983 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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