47 - Tic-Tac-Toe Game
Description
Algorithm
Classes
Code
import React, { useState } from 'react';
import GameBoard from './GameBoard';
const TicTacToe = () => {
const [playerTurn, setPlayerTurn] = useState('X');
const [boardState, setBoardState] = useState([
['', '', ''],
['', '', ''],
['', '', ''],
]);
const [winner, setWinner] = useState(null);
const handleClick = (row, col) => {
const newBoardState = [...boardState];
newBoardState[row][col] = playerTurn;
setBoardState(newBoardState);
setPlayerTurn(playerTurn === 'X' ? 'O' : 'X');
checkForWin();
};
const checkForWin = () => {
const winConditions = [
[0, 1, 2],
[3, 4, 5],
[6, 7, 8],
[0, 3, 6],
[1, 4, 7],
[2, 5, 8],
[0, 4, 8],
[2, 4, 6],
];
for (let i = 0; i < winConditions.length; i++) {
const condition = winConditions[i];
if (
boardState[condition[0]] === playerTurn &&
boardState[condition[1]] === playerTurn &&
boardState[condition[2]] === playerTurn
) {
setWinner(playerTurn);
return;
}
}
if (!boardState.includes('')) {
setWinner('draw');
}
};
return (
<div>
<GameBoard
boardState={boardState}
handleClick={handleClick}
/>
{winner && <p>Winner: {winner}</p>}
</div>
);
};
export default TicTacToe;
Explanation
Possible Future Enhancements
Last updated