【发布时间】:2015-06-18 18:08:33
【问题描述】:
我创建了一个非常简单的二十一点游戏,它将洗牌数组的第一个值存储到相应玩家的数组中,将它们作为实际手牌处理。出于某种奇怪的原因,我似乎无法找到一种方法来多次执行代码的核心部分而不会出现无限循环。目前,我只尝试运行用于多个语句的相当常见的“for”命令,但在这里似乎不起作用。
原始形式的程序如下...
var dealerCards = [];
var playerCards = [];
var firstDeck = [];
function shuffle(o){
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;
}
function createShuffledDeckNumber(array, x) {
for (i = 0; i < 4*x; i++) {
array.push(1,2,3,4,5,6,7,8,9,10,11,12,13);
}
shuffle(array);
}
function drawCard(playersHand, playerSoft, playerHard) {
playersHand.push(firstDeck[0]);
firstDeck.shift();
}
function checkDeckDrawOne(playersHand) {
if (firstDeck.length === 0) {
createShuffledDeckNumber(firstDeck, 1);
drawCard(playersHand);
}else{
for (i = 0; i < 1; i++) {
drawCard(playersHand);
}
}
}
for (i = 0; i < 4; i++) {
dealerCards = [];
playerCards = [];
checkDeckDrawOne(dealerCards);
checkDeckDrawOne(dealerCards);
checkDeckDrawOne(playerCards);
checkDeckDrawOne(playerCards);
console.log("dealerCards",dealerCards,"playerCards",playerCards);
console.log("firstDeckDrawn", firstDeck, "Number", firstDeck.length);
}
附加说明;
假定的目标可能是执行计算,通过根据每个玩家数组中存储的有限数量的值模拟连续计算轮次的效果来找出获胜者。虽然,在模拟实际玩二十一点的真实生活环境时,我尝试了一系列不同的事情,但这个版本似乎就是这样做的,它还让程序员能够引入像 KO 或 HiLo 这样的计数系统。整个事情背后的主要逻辑相当简单;每当执行涉及抓牌的命令时,都会订购 x 洗牌的牌组,除非牌组至少有一张牌。
思考我为什么要费心在这样的游戏中创建多个回合是相当公平的。原因是,我想创建一个自动播放器应用程序,为我提供已处理数据的百分比。
【问题讨论】:
-
可以加个小提琴
标签: javascript arrays loops blackjack