gpt4 book ai didi

javascript - Javascript中的纸牌游戏,构造函数错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:41:04 24 4
gpt4 key购买 nike

我正在用 JavaScript 创建一个基本的纸牌游戏 (21),其中每个玩家都有一手牌。玩家从 2 张牌开始,但我想根据牌的总值(value)添加新牌,并根据是否有 A 进行调整。

不幸的是,我收到此错误: fatal error :CALL_AND_RETRY_LAST 分配失败 - JavaScript 堆内存不足。我认为问题必须与 this.newCard 方法有关,我似乎无法理解为什么它不起作用。

function Hand () {
this.cards = []
this.cardsAtStart = function() {
this.cards.push(new DealCards, new DealCards)
return this.cards
}
this.checkValue = function () {
let cardsInHand = this.cardsAtStart()

let ace = false
let value = 0
for (let i = 0; i < cardsInHand.length; i++) {
if (cardsInHand[i].cardnumber === 'A' && !ace) {
ace = true
value = value + 13
}
value = value + cardsInHand[i].cardvalue
}
if (ace && value > 21) {
value = value - 13
}
console.log(value)

return value
}
this.newCard = function () {
let value = this.checkValue()
console.log(value)
while (value < 15) {
this.cards.push(new DealCards)
}
if (value > 15) {
endGame()
}
console.log(this.cards)
}
}

卡片对象如下所示:{ 花色:'♦',牌号:'K',牌值:13 }

最佳答案

你不检查每个循环的值:

this.newCard = function () {
let value = this.checkValue()
console.log(value)
while (value < 15) {
this.cards.push(new DealCards);
// check value again here!
value = this.checkValue()
}
if (value > 15) {
endGame()
}
console.log(this.cards)
}

但还要修改 checkValue 以将 cardsAtStart 移出那里并移入构造函数。

<罢工>或者,像这样检查值:

while (value < 15) {
this.cards.push(new DealCards);
value = this.cards.reduce((all, current) => all + current.cardvalue, 0),
}

<罢工>

从头开始,Ace 逻辑弄乱了我的 reducer 。坚持原来的计划。将对 cardsAtStart 的调用移动到构造方法中。然后使用 checkValue 来检查值。

关于javascript - Javascript中的纸牌游戏,构造函数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48029471/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com