1. 程式人生 > >Getting started with Processing 示例11-9 追隨鼠標移動

Getting started with Processing 示例11-9 追隨鼠標移動

總結 數組 繼續 並且 隨機數 tar The get for

程序片段

int num = 60;
int[] x = new int[num];
int[] y = new int[num];

void setup(){
size(240,120);
noStroke();
}

void draw(){
background(0);
//from back to from copy the array
for(int i = x.length-1;i>0;i--){
x[i] = x[i-1];
y[i] = y[i-1];
}
x[0] = mouseX;//set the first element
y[0] = mouseY;//set the first element
for(int i = 0;i<x.length;i++){
fill(i*4);
ellipse(x[i],y[i],40,40);
}
}

程序進程

首先程序中並沒有對數組進行初始化,所以一開始的循環中,即 for(int i=x.length-1;i>0;i--)每一個數組中的元素都是隨機數。
然後對x[0]進行賦值,即將現在的坐標值 mouseX 和 mouseY 賦值給 x[0],
然後執行下一個for 循環語句,這個時候,存儲的數據的顯示值並沒有實際的意義。

當程序進行下一次 draw() 的時候,這個時候,首先 x[0] 有了新的值,然後 x[1] 也有了確定的數值。

如此循環下去,六十次的程序進行下去之後,x[60]中每一個元素都有了數值。

然後繼續進行程序的時候,新的 x[0] 不斷被賦值,並且 最後一個 數組元素被前一個元素賦值,這裏因為數組的長度是一定的

,所以就相當於最後一個元素被丟棄,然後進入一個新的元素,即當前的 mouseX 值和 mouseY 值,然後程序不斷進行下去。

從 fill(i*4);這一條語句可以看出,當前鼠標所畫出的圓的顏色比較暗淡,但是在起初畫的圓的顏色比較明亮。

總結:

首先,先填充整個數組,方式是在執行循環之後不斷的對 x[0] 的賦值,那麽想一下,能不能先進行賦值然後再進行對數組進行循環呢,我認為是可以的。

當填滿這個數組之後,然後不斷利用數組長度的有限性,不斷進行丟棄舊的數組元素,進入新的數組元素,通過另外一個 for()循環在屏幕上顯示出來其路徑。





Getting started with Processing 示例11-9 追隨鼠標移動