### Tic Tac Toe Game in Python

Building a Tic-Tac-Toe game in Python is an excellent way to get comfortable with Python basics and learn about game development. This tutorial will guide you through creating a console-based game that allows two players to play against each other.

## Step 1: Set Up The Game Board

First, create a representation of the game board. A simple approach is to use a list.

``````def initialize_board():
return [" " for _ in range(9)]
``````

## Step 2: Display The Board

Next, create a function to display the current state of the board to the console.

``````def display_board(board):
for i in range(3):
print("|".join(board[i*3:i*3+3]))
if i < 2:
print("-----")
``````

## Step 3: Player Move

Write a function to allow players to make a move. Ensure the move is valid (i.e., within the board and not on a taken spot).

``````def player_move(board, player):
valid_move = False
while not valid_move:
move = input(f"Player {player}, enter your move (1-9): ")
if not move.isdigit() or not 1 <= int(move) <= 9:
print("Invalid input. Please enter a number between 1 and 9.")
elif board[int(move)-1] != " ":
else:
valid_move = True
board[int(move)-1] = player
``````

## Step 4: Check for a win or Tie

Implement a function to check if the game has been won or if it's a tie.

``````def check_win(board):
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]] == board[condition[1]] == board[condition[2]] != " ":
return board[condition[0]]
return None

def check_tie(board):
return " " not in board
``````

## Step 5: Switch Player

Create a simple mechanism to switch the current player after each move.

``````def switch_player(player):
return "X" if player == "O" else "O"
``````

## Step 6: The Main Game Loop

Combine all the functions in a main function to control the game's flow.

``````def play_game():
board = initialize_board()
current_player = "X"
winner = None
tie = False

while not winner and not tie:
display_board(board)
player_move(board, current_player)
winner = check_win(board)
tie = check_tie(board)
if not winner and not tie:
current_player = switch_player(current_player)

display_board(board)
if winner:
print(f"Player {winner} wins!")
else:
print("It's a tie!")
``````

## Step 7: Start The Game

Finally, ensure the game starts by calling play_game() when the script is executed directly.

``````if __name__ == "__main__":
play_game()
``````

## Complete Code

Combine all the snippets above into a single Python file to complete your Tic Tac Toe game. Players take turns entering their moves, prompted by the console. The game checks for a win or tie after each move, displaying the appropriate message at the end.

``````# Function to initialize the game board
def initialize_board():
return [" " for _ in range(9)]

# Function to display the game board
def display_board(board):
for i in range(3):
print("|".join(board[i*3:i*3+3]))
if i < 2:
print("-----")

# Function to handle player moves
def player_move(board, player):
valid_move = False
while not valid_move:
try:
move = int(input(f"Player {player}, enter your move (1-9): ")) - 1
if board[move] == " ":
board[move] = player
valid_move = True
else:
except (ValueError, IndexError):
print("Invalid input. Please enter a number between 1 and 9.")

# Function to check for a win
def check_win(board):
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]] == board[condition[1]] == board[condition[2]] != " ":
return board[condition[0]]
return None

# Function to check for a tie
def check_tie(board):
return " " not in board

# Function to switch the current player
def switch_player(player):
return "X" if player == "O" else "O"

# Main game loop
def play_game():
board = initialize_board()
current_player = "X"
winner = None
tie = False

while not winner and not tie:
display_board(board)
player_move(board, current_player)
winner = check_win(board)
tie = check_tie(board)
if not winner and not tie:
current_player = switch_player(current_player)

display_board(board)
if winner:
print(f"Player {winner} wins!")
else:
print("It's a tie!")

# Start the game
if __name__ == "__main__":
play_game()

``````

### Output:

``` | |
-----
| |
-----
| |
Player X, enter your move (1-9): 1
X| |
-----
| |
-----
| |
Player O, enter your move (1-9): 2
X|O|
-----
| |
-----
| |
Player X, enter your move (1-9): 5
X|O|
-----
|X|
-----
| |
Player O, enter your move (1-9): 9
X|O|
-----
|X|
-----
| |O
Player X, enter your move (1-9): 4
X|O|
-----
X|X|
-----
| |O
Player O, enter your move (1-9):
Invalid input. Please enter a number between 1 and 9.
Player O, enter your move (1-9): 7
X|O|
-----
X|X|
-----
O| |O
Player X, enter your move (1-9): 6
X|O|
-----
X|X|X
-----
O| |O
Player X wins!

=== Code Execution Successful ===```

## Conclusion

Congratulations! You've built a simple Tic Tac Toe game in Python. This project covers fundamental Python programming concepts, including functions, loops, conditionals, and managing game state. As an extension, consider adding features like replayability, a computer opponent, or even a graphical user interface using a library like Tkinter.