为二十一点游戏编写脚本的问题

时间:2011-07-25 22:35:45

标签: javascript

我正在尝试为Black Jack游戏编写脚本,但遇到了一些问题。这是我在头脑中包含的代码:

<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>

我添加了“test”div以查看交易中发生了什么,看起来“Jack”被分配给9以上的所有数组值。如何处理其他if语句?任何帮助都会非常感激。

3 个答案:

答案 0 :(得分:1)

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

假设你有一张卡== 10(杰克/女王/国王)

您使用if进行测试。

第一个if被命中,因为10 == J

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

因为杰克在if语句中被击中而其他ifs没有被运行

答案 1 :(得分: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";
    }

等。

答案 2 :(得分:1)

而不是card1梯形图中的card2if else使用“原始卡ID”,即

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