2016-11-29 51 views
0

我需要帮助!我正在制作一个按钮,它可以发出五张随机卡片,但是不能有任何重复的卡片。现在我用下面的代码得到五张随机卡片,但有时候会有重复的卡片。如何编辑代码以使其不存在重复?谢谢!在交易手牌时没有提及

enter code here 
"use strict"; 

var rank = { 
"1": "Ace", 
"2": "Deuce", 
"3": "Tray", 
"4": "4", 
"5": "5", 
"6": "6", 
"7": "7", 
"8": "8", 
"9": "9", 
"10": "10", 
"11": "Jack", 
"12": "Queen", 
"13": "King", 
}; 

function getRank(i) { 
return rank[i] 
}; 

var suits = { 
"1": "Hearts", 
"2": "Spades", 
"3": "Diamonds", 
"4": "Clubs", 
}; 

function getSuit(i) { 
return suits[i] 
}; 

var main = function() { 

console.log(this.id); 

if (this.id == "btn3") { 
    var random1 = Math.floor(Math.random() * 13) + 1; 
    var random2 = Math.floor(Math.random() * 4) + 1; 
    var random3 = Math.floor(Math.random() * 13) + 1; 
    var random4 = Math.floor(Math.random() * 4) + 1 
    var random5 = Math.floor(Math.random() * 13) + 1; 
    var random6 = Math.floor(Math.random() * 4) + 1; 
    var random7 = Math.floor(Math.random() * 13) + 1; 
    var random8 = Math.floor(Math.random() * 4) + 1 
    var random9 = Math.floor(Math.random() * 13) + 1 
    var random10 = Math.floor(Math.random() * 4) + 1 
    var output = getRank(random1) + " of " + getSuit(random2) + ", " + getRank(random3) + " of " + getSuit(random4) + ", " + getRank(random5) + " of " + getSuit(random6) + ", " + getRank(random7) + " of " + getSuit(random8) + ", " + getRank(random9) + " of " + getSuit(random10); 
    document.querySelector("div").innerHTML = output; 


var buttons = document.querySelectorAll("button"); 

for (var i = 0; i < buttons.length; ++i) { 
    buttons[i].addEventListener("click", main); 
} 

});

回答

1

为等级和套装创建一个数组,用于整张牌而不是2个数组。你可以通过创建第三个变量并循环遍历每个等级的套装并将其推送到新的套牌变量来创建此变量。然后你从1-52生成随机数字并保存每一个数字,对照最后一个数字检查它是否丢弃。

或保留你拥有的东西,并保存每张卡组合(套装和等级随机数)进行测试。

无论采用哪种方式,您都需要测试第二张,第三张等与已经选择的卡片。在上面的情况下,检查random3和random4的组合与random1和random2的组合。如果两者匹配,则为random3和random4生成新值。