2013-06-04 27 views
0

我正在嘗試創建一個套牌併爲面卡創建特殊規則,但此while循環似乎沒有做任何事,即使我覺得我擁有一切正確的東西。請幫忙。Javascript二十一點甲板創作

//creates the deck 
deck = []; 
Ace = 1; 
Jack = 10; 
Queen = 10; 
King = 10; 
for(i = 1; i <= 52; i++) { 
    deck[i] = i; 
} 
while (i < deck.length) { 
    if(deck[i] == 1 || deck[i] == 14 || deck[i] == 27 || deck[i] == 40) { 
     deck[i] = Ace; 
    } 
    i++; 
} 
alert(deck); 
+0

你忘了聲明_all_你的變量,危險! – elclanrs

+0

爲相同的值初始化三個不同的變量看起來很奇怪。你知道他們是難以區分的(即'女王===國王')? – Bergi

回答

4

for循環後,i將是deck.length,所以永遠不會進入你的while循環。它應該是另一個for循環。

另外,請用var聲明您的變量。隱含的全局變量很糟糕!

此外,你可以檢查其餘的時間除以13獲得ace。你可以在同一個循環中完成兩個步驟。

var deck = []; 
var Ace = 1; 
var Jack = 10; 
var Queen = 10; 
var King = 10; 

for(var i = 1; i <= 52; i++) { 
    if(i % 13 === 1) { 
     deck[i] = Ace; 
    } else { 
     deck[i] = i; 
    } 
} 

alert(deck); 
+0

隱式全局變量有什麼問題? – user2449973

+0

@ user2449973:他們犯的錯誤難以發現(這是一個錯字還是我只是隱式地聲明這個變量?);他們不以嚴格的模式工作;如果你想把你的代碼包裝在一個函數中,它將無法正常工作;它比聲明變量要慢。 – Ryan

+0

啊,謝謝。最後一件事,我從來沒有很好的模數。不會13/13 = 1,餘數是0嗎? – user2449973

1

您的while循環未執行。在for循環之後,我會得到53的值,所以你會立刻進入警戒狀態。

此外,javascript數組從0開始。您應該也組合循環。當你可以在第一個循環中完成時,沒有理由再次跳過跳過的項目。