2016-11-29 9 views
0

私は助けが必要です! 5つのランダムなカードを扱うボタンを作っていますが、繰り返しのカードはありません。私は以下の5つのランダムなカードを手に入れますが、時々繰り返しカードがあります。リピートがないようにコードを編集するにはどうすればよいですか?ありがとうございました!カードのハンドを扱う際に返信はありません

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つの配列の代わりに、カードのデッキ全体の配列を作成します。これを作成するには、3番目の変数を作成し、各ランクのスーツをループして新しいデッキ変数にプッシュします。次に、1-52の乱数を生成し、それぞれを保存して、破棄する複製の最後のものと照合します。

あなたが持っているものを保管し、テストする各カードの組み合わせ(スーツとランクの乱数)を保存します。

どちらの方法でも、2番目、3番目などのカードをすでに選択されているものと比較してテストする必要があります。上記の場合、random3とrandom4の組み合わせをrandom1とrandom2の組み合わせで確認してください。両方が一致する場合は、random3とrandom4の新しい値を生成します。

関連する問題