如何创建Javascript Blackjack

时间:2015-11-08 00:47:24

标签: javascript html blackjack

我在使用外部Javascript文件创建要在HTML页面中显示的Blackjack程序时遇到问题。

我不需要为我的卡片贴上标签,而且我已经创建了一个总是在17-21之间的经销商。

我不确定我的代码的哪些部分是完全错误的,需要稍微调整一下。我相信我已经做了一些破坏了该计划的事情。

编辑:我已经编辑了许多你帮助过的修补程序,运行程序时出现的错误是,如果我使用警报显示分数/结果,运行时不会出现警报。

我的目标是将我的Javascript代码中的得分/卡片显示为我的HTML代码,如下所示:

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>JavaScript Blackjack</title>

    <link rel="stylesheet" type="text/css" href="CSSedit.css">

</head>

<body>

<script type="text/javascript" src="Blackjack.js">
</script>

<h1>Javascript Blackjack</h1>

    <p>Player's Hand: </p>
        <br>
    <p>Dealer's Score: </p>
    <p>Player's Score: </p>
        <br>
    <p>Game Results: </p>

</body>
</html>

我的javascript代码:

//function that returns a random card
var deal = function() {
  card = Math.floor(Math.random()*52+1);
  return card;
};

//function that returns dealers hand between 17-21
var dealerhand = function(x, y) {
    cardDealer = Math.floor(Math.random()*(21 - 17 + 1)+17);
    return cardDealer;
}

//declaring variables
var card1 = deal();
var card2 = deal();
var dealer = dealerhand();
var x = 17;
var y = 21;

//retrieving the value of the cards from the deal function
var getValue = function(card) {

    if(card % 13 === 0 || card % 13 === 11 || card % 13 === 12){
        return 10;   
    }
    if(card % 13 === 1){
        return 11;   
    }
    else{
        return card % 13;
    }
}


//scoring the cards dealt and determining the outcome
//using the if and else if statements    
function score() {

    if ((getValue(card1) + getValue(card2)) > 22){
        return "Busted!";
    }
    else if (getValue(cardDealer) > getValue(card1) + getValue(card2)){
        return "You lose!";
    }
    else if (getValue(cardDealer) === getValue(card1) + getValue(card2)){
        return "Draw!";
    }
    else{
        return getValue(card1) + getValue(card2);
    }
}

//Need to display results onto HTML page        
//alert("You have card " + card1 + " / " + card2 +
//        " Score: " + score(card1, card2);

2 个答案:

答案 0 :(得分:0)

您的交易功能存在语法错误

//function that returns dealers hand between 17-21
var dealerhand = function(17, 21) {
    card = Math.floor(Math.random()*(21 - 17 + 1)+17);
    return cardD; //should be return card;
}

使用浏览器中的控制台(可通过开发工具访问)来帮助发现应用程序中的错误,这样的错误会在白天显示出来。

答案 1 :(得分:0)

第14行有语法错误:

var dealerhand = function(17, 21) {
...

您只能将变量作为参数传递给函数,而17和21不是变量。一个简单的解决方法是:

var a = 17;
var b = 21;
var dealerhand = function(a, b) {
...

希望ES6的参数默认会清除这方面的一些困惑。

编辑:

第41行还有另一个错误:

if (getValue(card1) + getValue(card2) > 22{

应该是

if ((getValue(card1) + getValue(card2)) > 22) { ... }

编辑2:

另一个。在使用变量中的引用之前应该声明函数,因此这两个函数应该在声明变量注释之前出现。

// function that returns a random card
var deal = function() {
  card = Math.floor(Math.random()*52+1);
  return card;
};


// function that returns dealers hand between 17-21
var dealerhand = function(a, b) {
    card = Math.floor(Math.random()*(21 - 17 + 1)+17);
    return cardD;
}