Javascript 使用条件子句反向设置值
我正在做一个纸牌游戏作为一项任务,我被困在最后一个障碍。我的问题是,我需要一个条件控件来查看和确定依赖于结果的卡的值。这场比赛中的王牌价值可能是1或14,这取决于对结果最有利的因素。这个游戏有点像黑杰克,但每张牌都有它的面值,除了王牌之外,王牌可以值1和14。我可以检查并将值设置为1或14,如果拾取的卡的总数为7或更少。7+14=21,对游戏最有利。但是我不能得到相反的正确代码:如果第一张牌是a,它的值设置为14,第二张牌是9,那么结果将是23,玩家将被击溃。我需要这张王牌值1那么。。。ACE的默认值为1。到目前为止,我掌握的代码是:Javascript 使用条件子句反向设置值,javascript,if-statement,conditional-statements,blackjack,Javascript,If Statement,Conditional Statements,Blackjack,我正在做一个纸牌游戏作为一项任务,我被困在最后一个障碍。我的问题是,我需要一个条件控件来查看和确定依赖于结果的卡的值。这场比赛中的王牌价值可能是1或14,这取决于对结果最有利的因素。这个游戏有点像黑杰克,但每张牌都有它的面值,除了王牌之外,王牌可以值1和14。我可以检查并将值设置为1或14,如果拾取的卡的总数为7或更少。7+14=21,对游戏最有利。但是我不能得到相反的正确代码:如果第一张牌是a,它的值设置为14,第二张牌是9,那么结果将是23,玩家将被击溃。我需要这张王牌值1那么。。。ACE的
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()
}
只需将A数在其最高值,如果玩家被击溃,则将其减少。这意味着你必须记录他们有多少个A,但这并不难:
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
}
可能是重复的好吧,我们就快到了。它正常工作,但如果我运行调试器,出现ace,则该卡将获得该卡。value=14,numAces=1。如果我们最终被破坏,它会从总数中减去13,但如果14,卡仍然保留它的值,当我们最终总结时,我们仍然被破坏。我编辑了这篇文章来反映这一点。我想我们需要跟踪实际的卡片本身,而不仅仅是保留A的数量。因此,如果你得到一个ace,将其放入一个数组中,如果被破坏,则减少总和,从数组中删除一个ace,并将其值改回1。谢谢。一张王牌在手上的表现非常好,但有两张王牌,我们得到的是:A♠ A.♥ 10♥ 25应该是1+1+10=12,而不是1+14+10=25Hmm。我看不出有什么理由不能用两个A。是否有其他代码未发布,正在再次执行求和?此过程将收到一个错误,错误为:无法设置指向ace.value=1的未定义属性“value”。Johanna:8♠ A.♣ A.♥ 7.♥ 17我也有这些循环来启动卡片交易:-----对于let I=0;i<2;i++{this.dealCard}---------而this.dealedHandSum
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
}