我遇到了一個奇怪的情況。我在JS中構建了一個很好的Tic-Tac-Toe遊戲,我無法弄清楚爲什麼count變量在我第二次初始化時不會重置。重新初始化時,計數變量未在javascript中重置
第一款遊戲效果很好;即使在init()中var變量重置,第二個遊戲計數也不會重置爲0。
遊戲規則:遊戲X啓動,應始終與X.開始你會注意到,在第二場比賽中以O.
開始會有人照顧看看?小提琴:http://jsfiddle.net/1ommcdxg/
var board;
var gameBoard;
var winners = [
[0,1,2],
[3,4,5],
[6,7,8],
[0,3,6],
[1,4,7],
[2,5,8],
[0,4,8],
[2,4,6]
];
var count;
var checkWin = function (a) {
for (var i = 0; i < winners.length; i++) {
if (gameBoard[winners[i][0]] === a &&
gameBoard[winners[i][1]] === a &&
gameBoard[winners[i][2]] === a)
{
return a;
};
};
};
var gamePlay = function (ev) {
console.log(ev);
ev = ev || window.event; // browser compatibility
var target = ev.target || ev.srcElement; //browser c...
var choice = target.id; //sets a variable from the id
choice = parseInt(choice.substring(1,2));
// console.log(target);
// console.log(choice);
console.log("in gameplay " + count);
if (count < 9) {
if (count % 2 === 0) {
target.innerHTML = "X";
target.className = target.className + " x";
gameBoard[choice] = "x";
if (checkWin(gameBoard[choice])) {
alert("X wins!");
init();
};
} else {
target.innerHTML = "O";
target.className = target.className + " o";
gameBoard[choice] = "o";
if (checkWin(gameBoard[choice])) {
alert("O wins!");
init();
};
};
} else {
console.log("no more turns!");
};
count++;
};
var init = function() {
gameBoard = new Array();
xPlayer = [];
oPlayer = [];
count = 0;
board = document.getElementById("board");
if (board.hasChildNodes()) {
board.removeChild(board.firstChild);
};
var b = document.createElement("b");
board.appendChild(b);
for (var i = 0; i < 9; i++) {
var el = document.createElement("div");
el.className = "square";
el.id = "t" + i;
b.appendChild(el);
console.log(el);
el.addEventListener('click', gamePlay);
};
console.log(count);
};
init();
你是沒有真正描述發生了什麼,所以我猜測問題是'gamePlay'在調用'init()'後調用'count ++'。 –
你並沒有將'count'變量設置爲奇數,甚至在'X'或'O'贏得遊戲後調用'init'。 '如果(checkWin(gameBoard [choice])){alert(「O wins!」); init(1或0取決於誰贏了); };' –
您應該嘗試提供一個較短的問題代碼示例。它會幫助他人回答你的問題。它也可以幫助你找到錯誤。 –