I've created functions with all winning combinations for player one and player two but need to create one for a draw and don't want to write out all possible draw combinations. What would be the best way to attempt this? I was thinking if I could make the playerOneWin and playerTwoWin function true if they run I could have a draw function() that says if both are false then the match is a draw, or if all boxes are fille and playerOne and playerTwo haven't won then it is a draw.
var box1 = document.querySelector(".box1");
var box2 = document.querySelector(".box2");
var box3 = document.querySelector(".box3");
var box4 = document.querySelector(".box4");
var box5 = document.querySelector(".box5");
var box6 = document.querySelector(".box6");
var box7 = document.querySelector(".box7");
var box8 = document.querySelector(".box8");
var box9 = document.querySelector(".box9");
var activePlayer;
var playerOne = "X";
var playerTwo = "O";
activePlayer = playerOne;
function clickBoxPlayer(event) {
if (activePlayer === playerOne) {
var boxClicked = event.target;
if (
boxClicked.innerHTML === playerOne ||
boxClicked.innerHTML === playerTwo
) {
console.log("noturturn");
} else if (boxClicked.innerHTML === "") {
boxClicked.innerHTML = activePlayer;
activePlayer = playerTwo;
}
console.log("one");
//tie && winning function
function playerOneWin() {
if (
box1.innerHTML === playerOne &&
box2.innerHTML === playerOne &&
box3.innerHTML === playerOne
) {
console.log("playeronewins");
} else if (
box1.innerHTML === playerOne &&
box4.innerHTML === playerOne &&
box7.innerHTML === playerOne
) {
console.log("playeronewins");
} else if (
box1.innerHTML === playerOne &&
box5.innerHTML === playerOne &&
box9.innerHTML === playerOne
) {
console.log("playeronewins");
} else if (
box2.innerHTML === playerOne &&
box5.innerHTML === playerOne &&
box8.innerHTML === playerOne
) {
console.log("playeronewins");
} else if (
box3.innerHTML === playerOne &&
box6.innerHTML === playerOne &&
box9.innerHTML === playerOne
) {
console.log("playeronewins");
} else if (
box3.innerHTML === playerOne &&
box5.innerHTML === playerOne &&
box7.innerHTML === playerOne
) {
console.log("playeronewins");
} else if (
box4.innerHTML === playerOne &&
box5.innerHTML === playerOne &&
box6.innerHTML === playerOne
) {
console.log("playeronewins");
} else if (
box7.innerHTML === playerOne &&
box8.innerHTML === playerOne &&
box9.innerHTML === playerOne
) {
console.log("playeronewins");
}
}
playerOneWin();
} else if (activePlayer === playerTwo) {
var boxClicked = event.target;
if (
boxClicked.innerHTML === playerOne ||
boxClicked.innerHTML === playerTwo
) {
console.log("noturturn");
} else if (boxClicked.innerHTML === "") {
boxClicked.innerHTML = activePlayer;
activePlayer = playerOne;
}
console.log("two");
}
//player two winning combinations
function playerTwoWin() {
if (
box1.innerHTML === playerTwo &&
box2.innerHTML === playerTwo &&
box3.innerHTML === playerTwo
) {
console.log("playertwowins");
} else if (
box1.innerHTML === playerTwo &&
box4.innerHTML === playerTwo &&
box7.innerHTML === playerTwo
) {
console.log("playertwowins");
} else if (
box1.innerHTML === playerTwo &&
box5.innerHTML === playerTwo &&
box9.innerHTML === playerTwo
) {
console.log("playertwowins");
} else if (
box2.innerHTML === playerTwo &&
box5.innerHTML === playerTwo &&
box8.innerHTML === playerTwo
) {
console.log("playertwowins");
} else if (
box3.innerHTML === playerTwo &&
box6.innerHTML === playerTwo &&
box9.innerHTML === playerTwo
) {
console.log("playertwowins");
} else if (
box3.innerHTML === playerTwo &&
box5.innerHTML === playerTwo &&
box7.innerHTML === playerTwo
) {
console.log("playertwowins");
} else if (
box4.innerHTML === playerTwo &&
box5.innerHTML === playerTwo &&
box6.innerHTML === playerTwo
) {
console.log("playertwowins");
} else if (
box7.innerHTML === playerTwo &&
box8.innerHTML === playerTwo &&
box9.innerHTML === playerTwo
) {
console.log("playertwowins");
}
}
playerTwoWin();
}
var allBoxes = document.querySelector(".allBoxes");
allBoxes.addEventListener("click", clickBoxPlayer);
.allBoxes div {
display : block;
float : left;
width : 2em;
height : 2em;
margin : .3em;
background : lightgrey;
text-align : center;
line-height : 1.8em;
cursor : pointer;
}
.allBoxes div:nth-of-type(4),
.allBoxes div:nth-of-type(7) {
clear : left;
}
<section class="allBoxes">
<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>
<div class="box4"></div>
<div class="box5"></div>
<div class="box6"></div>
<div class="box7"></div>
<div class="box8"></div>
<div class="box9"></div>
</section>