8

私は JavaScript カード ゲームを作成しようとしていて、繰り返しなしで 5 枚のカードを選びたいと思っています。

var colors = ["hearts", "spades", "diamonds", "clubs" ];
var values = ["2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"];

color = colors[parseInt(Math.random()*colors.length,10)]
value = values[parseInt(Math.random()*values.length,10)]

5 枚のカードを選んだ場合、重複しないようにするにはどうすればよいですか?

4

3 に答える 3

10

48 枚すべてのカードの配列を準備します (エースが不足していませんか?)

カードを選ぶたびに、アレイから削除します。

次の描画は縮小された配列から行われるため、重複はありません。

別:

同じ配列から始めて、シャッフルします。最初の 5 枚のカードを取ります。

于 2013-09-19T11:55:15.533 に答える
2

他の人が言ったように、Fisher-Yates-Shuffle を使用してから、最初の 5 つを選択します。

 var colors = ["hearts", "spades", "diamonds", "clubs"];
 var values = ["2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"];

 // from http://jsfromhell.com/array/shuffle by Jonas Raoni Soares Silva
 function shuffle(o) { //v1.0
     for (var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
     return o;
 };

 var cards = [];
 for (var j = 0; j < colors.length; j++) {
     for (var i = 0; i < values.length; i++) {
         cards.push(colors[j] + values[i]);
     }
 }
 shuffle(cards);
 console.log(cards.slice(0, 5));
于 2013-09-19T12:11:45.977 に答える