2017-06-06 5 views
0

これは簡単な質問ですが、とにかく私はそれを求めています。基本的に私は、少ないコードではJavaScript(ノーjqueryの)中で、次のやろうとしている:配列内のすべての変数にアクセスする

var Ground = []; 

function gameLoop() 
{ 
    Gravity += 0.2 

    if(Ground[0].isCollided(Player)) 
    { 
     Player.dy = 0; 
     Gravity = 0; 
    } 
    if(Ground[1].isCollided(Player)) 
    { 
     Player.dy = 0; 
     Gravity = 0; 
    } 
    if(Ground[2].isCollided(Player)) 
    { 
     Player.dy = 0; 
     Gravity = 0; 
    } 

    Player.dy = Gravity; 
} 

を私はJavaScriptとHTML5のキャンバスを使用して作ってるんだ私のゲームのコードから非常にコードを簡素化しました。 あなたが見ているのは、私のグラウンドメカニックです。プレイヤーがグラウンドブロックに衝突すると、重力と一緒にプレーヤーの.dy値が変更されなくなります。

上記の内容は、私が通常どおりに行う方法ですが、50個のFallingM変数がある場合、大量の領域を占める可能性があります。

if(Ground[i].isCollided(Player)) 
{ 
    Player.dy = 0; 
    Gravity = 0; 
} 

グラウンド変数を何個追加しても関数が実行されるようにするにはどうすればいいですか?あらかじめありがとう!

+2

あなたはループの驚異を探しています。 – SLaks

+2

ループの土地をはるかに超えて、Array.prototype.someの神秘的な王国があります。 –

+0

[JavaScriptで配列をループ](https://stackoverflow.com/questions/3010840/loop)の可能な複製-through-array-in-javascript?rq = 1) –

答えて

2

あなたはループを使用する必要があります。

for(var x of Ground) { 
    if(x.isCollided(Player)) { 
     Player.dy = 0; 
     Gravity = 0; 
     break; 
    } 
} 
+0

@SterlingArcher申し訳ありませんが、自由にdownvoteしてください。ループの内容がわからない場合は、ジャバスクリプトを使用してゲームを開発するのはちょっと奇妙です。 –

+2

これは間違いありませんが、Stack Overflowの答えには邪魔する余地はありません。滞在して情報と専門家。また、今日のJS開発者は、配列を反復するためのループのようなものを使用しないで、 'for..of'を使用します。 –

+0

ある時点で、私たちはループが何であるかを知らないすべての開発者でした。 –

0

はジェダイの強さは、ループから流れ、覚えておいてください。しかし、注意してください。 Map, reduce,some。暗い面が彼らです。あなたが暗い道を始めると、あなたの運命は永遠に支配されます。

if (grounds.some(ground => ground.isCollided(player))) { 
    player.dy = 0; 
    gravity = 0; 
} 
関連する問題