我正在做一个纸牌游戏,作为一个任务,我被困在最后一个障碍。我遇到的问题是,我需要一个条件控制来查看和确定一张依赖于结果的卡片的值。ACE在这个游戏中可能值1或14取决于什么是最有益的结果。游戏是某种黑插孔,但每张牌除了ACE之外都有它的面值,ACE可以值1和14。如果选中的卡片之和为7或更少,我可以检查并将值设置为1或14。7+14=21和最有益的游戏。但是对于相反的情况,我无法得到正确的代码:如果第一张卡是ACE,它的值设置为14,第二张卡是9,那么结果将是23,玩家被关闭。我需要ACE值1.ACE的默认值是1。到目前为止,我拥有的代码是:
this.dealCard = function () {
this.dealedHand.push(shuffledDeck.shift())
let sum = 0
this.dealedHand.forEach(function (card) {
if (card.value === 1 && sum <= 7) {
card.value = 14
} //Another condition clause to reverse that and let the ACE be 1 again...
sum = sum + card.value
})
this.dealedHandSum = sum
}
for (let i = 0; i < 2; i++) {
this.dealCard()
}
while (this.dealedHandSum < player.stopAtValue) {
this.dealCard()
}这是一种函数,用来总结转移到手上的卡片。
其他一切都正常运作,但我想防止这种情况发生:
Johanna: A♠ K♣ 27
Johanna got 27 and is busted!发布于 2017-10-20 19:48:40
只要数到他们的最高值,然后减少他们,如果球员被逮捕。这意味着你必须跟踪他们有多少个王牌,但这并不难:
this.dealCard = function () {
this.dealedHand.push(shuffledDeck.shift())
let sum = 0
let aces = [] // Keep track of each ace in the hand
this.dealedHand.forEach(function (card) {
if (/* Card is Ace */) {
card.value = 14 // Count each ace at its highest value
aces.push(card)
}
sum = sum + card.value
})
while (aces.length && sum > 21) { // If busted, and we have aces, reduce their value
sum -= 13
let ace = aces.shift()
ace.value = 1
}
this.dealedHandSum = sum
}https://stackoverflow.com/questions/46856060
复制相似问题