我正在用JavaScript構建二十一點遊戲。當用戶點擊「打我」時,一張卡被處理,並且卡的圖像被附加到current_hand
格。當一張卡使用戶超過21點時,該卡是而不是在警告告訴他們丟失之前附加到該div,因此他們不能看到他們的最後一張卡是什麼。我很難理解在添加卡之前爲什麼會發生警報。JS執行命令
有問題的代碼位於dealCard函數的最底部。任何人都可以解釋爲什麼發生這種情況以及如何解決它?
<body onload="startGame()">
<script type="text/javascript" src='cards.js' ></script>
<button id="start" onclick="addPlayer()">Start a Game</button>
<div id="current_hand"></div>
<button id="hit" onclick="dealCard()">Hit Me!</button>
<script>
var sum = 0
function startGame() {
deck = new DeckConstructor();
}
function addScore(rank) {
var points;
var result;
if (rank == "k" || rank == "q" || rank == "j" || rank == "a") {
points = 10;
} else {
points = Number(rank);
}
sum += points;
if (sum == 21) {
result = 'YOU WIN!';
} if (sum > 21) {
result = 'YOU LOSE';
} else {
result = sum;
}
return result;
}
function dealCard() {
var result;
var el = document.querySelector('div');
player.dealCard();
var suit = (player.hand[player.hand.length-1]['suit']);
var rank = (player.hand[player.hand.length-1]['rank']);
var src = suit[0]+rank
el.innerHTML += '<img id='+src+' src="cards-png/'+src+'.png"</img>';
^^^^^^^^^^^this line does not seem to execute when player loses^^^^^^^^^^^
result = addScore(rank)
if (result == "YOU LOSE") {
alert(result)
var el = document.querySelector('div');
sum = 0;
el.innerHTML = "";
}
return player.hand;
}
</script>
</body>
我試着走動的東西,使一個單獨的「重置」功能,報警功能等前致電我註釋掉一切if (result == "YOU LOSE")
卡後沒有顯示,所以我知道它的運作我的方式想要它。
如果可能是正確的,那只是玩家看到...... – Alfabravo
到@ Alfabravo的觀點太快了 - 如果你將警報包裝在'setTimeout()'中,它是否會在警報之前顯示該卡片? – Adam
圖像需要時間加載。你有沒有試過只顯示文字? – j08691