
Use this code to create your very own tic tac toe game to play with friends!
I did this project at my fifth Girls Programming Network (GPN) where I got to meet new friends and also run into some familiar faces. It was fun as always to hang out the entire day just coding and having fun.
I used EdStem to write and run my code.
# Created by Ahla, Anas 16/07/2025
# v1.1 Multiple gameplay implemented
# v1.0 Board cleaned up; commented the code; f string used; cleaned up inputs and logic
# v0.9 Initial release
# Declare an empty array of 9 elements
board = [" "," "," "," "," "," "," "," "," "]
game_continue=""
# Function to draw the canvas on screen
def print_board(board):
print(" ")
print(" ", board[0], "|", board[1], "|", board[2], " ")
print("-------------")
print(" ", board[3], "|", board[4], "|", board[5], " ")
print("-------------")
print(" ", board[6], "|", board[7], "|", board[8], " ")
print(" ")
# Define winning logic
def check_winner(board):
# First row is filled with the same symbol (O or X), so game over!
if board[0] == board[1] == board[2] != " ":
return True
# Second row is filled with the same symbol (O or X), so game over!
elif board[3] == board[4] == board[5] != " ":
return True
# Third row is filled with the same symbol (O or X), so game over!
elif board[6] == board[7] == board[8] != " ":
return True
# First column is filled with the same symbol (O or X), so game over!
if board[0] == board[3] == board[6] != " ":
return True
# Second column is filled with the same symbol (O or X), so game over!
elif board[1] == board[4] == board[7] != " ":
return True
# Third column is filled with the same symbol (O or X), so game over!
elif board[2] == board[5] == board[8] != " ":
return True
# Diagonal (left to right) is filled with the same symbol (O or X), so game over!
if board[0] == board[4] == board[8] != " ":
return True
# Diagonal (right to left) is filled with the same symbol (O or X), so game over!
elif board[2] == board[4] == board[6] != " ":
return True
# No one has won so far, continue the game
else:
return False
# Gameplay begins
# Welcome message and get player names
print("Welcome to Tic-Tac-Toe")
player_O = input("Who is playing naughts [O]? ")
player_X = input("Who is playing crosses [X]? ")
print(f"Welcome {player_O}, your symbol is O")
print(f"Welcome {player_X}, your symbol is X")
# Define Game loop
def game_loop():
# Define variables
game_over = False
symbol = "O"
current_player = player_O
# Declare an empty array of 9 elements
board = [" "," "," "," "," "," "," "," "," "]
# Draw the canvas on screen
print_board(board)
# Game loop
while game_over == False:
# Info about the current player
print(f"The current player is {current_player} playing {symbol}")
# Take input from the player with validation
while True:
try:
square_input = input("Which square do you want to place your symbol in (1 to 9)? ")
# Since our board array has 9 elements from 0 to 8, "1" is subtracted from the input
square_index = int(square_input)-1
# Check if input is within valid range of 0 to 8 (for the user: 1 to 9)
if square_index < 0 or square_index > 8:
print("Invalid input. Please enter a number between 1 and 9.")
# Check if square is already occupied
elif board[square_index] != " ":
print("That square is already occupied. Please choose another.")
else:
break # Input is valid, exit the validation loop
# Input might be string
except ValueError:
print("Invalid input. Please enter a number between 1 and 9.")
# Assign the player's symbol to the board array
board[square_index] = symbol
print_board(board)
game_over = check_winner(board)
if game_over == True:
print("=======================")
print(f"{current_player} [{symbol}] won! Congratulations!")
print("=======================")
break # Exit the game loop if there's a winner
# Check for a tie (board is full)
# No space on the board
if " " not in board:
print("=======================")
print("It's a tie!")
print("=======================")
# Let's exit the game
game_over = True
break
## # Alternate logic
## # Take the count of spaces on the board. If no space, let's exit the game
## if board.count(" ") == 0:
## print("It's a tie!")
## game_over = True
## break
# Change the current player and symbol to the next
if symbol == "O":
current_player = player_X
symbol = "X"
else:
current_player = player_O
symbol = "O"
# Game loop
game_loop()
# Ask to play again
# Infinite loop
while True:
# Get input to the variable and strip any spaces before valid input
game_continue = input("\nWould you like to play one more game? Yes [Y] or No [N]: ").strip()
# Captures input and looks for yes "Y"
if game_continue and game_continue[0].upper() == "Y":
game_loop()
# Exits the game if any other input comes
else:
print("=======================")
print("GAME OVER!")
print("=======================")
# Exit the infinite while loop
break
I would like to also like to implement a computer vs user version of tic tac toe in the future. I think it will also be fun to make the game graphical with a board in which players can play. This will make it more interactive and hands on to play.
Look forward to that blog coming soon!

One reply on “Tic-Tac-Toe: GPN”
You’re so cool!!! you go girllll