Want to make your first game with Python? Great choice! Let’s build a simple and fun classic — Tic Tac Toe. It’s a perfect project for beginners. You’ll learn about loops, conditionals, and functions — all while having fun.
This guide is easy to follow. No long explanations. Just bite-sized steps and a working game at the end. Ready? Let’s jump in!
What You Need
- A computer with Python installed
- A text editor (VS Code, Sublime, or even Notepad)
- Some excitement!
Step 1: Plan the Game
Tic Tac Toe is a 2-player game. Each player picks X or O and places it on a 3×3 grid. First to get three in a row wins.
We want a board, a way to check if someone has won, and a way to switch turns.

Step 2: Create the Game Board
We’ll use a list of 9 elements to represent the 3×3 grid.
board = [" " for _ in range(9)]
def print_board():
print(f"{board[0]} | {board[1]} | {board[2]}")
print("--+---+--")
print(f"{board[3]} | {board[4]} | {board[5]}")
print("--+---+--")
print(f"{board[6]} | {board[7]} | {board[8]}")
This function sets up the board and prints it nicely. Each time someone makes a move, we’ll call this.
Step 3: Player Moves
Let’s write a function for the player to make a move.
def player_move(icon):
if icon == "X":
number = 1
else:
number = 2
print(f"Your turn player {number}")
choice = int(input("Enter your move (1-9): ").strip())
if board[choice - 1] == " ":
board[choice - 1] = icon
else:
print("That space is taken!")
This lets players input a number between 1 and 9 to place their icon.
Step 4: Check for a Win
We need to check if someone wins the game after every move.
def is_victory(icon):
win_conditions = [
(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 condition in win_conditions:
if board[condition[0]] == icon and board[condition[1]] == icon and board[condition[2]] == icon:
return True
return False
This function checks every possible win scenario: rows, columns, and diagonals.
Step 5: Make It a Game Loop
Now we just tie it all together in a loop so players keep taking turns until there’s a winner or a draw.
while True:
print_board()
player_move("X")
if is_victory("X"):
print_board()
print("X wins! Congratulations!")
break
elif " " not in board:
print("It’s a tie!")
break
print_board()
player_move("O")
if is_victory("O"):
print_board()
print("O wins! Congratulations!")
break
elif " " not in board:
print("It’s a tie!")
break
This loop runs until someone wins or the board is full. Simple and clean.

Awesome, You Did It!
You just built your first game in Python. High five!
This project may be small, but you learned a ton:
- How to create and print a board
- How to take user input
- Using conditionals and lists effectively
- Building game logic step by step
What’s Next?
- Add a score counter
- Make an AI opponent
- Create a GUI with Tkinter
There’s no limit to what you can build. Start simple, stay curious, and keep coding!