【发布时间】:2014-04-30 03:24:09
【问题描述】:
我正在学习用 javascript 编程,以便可以向我的网站添加一些功能。我正在尝试在浏览器中制作一个简单的二十一点游戏,现在我不知道发生了什么。
我有 2 个函数:第一个函数 randomCard() 生成随机卡片,第二个函数 deal() 使用 for 循环两次使用第一个函数并将卡片存储到数组中。我宁愿不合并这些功能,因为将来还有其他地方将它们分开会更方便。我在两个对象上使用 deal 函数,用户和经销商的方法手。
现在问题来了,当我将这些值记录到控制台时(不是最终值,仅用于测试),它们每次都是相同的,我不知道为什么。但是当我只记录deal() 函数时,它们都是不同的(见脚本底部)。
我想不通,非常感谢帮助,这是我到目前为止的所有代码。
我正在使用 jQuery 1.11.0。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Blackjack Game</title>
</head>
<body>
<button type="submit" id="deal">Deal</button>
<p class="user">
Your cards:
</p>
<p class="dealer">
The dealers cards:
</p>
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script>
$(document).ready(function() {
// gives the user and dealer a DOM element
var $user_cards = $('.user');
var $dealer_cards = $('.dealer');
// hides the DOM elements until the game has started
$($user_cards).hide();
$($dealer_cards).hide();
// jQuery var for DOM element to start the game
var $deal = $('#deal');
// var to track if the deal button has been clicked
var click = 0;
function randomCard() {
// random number between 0 and 10
var j = Math.random() * 10;
// round that number into a var called card
var card = Math.round(j);
// if card is 0, assign a J Q or K by making a random number again
if (card === 0) {
//another random number
var k = Math.random() * 10;
// checks random number and assign J Q or K
if (k <= 4) {
card = 'J';
} else if (k <= 7) {
card = 'Q';
}
else {
card = 'K';
}
}
// value of the function is a single card
return card;
}
// empty array to store cards
var cards = [];
function deal() {
// var to start for loop
var i = 0;
// start for loop
for (i; i < 2; i++) {
// add a random card to the i^th index of cards
cards[i] = randomCard();
}
// value fo function is array of two cards
return cards;
}
$($deal).click(function() {
// make the game start check = 1
click++;
// check to see if the game started
if (click === 1) {
// make the button disappear when game has started
$($deal).fadeToggle('fast');
// makes the player DOM elements appear when game is started
$($user_cards).fadeToggle(2000);
$($dealer_cards).fadeToggle(2000);
}
// make an object for the user and store hand under user.hand
var user = {
hand: deal()
};
// make an object for the dealer and store hand under dealer.hand
var dealer = {
hand: deal()
};
console.log(user.hand + " " + dealer.hand);
console.log(deal());
console.log(deal());
console.log(deal());
console.log(deal());
console.log(deal());
console.log(deal());
}); // $deal.click() end
}); // document.ready() end
</script>
</body>
</html>
【问题讨论】:
-
仅供参考,没有理由这样做
$($user_cards).hide();。你可以做$user_cards.hide();。.hide()是一个 jQuery 对象的方法,$user_cards已经是一个 jQuery 对象,所以你可以直接使用它。无需通过$($user_cards)创建另一个 jQuery 对象。
标签: javascript jquery logging web-applications