2015-11-08 74 views
1

創建Blackjack程序以使用外部Javascript文件在HTML頁面中顯示時遇到問題。如何創建Javascript 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

那麼是什麼問題?你是否收到錯誤或意外的行爲?請在您運行代碼時更新您的問題。 – Lima

回答

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

使用瀏覽器控制檯(通過開發工具訪問),以幫助在應用程序中的錯誤點,像這樣的錯誤出現亮如白晝。

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; 
} 
+0

所以我必須在創建函數後聲明變量? – Brandon

+0

是的。否則,你的代碼工作。 –

+0

我明白了,謝謝!否則,你是否注意到我的代碼中有其他錯誤?或者在我的Blackjack程序中缺少的代碼?我沒有經驗來發現這些東西。 – Brandon