我需要画5张牌,并检查它们是否属于同一类型( Heart , Spade 等)
我从1-52
(其中1-13
是心等)给了他们名字。
现在我需要创建一个JavaScript函数,如果它们属于同一类型(例如.spade ),则从这52个检查中选择5张卡
如果这是真的,那么在表格中显示这些卡片,否则,重复循环直到成功,我需要显示循环重复的次数。
我尝试了一些方法,但由于我对JavaScript知之甚少,所以我陷入困境。有人可以帮帮我吗?
这是我尝试过的:
function flush() {
for (var picked_card = 0; picked_card < 6; picked_card++) {
var picked_card = Math.floor(Math.random() * 52) + 1;
document.write(
'<table>'
'<tr>'
'<td>'
'<img src="' + picked_card + '" '.jpg />'
'</td>'
);
}
}
答案 0 :(得分:0)
你走了:
var hand = [];
var loopCount = 0;
while (hand.length < 5) {
var picked_card = Math.floor(Math.random() * 52) + 1;
var handEmpty = hand.length == 0;
if (handEmpty) {
hand.push(picked_card);
}
else {
var cardInHand = hand.indexOf(picked_card) != -1;
var handColor = Math.floor((hand[0] - 1) / 13);
var cardColor = Math.floor((picked_card - 1) / 13);
if (!cardInHand && cardColor == handColor) {
hand.push(picked_card);
}
else {
loopCount++;
}
}
}
并显示:
document.write('<table><tbody><tr>');
for(i in hand) {
document.write('<td><img src="' + hand[i] + '.jpg" /></td>');
}
document.write('</tr></tbody></table>');
答案 1 :(得分:0)
要查找卡片类型,请使用0..51的名称对“卡片名称”的13进行整数除法。对于0..12你将获得0:心脏,13..25 1:Spade等。同时选择相同类型的牌;重新尝试另一种类型的第一张卡片。当你一起拿到5张牌时,你已经完成了。
function drawFlush() {
for(var count = 0;; count++) {
var type = -1;
var picked_cards = [];
while(picked_cards.length < 5) {
var card;
do {
card = Math.floor(Math.random() * 52);
} while( -1 != picked_cards.indexOf(card));
var card_type = Math.floor( card / 13);
if( -1 == type) {
type = card_type;
} else {
if(card_type != type) {
break;
}
}
picked_cards.push(card);
}
}
return {
number_of_tries : count,
picked_cards : picked_cards
}
}
注意:这里计算在第一次“冲洗”出现之前必须抽出5张牌的完整手牌的次数。从理论上讲,这应该平均为1 *(12/51)*(11/50)*(10/49)*(9/48),对于每次抽奖,作为“正”可能选择的数量,剩下的卡,如果你对此感兴趣的话。