选择随机图像,检查是否在特定范围内并相应显示

时间:2013-12-04 09:27:39

标签: javascript html

我需要画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>'
        );
    }
}

2 个答案:

答案 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
 }
}
@Samy:对,不要两次选卡; - )

注意:这里计算在第一次“冲洗”出现之前必须抽出5张牌的完整手牌的次数。从理论上讲,这应该平均为1 *(12/51)*(11/50)*(10/49)*(9/48),对于每次抽奖,作为“正”可能选择的数量,剩下的卡,如果你对此感兴趣的话。