我正试图创建一个卡经销商,处理5卡时,一个按钮是在网页上点击。
基本上,我想创建一个有2个属性的卡片对象,"花色"和"值",一旦完成,我想创建一个有52个卡片对象的数组,这些卡片对象具有随机的花色和值,但理想情况下它们应该是唯一的。我希望在单击按钮时选择并显示5。我没有从我的按钮调用的函数中得到任何输出,我真的不明白为什么。
我真的是一个新的Javascript和教授教介绍类我现在是不是很有帮助,不幸的是。
下面是我目前的代码:
<head>
<script src="https://code.jquery.com/jquery-3.6.3.min.js"></script>
</head>
<body>
<h1>Robo Dealer</h1>
<button onclick="dealHand();">Deal Hand</button>
<hr />
<div id="card_hand"></div>
<script>
// Declaring arrays for suits and values
const suits = ["Hearts", "Spades", "Clubs", "Diamonds"];
const values = [
"Ace",
2,
3,
4,
5,
6,
7,
8,
9,
10,
"Jack",
"Queen",
"King",
];
// Creating the card object
function cards(value, suit) {
this.value = value;
this.suit = suit;
}
// Creating array of 52 card objects
var deck = new Array();
function getDeck() {
for (i = 0; i < 52; i++) {
let cardObject = new cards(
values[Math.random()],
suits[Math.random()]
);
deck.push(cardObject);
}
return deck;
}
// Dealing hand of 5 card objects / outputting it to HTML
const dealHand = () => {
for (i = 0; i < 6; i++) {
$("#card_hand").html(getDeck());
}
return false; // prevent page reload
};
</script>
</body>
2条答案
按热度按时间mftmpeh81#
下面是一个整理过的脚本,它包含一个Durstenfeld Shuffle 和一个包含52张牌的简单数组。 Shuffle 后的前5张牌将被分发:
ogq8wdun2#
好的,让我们看看如何使用对象来实现这一点。目前,您只是迭代了52次,并随机选择花色/值。您可能应该做的是,首先通过迭代花色和值来创建一副牌,对它们进行 Shuffle ,然后返回前五张牌(就像赌场所做的那样)。
这里有一些代码,你们可能不熟悉,但我会在最后加上一些注解和一些文档链接,我确实有点忘乎所以,但我希望其中一些是有用的。
其他文件
map
join