2014-09-30 59 views
0

我在想如果有一種方法可以減小此循環的大小。我正在以+10爲增量查找條件,然後相應地加載一個圖像,同樣在X,Y座標爲前一個+10。提前致謝。縮小「if-else」循環的大小

if (xpos >= 80){ 
    image(imgRainCloud, 90, 10); 
    } 
    if (xpos >= 90){ 
    image(imgBlock, 90, 10); 
    image(imgRainCloud, 100, 10); 
    } 
    if(xpos >= 100){ 
    image(imgBlock, 100, 10); 
    image(imgRainCloud, 110, 10); 
    } 
    if(xpos >= 110){ 
    image(imgBlock, 110, 10); 
    image(imgRainCloud, 120, 10); 
    } 
    if(xpos >= 120){ 
    image(imgBlock, 120, 10); 
    image(imgRainCloud, 130, 10); 
    } 
    if(xpos >= 130){ 
    image(imgBlock, 130, 10); 
    image(imgRainCloud, 140, 10); 
    } 
    if(xpos >= 140){ 
    image(imgBlock, 140, 10); 
    image(imgRainCloud, 150, 10); 
    } 
    else(xpos < 80){ 
    image(imgBlock, 0, 0); 
    image(imgRainCloud, 0, 0); 
    } 
+11

'if else..' is not a loop .. – Rustam 2014-09-30 15:00:48

+2

我必須說我沒有聽說過「if-​​else循環」和語言「C/Java」。 – 5gon12eder 2014-09-30 15:01:59

+2

即使符合匹配條件,您也沒有使用else語句,因此每行都會被評估。 – scrappedcola 2014-09-30 15:02:12

回答

0

可以打破他們如果和其他人分成不同的組 如:

if (xpos > 110) { 

    image(imgBlock, 110, 10); 
    image(imgRainCloud, 120, 10); 
    if (xpos > 120) { 

     image(imgBlock, 120, 10); 
     image(imgRainCloud, 130, 10); 

    } 

    if (xpos > 130) { 

     image(imgBlock, 130, 10); 
     image(imgRainCloud, 140, 10); 

    } 

    if (xpos > 140) { 

     image(imgBlock, 140, 10); 
     image(imgRainCloud, 150, 10); 

    } 

} else { 

    if (xpos >= 80) { 

     image(imgRainCloud, 90, 10); 

    } 

    if (xpos >= 90) { 

     image(imgBlock, 90, 10); 
     image(imgRainCloud, 100, 10); 

    } 

    if (xpos > 100) { 

     image(imgBlock, 100, 10); 
     image(imgRainCloud, 110, 10); 

    } 

} 
7
if (xpos >= 80){ 
    image(imgRainCloud, 90, 10); 

    for (int i = 90; xpos >= i; i+=10) 
    { 
     image(imgBlock, i, 10); 
     image(imgRainCloud, i+10, 10); 
    } 
} 
else 
{ 
    image(imgBlock, 0, 0); 
    image(imgRainCloud, 0, 0); 
} 
0

假設XPOS是一個整數,並假設您的代碼示例中缺少了一堆else語句,您可以執行以下操作:

int range = xpos/10; 
if (range > 14) 
    range = 14; 
if (range >= 8) 
{ 
    image(imgBlock, range*10, 10); 
    image(imgRainCloud, (range+1)*10, 10); 
} 
else 
{ 
    image(imgBlock, 0, 0); 
    image(imgRainCloud, 0, 0); 
} 

您也可以用十分之一分開,然後使用一個switch語句。