gpt4 book ai didi

javascript - 按下复位按钮后功能不工作

转载 作者:行者123 更新时间:2023-11-30 11:06:05 27 4
gpt4 key购买 nike

“清除”按钮将数组清除回默认值,但之后 newGame 函数拒绝运行。在调用 Clear 函数之前,newGame 函数可以按预期完美运行。我相信新的游戏功能是罪魁祸首,但我不知道它的哪一部分可能会破坏它。

在 newGame 之后应该期待一个不同的数组被第二次调用,但我最终得到了一个无论调用多少次都是空数组。

let shuffledBoxes = [];
let boxes = []
let boxMax = 16;
let boxCount = 0;

const newGame = () => {
for (let i = boxes.length; i != boxMax; i++) {
if (boxes.length === boxMax) {
return null;
}
if (boxCount != Math.floor(boxMax * 0.4)) {
if (boxes.includes(2) === false) {
boxes.push(2);
}
boxes.push(1);
boxCount++;
} else {
boxes.push(0);
}
}
};

const randomBoxes = () => {
for (let i = boxes.length - 1; i >= 0; i--) {
math = Math.floor(Math.random() * boxMax);
shuffledBoxes.push(boxes[math]);
boxes.splice([math], 1);
boxMax--;
}
};

const boxesClear = () => {
for (let i = shuffledBoxes.length - 1; i > -1; i--) {
shuffledBoxes.pop();
}
for (let j = boxes.length - 1; j > -1; j--) {
boxes.pop();
}
boxCount = 0;
};

newGame();
randomBoxes();
boxesClear();
//After this point, newGame does not like to run.
newGame();
randomBoxes();

Logging boxes and shuffledBoxes show that
newGame is working before boxClear is called.

boxes = []
shuffledBoxes = [ 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 2, 1, 0, 0, 0, 0 ]
boxCount = 6

boxes = []
shuffledBoxes = []
boxCount = 0

最佳答案

您需要重置 boxMax16 因为它在randomBoxes 中变为0 > 由于

boxMax--;

let shuffledBoxes = [];
let boxes = []
let boxMax = 16;
let boxCount = 0;

const newGame = () => {
for (let i = boxes.length; i != boxMax; i++) {
if (boxes.length === boxMax) {
return null;
}
if (boxCount != Math.floor(boxMax * 0.4)) {
if (boxes.includes(2) === false) {
boxes.push(2);
}
boxes.push(1);
boxCount++;
} else {
boxes.push(0);
}
}
};

const randomBoxes = () => {
for (let i = boxes.length - 1; i >= 0; i--) {
math = Math.floor(Math.random() * boxMax);
shuffledBoxes.push(boxes[math]);
boxes.splice([math], 1);
boxMax--;
}
};

const boxesClear = () => {
for (let i = shuffledBoxes.length - 1; i > -1; i--) {
shuffledBoxes.pop();
}
for (let j = boxes.length - 1; j > -1; j--) {
boxes.pop();
}
boxCount = 0;
boxMax = 16
};

newGame();
randomBoxes();



boxesClear();
//After this point, newGame does not like to run.


newGame();
randomBoxes();


console.log(shuffledBoxes);
console.log(boxes);

您还可以缩短 boxesClear 函数

const boxesClear = () => {
shuffleBoxes = [];
boxes = [];
boxCount = 0;
};

你也可以有一个衬垫。

const boxesClear = () => shuffleBoxes.length = boxes.length = boxCount = 0

关于javascript - 按下复位按钮后功能不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55567061/

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