2011-03-01 4 views
1

dealHands()関数が呼び出されたとき、私のページが無限ループに入るのはなぜですか?何が起こるはずです、それはfetchCard()関数を呼び出す必要があります。その関数は0-51の間の乱数を作成し、discardPile配列内で乱数が存在しないことを確認するために配列discardPileを検索します。そうでなければ、fetchCard()関数はdealHands()関数に乱数を返して、allHands配列に代入/追加できるようにする必要があります。このスクリプトが失敗するか、無限ループに入る原因は何ですか?

//Variables 
    var discardPile = new Array(); 
    var allHands = new Array(); 

    //Prototypes 
    Array.prototype.exists = function(search) { 
     for(i=0;i<this.length;i++) 
      if (this[i] == search) return true; 
     return false; 
    } 

    //Functions (Only the ones the that are needed for this question) 
    function dealHands() { 
     var cardsOfHand = new Array() 
     for (x=0;x<=1;i++) { 
      for (y=0;y<=1;y++) { 
      cardsOfHand[y] = fetchCard(); 
      discardCard(cardsOfHand[y]); 
      } 
      allHands[x] = cardsOfHand 
     } 
    } 

    function discardCard(card) { 
    var totalCards = discardPile.length; 
     if (totalCard != 0) { totalCards++ } 
     discardPile[totalCards] = card; 
    } 

    function fetchCard() { 
     var usedCard = true; 
     while(usedCard == true) { 
      var randomCard = Math.floor(Math.random()*51); 
      usedCard = discardPile.exists(randomCard); 
     } 
     return randomCard; 
    } 

答えて

2

あなたがいないx++

 for (x=0;x<=1;i++) { 
+0

ありがとうございます。とても小さい。 – SgtOJ

+0

それはプログラミングの喜びです。 –

2

for (x=0;x<=1;**i**++)

がXである必要があり、あなたのループでi++を持っています。

+0

ありがとうございます。とても小さい。 – SgtOJ

+0

確かに、長いこと何かを見つめた後、すべての行列に行くのは簡単です。 –

関連する問題