var board = [
[null, null, null],
[null, null, null],
[null, null, null],
];
var player = "X";
var cpu = "O";
var running = true;
var ended = false;
$(document).ready(function () {
$("#selection-x").on("click", function () {
if (!running) {
player = "X";
cpu = "O";
$(this).removeClass("selected");
$(this).addClass("selected");
$("#selection-o").removeClass("selected");
}
});
$("#selection-o").on("click", function () {
console.log(running);
if (!running) {
player = "O";
cpu = "X";
$(this).removeClass("selected");
$(this).addClass("selected");
$("#selection-x").removeClass("selected");
}
});
$("#restart").on("click", function () {
if (!ended) {
running = false;
$("#state").text("State: Stopped");
board = board.map(function (current, x) {
return current.map(function (current2, y) {
var $li = $("ul").find(
"[data-x='" + x + "'][data-y='" + y + "']"
);
$li.text("");
return (current2 = null);
});
});
running = true;
$("#state").text("State: Running");
}
});
$(".spot").on("click", function () {
if (running) {
var $li = $(this);
var x = parseInt($li.data("x"));
var y = parseInt($li.data("y"));
var $X = $('');
var $O = $('');
if (board[x][y] === null) {
board[x][y] = player;
var $symbol = player === "X" ? $X : $O;
$symbol.appendTo($li);
if (!check()) {
bot();
} else {
endGame();
}
}
}
});
});
function endGame() {
running = false;
$("#state").text("State: Stopped");
ended = true;
$(".spot").css({
color: "purple",
});
setTimeout(function () {
board = board.map(function (current, x) {
return current.map(function (current2, y) {
var $li = $("ul").find(
"[data-x='" + x + "'][data-y='" + y + "']"
);
$li.text("");
return (current2 = null);
});
});
running = true;
$("#state").text("State: Running");
$(".spot").removeAttr("style");
ended = false;
}, 5000);
}
function bot() {
var X = Math.floor(Math.random() * 3);
var Y = Math.floor(Math.random() * 3);
if (board[X][Y] !== null) {
bot();
} else {
board[X][Y] = cpu;
var $li = $("ul").find("[data-x='" + X + "'][data-y='" + Y + "']");
var $X = $('');
var $O = $('');
var $symbol = cpu === "X" ? $X : $O;
$symbol.appendTo($li);
if (check()) {
endGame();
}
}
}
function check() {
var boardFull = true;
for (var i = 0; i < board.length; i++) {
if (board[i].indexOf(null) > -1) {
boardFull = false;
}
if (
board[i][0] !== null &&
board[i][0] === board[i][1] &&
board[i][1] === board[i][2]
) {
return true;
}
if (
board[0][i] !== null &&
board[0][i] === board[1][i] &&
board[1][i] === board[2][i]
) {
return true;
}
}
if (
board[0][0] !== null &&
board[0][0] === board[1][1] &&
board[1][1] === board[2][2]
) {
return true;
}
if (
board[0][2] !== null &&
board[0][2] === board[1][1] &&
board[1][1] === board[2][0]
) {
return true;
}
return boardFull;
}