2011-07-25 52 views
0

我正在嘗試編寫一個黑傑克遊戲的腳本,但遇到了一些問題。這是我已經包含在頭代碼:編寫二十一點遊戲腳本的問題

<script type="text/javascript"> 
var J = 10; 
var Q = 10; 
var K = 10; 
var A = 11; 
var deck = [1,2,3,4,5,6,7,8,9,10,J,Q,K,A]; 

function deal() { 
var test = "hello"; 
var f_card = Math.floor(Math.random() * deck.length); 
var s_card = Math.floor(Math.random() * deck.length); 
var card1 = deck[f_card]; 
var card2 = deck[s_card]; 

if (card1 == J) { 
    card1 = "Jack"; 
    } 
else if (card1 == Q) { 
    card1 = "Queen"; 
    } 
else if (card1 == K) { 
    card1 = "King" 
    } 
else if (card1 == A) { 
    card1 = "Ace" 
    } 

if (card2 == J) { 
    card2 = "Jack"; 
    } 
else if (card2 == Q) { 
    card2 = "Queen"; 
    } 
else if (card2 == K) { 
    card2 = "King" 
    } 
else if (card2 == A) { 
    card2 = "Ace" 
    } 

var bucket = card1 + ", " + card2; 
var res = f_card + s_card 
document.getElementById("result").innerHTML = bucket; 
document.getElementById("test").innerHTML = f_card + ", " + s_card; 
if (res == 22) { 
    alert("Blackjack!") 
    } 
} 
</script> 

主體內容如下:

<body> 
<form> 
    <input type="button" value ="Deal" onclick="deal()" /><br /><br /> 
</form> 
<div id = "result"> 
</div><br /> 
<div id = "test"> 
</div> 
</body> 

我添加了「測試」 div來看看有什麼交易內部發生,並且它看起來像「傑克」正被分配給上面的所有數組值。我怎麼能有其他的if語句處理?任何幫助都將不勝感激。

+0

這不是一個解決方案,但你的問題是,'Ĵ== == Q滿足K == 10',他們彼此相等,所以任何等於K的卡(理想的是國王)也等於J.並且你首先爲J測試。 – Gareth

回答

1

把你的J,Q,K,A引號:

var deck = [1,2,3,4,5,6,7,8,9,10,'J','Q','K','A']; 

if (card1 == 'J') { 
    card1 = "Jack"; 
    } 

等。

+0

或者更適合這個問題:'var deck = [1,2,3,4,5,6,7,8,9,10,'J','Q','K','A'] ;' 'if(card1 =='J'){ card1 = 10; }' – PeeHaa

+0

這工作。謝謝。 – dopatraman

1
if (card1 == J) { 
    card1 = "Jack"; 
    } 
else if (card1 == Q) { 
    card1 = "Queen"; 
    } 
else if (card1 == K) { 
    card1 = "King" 
    } 

比方說你有一個卡== 10(傑克/女王/王)

您與if試卷。

第一if被擊中,因爲10 ==Ĵ

即使是女王/王(也== 10)

因爲傑克是if語句其他IFS不打車子撞到

1

代替card1if else梯使用 「原卡ID」 card2,即

switch (f_card){ 
    case 10: card1 = "Jack"; 
      break; 
    case 11: card1 = "Queen"; 
      break; 
    case 12: card1 = "King"; 
      break; 
    case 13: card1 = "Ace"; 
      break; 
} 
+0

這絕對是更優雅。謝謝。 – dopatraman

+0

劃痕。根據這個解決方案國王>皇后區和皇后區>傑克等不應該發生...... – dopatraman

+0

@ user858962咦?這一定是其他一些問題,因爲這裏只是選擇「卡片名稱」的代碼。你缺少'if(f_card> 9)card1_value = 10;'某處或某些這樣的...... – ain