【问题标题】:How to create Javascript Blackjack如何创建 Javascript 二十一点
【发布时间】:2016-02-08 22:36:10
【问题描述】:

我在使用外部 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);

【问题讨论】:

  • 那么问题出在哪里?您是否收到错误或意外行为?请用运行代码时发生的情况更新您的问题。

标签: javascript html blackjack


【解决方案1】:

您的交易函数有语法错误

//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;
}

使用浏览器中的控制台(可通过开发工具访问)来帮助发现应用程序中的错误,这样的错误会一夜暴富。

【讨论】:

    【解决方案2】:

    第 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;
    }
    

    【讨论】:

    • 所以我必须在创建函数后声明变量?
    • 我明白了,谢谢!否则,您是否注意到我的代码中有任何其他错误?或者我的二十一点计划中缺少的代码?我没有真正发现这些东西的经验。
    • 我认为你很高兴。在 Chrome 上使用开发控制台 Ctrl+Shift+I 尝试您的代码(如果需要,请查阅相关教程),祝您好运!如果您觉得我回答了您的问题,请点赞。
    猜你喜欢
    • 2015-02-08
    • 2012-07-27
    • 1970-01-01
    • 2012-06-29
    • 2012-10-08
    • 1970-01-01
    • 2012-10-17
    • 2012-10-16
    • 2015-06-18
    相关资源
    最近更新 更多