Ian Watkins iankwatkins
Free Project Course

Build a Game with JavaScript

A hands-on, ten-lesson project that teaches the real fundamentals of browser game development. You'll build tic-tac-toe from an empty folder, then give it a brain: an AI opponent that cannot lose.

10 lessons Vanilla JS, HTML, CSS No frameworks, no build tools Advanced beginner

You did it. Course complete!

You built a full game and a provably perfect AI from a blank folder. You don't just know tic-tac-toe now, you own the pattern under every game. So go build your next one. Snake is the classic next step, and it's mostly things you already know.

Grab the cheat sheet for your next build
0 / 10 lessons completed Reset progress

Tic-tac-toe is just the vehicle. The real prize is the pattern under every game you'll ever build: state → render → input → update → render. Get it here and snake, a card game, or a small platformer are all the same shape, scaled up. Each lesson teaches one idea, gives you a runnable win, marks itself complete, and links to the official docs so you can go deeper.

Who this is for

You can already write a loop, a function, and an if statement in some language, but you're new to JavaScript, the browser (the DOM), and thinking in the "game loop." No frameworks are used or assumed. You'll need a text editor and a web browser, nothing else.

The lessons

  1. 1The Board Is Data

    The single most important idea in game dev: the game lives in data, and the screen is just a picture of it.

  2. 2Making the Board Talk Back

    Handle input. Click a cell, change the data, re-render. This closes the game loop for the first time.

  3. 3Taking Turns

    Track whose move it is with a second piece of state, and learn why the order of your operations matters.

  4. 4Detecting a Win

    Encode the rules as data, check for three-in-a-row, and stop the game when someone wins.

  5. 5Draws and Reset

    Handle the tie, and add a play-again button. Reset is the cleanest test of whether you understand your own state.

  6. 6Highlighting the Winning Line

    Light up the winning squares by changing what a function returns, not by adding new logic.

  7. 7A Computer Opponent

    Your first AI. The computer picks an empty square and plays it, through the exact same code your click uses.

  8. 8A Smarter Opponent

    Make it think: take a win, block yours, then guess. Learn the simulate-check-undo technique behind all game AI.

  9. 9Difficulty Levels

    Add Easy, Normal, and Crazy with a dropdown, using a dispatch table to choose behavior at runtime.

  10. 10Minimax: The Perfect Player

    Build an unbeatable AI with recursion. It plays the whole game in its head before every move.

Top tips cheat sheet

One page with the transferable ideas and the JavaScript traps this project teaches. Keep it open while you build, and revisit it for your next game.

Open the cheat sheet