Getting started with Processing 示例11-9 追隨鼠標移動
阿新 • • 發佈:2018-12-20
總結 數組 繼續 並且 隨機數 tar The get for
,所以就相當於最後一個元素被丟棄,然後進入一個新的元素,即當前的 mouseX 值和 mouseY 值,然後程序不斷進行下去。
程序片段
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] 不斷被賦值,並且 最後一個 數組元素被前一個元素賦值,這裏因為數組的長度是一定的
從 fill(i*4);這一條語句可以看出,當前鼠標所畫出的圓的顏色比較暗淡,但是在起初畫的圓的顏色比較明亮。
總結:
首先,先填充整個數組,方式是在執行循環之後不斷的對 x[0] 的賦值,那麽想一下,能不能先進行賦值然後再進行對數組進行循環呢,我認為是可以的。
當填滿這個數組之後,然後不斷利用數組長度的有限性,不斷進行丟棄舊的數組元素,進入新的數組元素,通過另外一個 for()循環在屏幕上顯示出來其路徑。
Getting started with Processing 示例11-9 追隨鼠標移動