2010-10-13 108 views
0

我有一個構成2D網格的像素陣列,我想隨着時間的推移將這些像素向右和向左移動......但是我一直提出的循環效率很低,並且不允許在改變運動方面有很大的擴展。任何想法如何改善我已經有的東西將不勝感激。提高循環效率/可擴展性

while (true) 
{ 
    for (float i = 0; i < x; i++) 
    { 
    foreach (Pixel p in pixels) 
    { 
     p.move(10, 0); 
    } 
    } 
    for (float i = 0; i < x * 2; i++) 
    { 
    foreach (Pixel p in pixels) 
    { 
     p.move(-10, 0); 
    } 
    } 
    for (float i = 0; i < x; i++) 
    { 
    foreach (Pixel p in pixels) 
    { 
     p.move(10, 0); 
    } 
    } 
} 

編輯:在代碼對不起有一個誤差爲-10第一個for循環向右移動的所有像素所需的環路中間,第二移動他們回到原點,然後到左邊,第三循環然後將它們移回原點。

+0

你不應該使用浮動。 – SLaks 2010-10-13 14:58:53

+1

無限循環是你的第一個問題...... – JohnFx 2010-10-13 14:59:59

+0

目前只是爲了簡單起見,因爲x是一個浮點數,並且將被改變。 – philbert 2010-10-13 15:02:50

回答

0

難道你不能只使用一個循環,並使用int?三個環路似乎是多餘的

使用一個從0環到X * 2,進行運動選擇上的x值

喜歡的東西

for(int i = 0; i < x * 2; i++) 
{ 
    foreach(Pixel p in pixels) 
    { 
     if (i < x) 
     { 
      p.move(0.1, 0); 
      p.move(10, 0); 
      p.move(10, 0); 
     } 
     else 
      p.move(10,0) 
    }  
} 
1

您可以採用偏移變量使用在實際使用像素的代碼中。移動像素然後通過改變偏移量來完成,這是一行代碼。

+0

好主意謝謝(Y) – philbert 2010-10-13 15:37:21