function computerLogic(array) {
function random() {
var rand = Math.floor(Math.random() * 9);
if ((array[rand] === playerChoice) || (array[rand] === computerChoice)) {
random(); < ----------------------- THATS MY PROBLEM,
} else if (array[rand] === 0) {
array[rand] = computerChoice;
grid.item(rand).innerHTML = computerChoice;
} else {
alert("END OF THE GAME!");
console.log(array[rand]);
}
}
random();
}
所以我的Tic Tac Toe代码的一部分将O或X放到网格中。 在函数处理用户点击时调用此函数。每次用户点击某些内容,然后调用此函数并将更新的数组发送给它。
如果它在if语句的范围内,我递归地调用函数random()再次随机编号。
我不想以递归方式调用它,但我不知道如何让var rand再次随机而不是再次调用整个random()函数。
忽略最后的其他陈述。
在这里你可以查看所有代码,如果它混乱。 https://github.com/uRTLy/Tic-Tac-Toe
修改
function computerLogic(array) {
function random() {
var rand = Math.floor(Math.random() * 9);
var result = (array[rand] === computerChoice) || (array[rand] === playerChoice) ?
random(): (function(rand) {
array[rand] = computerChoice;
grid.item(rand).innerHTML = computerChoice;
})(rand);
}
random();
}
这样做也是如此,但仍然超过了堆栈大小,仍然和之前一样。
答案 0 :(得分:0)
使用while语句
while((array[rand] === playerChoice)||(array[rand] === computerChoice)) {
rand = Math.floor(Math.random() * 9);
}