Skip to content

Create an Engaging Tic Tac Toe Game with HTML, CSS, and JS

NameCheap affiliate ad

Tic Tac Toe, commonly known as Noughts and Crosses, is a fun game in which X’s and O’s engage in a dance of wits on a simple 3×3 grid. But what if we told you that you could not only play but also design this iconic game? Yes, you read that correctly! We’ll take you on a fascinating voyage into the world of web development in this epic lesson, where you’ll wield the tremendous powers of HTML, CSS, and JavaScript to bring this classic tic tac toe game to life.

tic tac toe game built using html css javascript

Prepare to embark on a fascinating trip into the amazing world of code. If you’re new to programming, don’t worry; our step-by-step instructions will hold your hand while you delve into the unknown. So, fellow developers, saddle up as we set out to create an interactive Tic Tac Toe game that will engage gamers and push your coding talents to new heights.

Source Code Link Here: Tic-Tac-Toe-Game

Starting Up the Tic Tac Toe Game Using HTML CSS and JavaScript

First and foremost, let us lay the foundation for our epic masterpiece. We need to lay a firm foundation with HTML before the tic tac toe game can take shape. Consider HTML to be the blueprint for our game board’s structure. Without further ado, let’s get started with Step 1!

Step 1: The HTML Structure

A few important items are required to create the basic structure of our tic tac toe game board. To develop the framework, we’ll use the powerful power of tags. Don’t worry; it’s simpler than you think! Here’s a rundown of what you’ll require:

  • The All-Powerful “div” Tag: Our go-to for making containers that hold several items. We’ll use this to make the game board and the X and O portions.
  • The Reliable “button” Tag: Every game requires buttons for players to move. This element will be used to make clickable areas on the game board.
  • The versatile “script” Tag: The gatekeeper to the JavaScript domain. This element allows us to include our JavaScript code, which will make our game come to life.

Fear not if you feel a little overwhelmed. We’ll guide you through every step of the way. So grab your favorite code editor, summon your coding spirit, and let’s embark on this exciting HTML adventure!

<!DOCTYPE html>
<html lang="en">
    <!-- Meta tags and stylesheets -->
    <!-- Link to external fonts and stylesheets -->
    <title>Tic Tac Toe</title>
    <!-- Your game elements will go here -->

Styling the Game Board

What’s a tic tac toe game without any personality? Now that we’ve set the groundwork, it’s time to use CSS to bring our game board to life. Consider CSS to be an artist’s palette, where we can paint our game board with eye-catching colors, borders, and animations. So, let’s go on to Step 2 and add some magic to our Tic Tac Toe game!

Step 2: Styling the Game with CSS

CSS’s value resides in its capacity to make our gaming board visually appealing. We can construct an eye-catching board with a few CSS strokes that will attract players like moths to a flame. But don’t worry, fellow hackers; you don’t have to be a Picasso to accomplish this! Here’s a taste of what’s in store for you:

  • The Enchanting “background-color” Property: Paint the backdrop of the game board with your favorite colors to make it visually appealing.
  • The Enchanting “border” Property: Add borders to each cell to give it a tidy, polished appearance. Who knew that boundaries could be so appealing?
  • The Hypnotic “transform” Property: Add some animations to the mix! Allow the cells to dance with excitement when the players make their moves.
  • The Alluring “cursor” Property: Turn the cursor into a pointer when hovering over cells to provide visual feedback to players.

Let your creativity soar as you play with these CSS properties to create a game board that’s as stunning as it is interactive. So grab your CSS wand, and let’s sprinkle some magic on our Tic Tac Toe game!

/* Your provided CSS styles check the source code link provided above*/

Step 3: Adding JavaScript Logic

Next, we’ll add the JavaScript code to make our game interactive. The code you gave is below, along with some additional comments to illustrate each section:

// Constants for player marks and winning combinations
const X_CLASS = 'x';
const O_CLASS = 'o';
    [0, 1, 2],
    [3, 4, 5],
    // ... (other combinations)
// Initialize game variables
let currentPlayerMark = O_CLASS;
let isVsPlayer = false;
let oTurn = false;
let xWin = 0;
let oWin = 0;
let tie = 0;
let winningArray;
let currentClass;
// ... (Other constants and variables)
// Function to handle game mode selection
function setGameModeHandler() {
    // Handle game mode selection here
// ... (Other functions)
// Event listeners for game mode buttons
vsCpuBtn.addEventListener('click', setGameModeHandler);
vsPlayerBtn.addEventListener('click', setGameModeHandler);

Step 4: Handling User Interaction

We’ll create the logic to handle user interaction and gaming in this step. This includes features for playing against the CPU as well as another player.

// Function to handle player's turn
function playHandler(event) {
    // Handle player's turn and gameplay logic here
// Function to check for a win
function checkWin(currentClass) {
    // Check if there is a win based on the current class
    // Return true if there's a win, false otherwise
// Function to check for a draw
function isDraw() {
    // Check if the game is a draw
    // Return true if it's a draw, false otherwise
// ... (Other functions)
// Event listener for player's moves
cells.forEach(cell => {
    cell.addEventListener('click', playHandler, { once: true });
// ... (Other event listeners and function calls)

Step 5: Displaying Game Results

Finally, we’ll add logic to show game outcomes and handle restarts.

// Function to handle end of the game
function endGame(draw) {
    // Handle displaying game result and options here
// Function to handle restarting the game
function setNextRound() {
    // Handle restarting the game here
// ... (Other functions)
// Event listeners for modal buttons
nextRoundBtn.addEventListener('click', setNextRound);
quitBtn.addEventListener('click', () => {


Congratulations! You’ve Succesfully created a Tic Tac Toe game with HTML, CSS, and JavaScript. This game illustrates fundamental web programming concepts such as user interaction, event management, and dynamic content updates.

Feel free to add features like keeping track of tic tac toe game rounds, upgrading the user interface, or developing more powerful AI for the CPU opponent to this project.

Have fun coding!

Share This Post, Help Others & Learn Together!

Leave a Reply

Your email address will not be published. Required fields are marked *