I’m developing a Tic Tac Toe project that requires both single-player and multiplayer modes. The multiplayer part works fine, allowing users to enter their names and select symbols. When one player chooses X, they go first, and if they choose O, the other player starts. Now, I need assistance with implementing the single-player mode. I want to add a simple AI that selects random empty spots on the board. The same rules for turn order should apply: if the user chooses X, they start first, whereas if they pick O, the computer will go first.
Here’s the working multiplayer code:
// Global variables
let cross = 'X';
let circle = 'O';
let playerOne = cross;
let playerTwo = circle;
let currentPlayer = cross;
let gameState = "active";
// Selecting grid cells
const cells = document.getElementsByClassName("cell");
function showSettings() {
if (playerOne == circle) {
document.getElementById("selectX").checked = false;
document.getElementById("selectO").checked = true;
} else {
document.getElementById("selectX").checked = true;
document.getElementById("selectO").checked = false;
}
document.getElementById("settingsModal").style.display = "block";
}
function applyOptions() {
if (document.getElementById('selectX').checked) {
playerOne = cross;
playerTwo = circle;
currentPlayer = playerOne;
} else {
playerOne = circle;
playerTwo = cross;
currentPlayer = playerTwo;
}
document.getElementById("settingsModal").style.display = "none";
}
for (let j = 0; j < cells.length; j++) {
cells[j].addEventListener("click", function() {
if (cells[j].innerHTML.trim() == "" && gameState == "active") {
cells[j].innerHTML = currentPlayer;
let name1 = document.getElementById('player1').value;
let name2 = document.getElementById('player2').value;
currentPlayer = currentPlayer == playerOne ? playerTwo : playerOne;
if(currentPlayer == playerOne) {
document.getElementById("currentTurn").innerHTML = name1.toUpperCase();
} else {
document.getElementById("currentTurn").innerHTML = name2.toUpperCase();
}
checkForWinner();
}
});
}
function checkForWinner() {
// Check rows, columns, diagonals
if (cells[0].innerHTML == cells[1].innerHTML && cells[1].innerHTML == cells[2].innerHTML && cells[0].innerHTML.trim() != "") {
highlightWinner(0, 1, 2);
}
// ... additional win conditions
}
Here’s my unfinished single-player code:
let cross = 'X';
let circle = 'O';
let player = cross;
let ai = circle;
let activeTurn = cross;
function aiTurn() {
// Need assistance to implement random move logic here
}
Can anyone help me complete the AI move function?