Processing有关数组的内容

一.数组

       数组是一组拥有一个共同名称的变量。数组非常有用,因为它们让工作变得更简单,无需为每个变量创建一个新的名称。这让代码变得更加简短、更容易理解、更方便更新。

1.1从变量到数组

       当一个程序只需要追踪一两个变量时,它不需要使用数组。因为事实上,如果添加一个没有必要使用的数组可能会让程序变得更加复杂。如果需要更多的元素时就需要使用数组。

1.2两个变量

       案例代码如图1

                                         图1

       保存并运行如图2

                     图2

1.3许多变量

       1.2案例中只有两个变量,运行时有两个图形,如果我们需要四个图形,那我们需要在之前的基础上添加更多的变量。

       案例代码如下

float x1=-20;

float x2=10;

float x3=50;

float x4=90;

void setup(){

  size(240,120);

  noStroke();

}

void draw(){

  background(0);

  x1+=0.5;

  x2+=0.5;

  x3+=0.5;

  x4+=0.5;

  arc(x1,20,40,40,0.52,5.76);

  arc(x2,50,40,40,0.52,5.76);

  arc(x3,70,40,40,0.52,5.76);

  arc(x4,90,40,40,0.52,5.76);

}

       保存并运行如图3

                        图3

       4个变量看起来还好,如果越来越多呢?这时候就需要引入数组了。

1.4使用数组,让代码变得简单。

案例代码如下

float x1=-20;

float x2=10;

float []x=new float[3000];

void setup(){

  size(240,120);

  noStroke();

  fill(255,200);

  for(int i=0;i<x.length;i++){

    x[i]=random(-1000,200);

}

}

void draw(){

  background(0);

 for(int i=0;i<x.length;i++){

  x[i]+=0.5;

  float y=i*0.4;

  arc(x[i],y,12,12,0.52,5.76);

}

}

       保存并运行如图4

                     图4

二.创建数组

       每一个在数组里面的项目被称为元素,每一个元素都有索引值,用来标记其在数组中的位置。索引值从数组的0开始计数。第一个元素在数组中的索引值为0,第二个是1.以此类推,如果有20个数值在数组中,那么最有一个元素的索引值为19.

2.1创建数组步骤

       (1)声明数组,定义数据类型。

       (2)利用关键字new创建数组,并且定义数组长度。

       (3)给每个元素赋值。

2.2给一个数组声明和赋值

       首先我们现在setup()函数的外面声明数组,然后再setup()函数里面创建并赋值。语法x[0]指向数组里面的第一个元素,语法x[1]指向第二个元素。

       案例代码如下:

int[ ] x;  //声明数组

void setup(){

size(200,200);

x=new int[2];//创建数组

x[0]=12;//给数组第一个元素赋值

x[1]=2;//给数组第二个元素赋值

}

2.3简化数组赋值

       案例代码如下:

int[ ] x=new int[2]; //声明和创建数组

void setup(){

size(200,200);

x[0]=12;//给数组第一个元素赋值

x[1]=2;//给数组第二个元素赋值

}

2.4同时声明、创建、赋值

       案例代码如下:

int[ ] x={12,2};  //声明、创建、赋值数组

void setup(){

size(200,200);

}

       注意:避免在draw()函数里创建数组,因为在每一帧上新建一个数组都会降低帧率。

2.5使用数组修改1.1案例

       修改后案例代码如图5

                                           图5

       保存并运行如图6

                图6

三.循环和数组

       写一个循环遍历数组中每一个元素。为了实现效果需要知道数组的长度。与数组相关关键词存储着这些元素的个数。我们使用数组的名称和点操作符(.)来获取这个值。

       例如:

int[ ] x=new int[2];//声明和创建数组

println(x.length);//在控制台中输出2

3.1一个循环里填入一个数组

       案例代码如图7

                                           图7

保存并运行如图8

                     图8

       在本例中数组先是在setup()函数中被一些随机的数字填充,接下来这些数字被用来设置draw()函数内的stroke()值。每运行一次,一组新的随机数字都会放入这个数组。

3.2追踪鼠标移动

       案例代码如下:

int num=60;

int[]x=new int[num];

int[]y=new int[num];

void setup(){

  size(240,120);

  noStroke();

}

void draw(){

  background(0);

  //从后往前复制数组

  for(int i=x.length-1;i>0;i--){

  x[i]=x[i-1];

  y[i]=y[i-1];

x[0]= mouseX;//设置第一个元素

y[0]= mouseY;//设置第一个元素

for(int i=0;i<x.length;i++){

  fill(i*4);

  ellipse(x[i],y[i],40,40);

}

}

       保存并运行如图9

                       图9

       本案例中,有两个数组用来存储鼠标状态,一个是存储x,一个存储y。这些数据存储鼠标在过去60帧内的位置。每出现新的一帧,保存最旧的x坐标、y坐标都会清除并被现在的mouseX和mouseY代替,新的值则是被添到数组的第一个位置。

3.3管理多个对象

案例代码如图下

JitterBug[] bugs=new JitterBug[33];

void setup(){

  size(240,120);

  for(int i=0;i<bugs.length;i++){

    float x=random(width);

    float y=random(height);

    int r=i+2;

  bugs[i]=new JitterBug(x,y,r);  

}

}

void draw(){

  for(int i=0;i<bugs.length;i++){

    bugs[i].move();

    bugs[i].display();

  }

}

class JitterBug{

  float x;

  float y;

  int diameter;

  float speed=2.5;

  JitterBug(float tempX,float tempY,int tempDiameter){

    x=tempX;

    y=tempY;

    diameter=tempDiameter;

  }

  void move(){

    x+=random(-speed,speed);

    y+=random(-speed,speed);

  }

  void display(){

    ellipse(x,y,diameter,diameter);

  }

}

       保存并运行如图10

                     图10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦之妹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值