有點不明白
balls[cnt++] =balls[j];
舉個例子,每秒循環(huán)20次,當?shù)?5次的時候開始有不符合條件的小球出現(xiàn),此時數(shù)組的情況是:
那balls[cnt]儲存的部分是后面深藍的嗎?
cnt計數(shù)應該是從0開始的,可是后面深藍的部分是從21開始的啊
push()和pop()都是對最后面的處理,這個不是去除不掉前面淺藍的部分嗎?
有點不明白
balls[cnt++] =balls[j];
舉個例子,每秒循環(huán)20次,當?shù)?5次的時候開始有不符合條件的小球出現(xiàn),此時數(shù)組的情況是:
那balls[cnt]儲存的部分是后面深藍的嗎?
cnt計數(shù)應該是從0開始的,可是后面深藍的部分是從21開始的啊
push()和pop()都是對最后面的處理,這個不是去除不掉前面淺藍的部分嗎?
2014-09-04
舉報
2014-09-04
根據(jù)你的示意圖,第一次運行balls[cnt++] =balls[j]的時候,就是:
balls[0] = balls[20],之后cnt++,cnt為1;
第二次的時候為 balls[1] = balls[21],,之后cnt++,cnt為2;
第三次的時候為 balls[2] = balls[22],,之后cnt++,cnt為3;
...
以此類推,
最后一次運行的時候,是:balls[179] = balls[199],,之后cnt++,cnt為180;
之后j=200 循環(huán)結(jié)束。此時,balls[0]-balls[179]為180個在屏幕內(nèi)的小球。balls[180]-balls[199]的數(shù)據(jù)沒有用了。
這樣的算法,在結(jié)果不規(guī)整的時候極為有用,比如 balls[3]-balls[21];balls[25]-balls[77];balls[80]-balls[128];balls[156]-balls[177]都顯示在屏內(nèi)時,你可以試著想想這個算法的操作結(jié)果。
最后的處理就是把尾巴部分balls[180]以后的小球給刪除掉了。
對于這個算法,確實配一個動畫現(xiàn)實更直觀。謝謝你的提問,