我目前正在尝试建立一个程序,用扑克中的各种起手来预测获胜几率。我认为表示每个Card
的最佳方式是使其成为具有两个属性的对象:number
和suit
。我想我应该把它添加到一个名为deck
的数组中 - 但是我不确定生成这副牌的最佳方法是什么?我可以输入它们 - 或者我可以创建一个for loop
来调用Card
构造函数52次,但有更好的方法吗?
答案 0 :(得分:2)
只是为了好玩,因为我只是有点奇怪,我建立了一个创建卡片的小javascript,然后以随机顺序显示它们。我确实使用过jQuery,但没有必要
首先定义将存储卡片的套装,卡号和卡片阵列。 count变量用于跟踪接下来在屏幕上显示的卡片。
var suits = ["H","S","C","D"];
var numbers = ["A","2","3","4","5","6","7","8","9","10","J","Q","K"];
var cards = [];
var count = 0;
添加随机播放和绘制按钮以及显示卡片的位置
<button id="shuffle">Shuffle</button>
<button id="draw">Draw</button>
<div id="cards"></div>
现在功能的核心,生成和洗牌
在随机播放按钮的点击事件中,我运行两个for循环,生成卡片并为卡片分配一个随机数。创建的卡片对象,存储套装,数字和1到5200之间的随机数。我选择了一个大数字来最小化获得重复数字的可能性
$("#shuffle").click(function() {
count = 0
cards = [];
$("#cards").html("");
for(s in suits) {
var suit = suits[s];
for(n in numbers) {
var num = numbers[n]
var card = {
suit: suit,
number: num,
order: Math.floor(Math.random() * 5200) + 1
};
cards.push(card);
}
}
要对卡片进行排序,您可以使用自定义排序功能。
cards = cards.sort(function(a,b) {
return (a.order < b.order ? -1 : 1)
});
最后,显示甲板上的前四个
for(var i = 0;i < 4;i++) {
count++;
dispCard(i);
}
});
我使用了一个名为dispCard的功能来显示卡
function dispCard(cardNum) {
var i = cardNum
var count = cardNum + 1;
var card = cards[i];
$("#cards").append(count + " - " + card.number + card.suit + "<br/>");
}
绘图按钮只占用下一张卡,如果数字为52
则不执行任何操作$("#draw").click(function() {
if(count < 52) {
dispCard(count);
count++;
}
return false;
});