171 lines
2.7 KiB
JavaScript
171 lines
2.7 KiB
JavaScript
const playerX = prompt("Please enter player one's name:");
|
|
const playerO = prompt("Please enter player two's name:");
|
|
|
|
const boxes = document.getElementsByClassName("box");
|
|
|
|
let currentPlayer = playerX;
|
|
|
|
const posX = [];
|
|
let indexX = 0;
|
|
|
|
const posO = [];
|
|
let indexO = 0;
|
|
|
|
let marks = 0;
|
|
|
|
document.getElementById("output-text").innerHTML = currentPlayer + "\'s turn."
|
|
document.getElementById("clear").hidden = true;
|
|
|
|
function clickTracker(button) {
|
|
|
|
mark(button.id);
|
|
|
|
}
|
|
|
|
function mark(index) {
|
|
|
|
let winstate = false;
|
|
|
|
marks++;
|
|
|
|
if(currentPlayer === playerX) {
|
|
|
|
boxes[index].innerHTML = "X"
|
|
|
|
posX[indexX] = index;
|
|
indexX++;
|
|
|
|
if(marks > 4) {
|
|
|
|
winstate = checkForWin(posX);
|
|
|
|
}
|
|
|
|
if(winstate === true) {
|
|
|
|
document.getElementById("output-text").innerHTML = currentPlayer + " WON!"
|
|
document.getElementById("clear").hidden = false;
|
|
|
|
} else {
|
|
|
|
currentPlayer = playerO;
|
|
document.getElementById("output-text").innerHTML = currentPlayer + "'s turn."
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
boxes[index].innerHTML = "O"
|
|
|
|
posO[indexO] = index;
|
|
indexO++;
|
|
|
|
if(marks > 4) {
|
|
|
|
winstate = checkForWin(posO);
|
|
|
|
}
|
|
|
|
if(winstate === true) {
|
|
|
|
document.getElementById("output-text").innerHTML = currentPlayer + " WON!"
|
|
document.getElementById("clear").hidden = false;
|
|
|
|
} else {
|
|
|
|
currentPlayer = playerX;
|
|
document.getElementById("output-text").innerHTML = currentPlayer + "'s turn."
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
function checkForWin(player) {
|
|
|
|
const winstates = [
|
|
|
|
[0,1,2],
|
|
[3,4,5],
|
|
[6,7,8],
|
|
[0,3,6],
|
|
[1,4,7],
|
|
[2,5,8],
|
|
[0,4,8],
|
|
[2,4,6]
|
|
|
|
];
|
|
|
|
let count = 0;
|
|
|
|
for(let j = 0; j < winstates.length; j++) {
|
|
|
|
for(let k = 0; k < player.length; k++) {
|
|
|
|
for(let i = 0; i < winstates[j].length; i++) {
|
|
|
|
if(player[k] == winstates[j][i]) {
|
|
|
|
count++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if(count === 3) {
|
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
count = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
function resetAndClear() {
|
|
|
|
for(let i = 0; i < boxes.length; i++) {
|
|
|
|
boxes[i].innerHTML = ""
|
|
|
|
}
|
|
|
|
if(currentPlayer === playerX) {
|
|
|
|
currentPlayer = playerO;
|
|
|
|
} else {
|
|
|
|
currentPlayer = playerX;
|
|
|
|
}
|
|
|
|
for(let i = 0; i < posX.length; i++) {
|
|
|
|
posX[i] = -1;
|
|
|
|
}
|
|
|
|
for(let i = 0; i < posO.length; i++) {
|
|
|
|
posO[i] = -1;
|
|
|
|
}
|
|
|
|
marks = 0;
|
|
|
|
document.getElementById("output-text").innerHTML = currentPlayer + "\'s turn"
|
|
document.getElementById("clear").hidden = true;
|
|
|
|
}
|