首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带条件子句的反向设定值

带条件子句的反向设定值
EN

Stack Overflow用户
提问于 2017-10-20 19:28:59
回答 1查看 50关注 0票数 0

我正在做一个纸牌游戏,作为一个任务,我被困在最后一个障碍。我遇到的问题是,我需要一个条件控制来查看和确定一张依赖于结果的卡片的值。ACE在这个游戏中可能值1或14取决于什么是最有益的结果。游戏是某种黑插孔,但每张牌除了ACE之外都有它的面值,ACE可以值1和14。如果选中的卡片之和为7或更少,我可以检查并将值设置为1或14。7+14=21和最有益的游戏。但是对于相反的情况,我无法得到正确的代码:如果第一张卡是ACE,它的值设置为14,第二张卡是9,那么结果将是23,玩家被关闭。我需要ACE值1.ACE的默认值是1。到目前为止,我拥有的代码是:

代码语言:javascript
复制
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()
}

这是一种函数,用来总结转移到手上的卡片。

其他一切都正常运作,但我想防止这种情况发生:

代码语言:javascript
复制
Johanna: A♠ K♣  27
Johanna got 27 and is busted!
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-20 19:48:40

只要数到他们的最高值,然后减少他们,如果球员被逮捕。这意味着你必须跟踪他们有多少个王牌,但这并不难:

代码语言:javascript
复制
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
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46856060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档