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