2013-02-23 19 views
1

最初數組保存默認值爲100.一旦敵人失去健康,那麼我想將默認值從100設置爲0.當所有數組元素的值都爲0那麼該消息將追蹤爲遊戲勝利。在數組中使用for循環的問題

var enemyHealth:Array = new Array(100,100,100,100,0); 

    for (var i = 0; i< enemyHealth.length; i++) 
    { 

     if (enemyHealth[i] == 0) 
     { 
      trace ("game win"); 
     } 

    } 

其實,問題是,如果數組元素的任何一個持有0值則跟蹤按摩作爲遊戲的勝利。

所以任何人都可以在這方面幫助我。

+0

你想要一個if語句來檢查所有元素是否爲0? – 2013-02-23 12:53:36

+0

是的沙爾瑪先生。像(0,0,0,0,0); //輸出遊戲勝利 – Chandu 2013-02-23 12:55:49

回答

1

您需要檢查所有元素,而不僅僅是一個:

var allZero:Boolean = true; 
var enemyHealth:Array = new Array(100,100,100,100,0); 

for (var i = 0; i< enemyHealth.length; i++) 
{ 

    if (enemyHealth[i] != 0) 
    { 
     allZero = false; 
     break; // We know it's not a win, so we can stop the loop early 
    } 

} 
if (allZero) { 
    trace ("game win"); 
} 
+0

感謝Mr dasblinkenlight對我的價值。 – Chandu 2013-02-25 06:07:53

1

我會做這樣的事情

var enemyHealth:Array = new Array(100,100,100,100,0); 

var isDead:Boolean = true; 
for (var i = 0; i< enemyHealth.length; i++) 
{ 

    if (enemyHealth[i] != 0) 
    { 
     isDead = false; 
     break; 
    } 
} 

if(isDead) 
{ 
    trace ("Game Win"); 
} 
1

你可以做什麼其他的應答者說或這樣的事情可能幫助你更多地獲得死亡的確切數量的敵人。

var enemyHealth:Array = new Array(100,100,100,100,0); 
var enemiesDead:int=0; 

    for (var i = 0; i< enemyHealth.length; i++) 
    { 

     if (enemyHealth[i] == 0) 
     { 
      enemiesDead++; 
     } 

    } 

if(enemiesDead==enemyHealth.length) 
{ 
    trace("Game Over"); 
} 
1

您可以使用every方法檢查數組(或向量)中的每個元素是否滿足標準。

const enemyHealth:Vector.<uint> = new <uint>[100,100,100,100,0]; 

const zeroHealth:Function = function(item:uint, index:int, vector:Vector.<uint>):Boolean { 
    return item === 0; 
} 

if (enemyHealth.every(zeroHealth)) { 
    trace("Game win") 
} 

我已經改變了arrayVector因爲他們更高效,並且可以指定元素的類型,但它也能正常工作與array