Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # --------- Global Variables -----------
- # Will hold our game board data
- board = ["-", "-", "-",
- "-", "-", "-",
- "-", "-", "-"]
- # Lets us know if the game is over yet
- game_still_going = True
- # Tells us who the winner is
- winner = None
- # Tells us who the current player is (X goes first)
- current_player = "X"
- # ------------- Functions ---------------
- # Play a game of tic tac toe
- def play_game():
- # Show the initial game board
- display_board()
- # Loop until the game stops (winner or tie)
- while game_still_going:
- # Handle a turn
- handle_turn(current_player)
- # Check if the game is over
- check_if_game_over()
- # Flip to the other player
- flip_player()
- # Since the game is over, print the winner or tie
- if winner == "X" or winner == "O":
- print(winner + " won.")
- elif winner == None:
- print("Tie.")
- # Display the game board to the screen
- def display_board():
- print("\n")
- print(board[0] + " | " + board[1] + " | " + board[2] + " 1 | 2 | 3")
- print(board[3] + " | " + board[4] + " | " + board[5] + " 4 | 5 | 6")
- print(board[6] + " | " + board[7] + " | " + board[8] + " 7 | 8 | 9")
- print("\n")
- # Handle a turn for an arbitrary player
- def handle_turn(player):
- # Set global variables we need to edit
- global winner
- # Get position from player
- print(player + "'s turn.")
- position = input("Choose a position from 1-9: ")
- # Whatever the user inputs, make sure it is a valid input, and the spot is open
- valid = False
- while not valid:
- # Make sure the input is valid
- while position not in ["1", "2", "3", "4", "5", "6", "7", "8", "9"]:
- position = input("Choose a position from 1-9: ")
- # Get correct index in our board list
- position = int(position) - 1
- # Then also make sure the spot is available on the board
- if board[position] == "-":
- valid = True
- else:
- print("You can't go there. Go again.")
- # Put the game piece on the board
- board[position] = player
- # Show the game board
- display_board()
- # Check if the game is over
- def check_if_game_over():
- check_for_winner()
- check_for_tie()
- # Check to see if somebody has won
- def check_for_winner():
- # Set global variables
- global winner
- # Check if there was a winner anywhere
- row_winner = check_rows()
- column_winner = check_columns()
- diagonal_winner = check_diagonals()
- # Get the winner
- if row_winner:
- winner = row_winner
- elif column_winner:
- winner = column_winner
- elif diagonal_winner:
- winner = diagonal_winner
- else:
- winner = None
- # Check the rows for a win
- def check_rows():
- # Set global variables
- global game_still_going
- # Check if any of the rows have all the same value (and is not empty)
- row_1 = board[0] == board[1] == board[2] != "-"
- row_2 = board[3] == board[4] == board[5] != "-"
- row_3 = board[6] == board[7] == board[8] != "-"
- # If any row does have a match, flag that there is a win
- if row_1 or row_2 or row_3:
- game_still_going = False
- # Return the winner
- if row_1:
- return board[0]
- elif row_2:
- return board[3]
- elif row_3:
- return board[6]
- # Or return None if there was no winner
- else:
- return None
- # Check the columns for a win
- def check_columns():
- # Set global variables
- global game_still_going
- # Check if any of the columns have all the same value (and is not empty)
- column_1 = board[0] == board[3] == board[6] != "-"
- column_2 = board[1] == board[4] == board[7] != "-"
- column_3 = board[2] == board[5] == board[8] != "-"
- # If any row does have a match, flag that there is a win
- if column_1 or column_2 or column_3:
- game_still_going = False
- # Return the winner
- if column_1:
- return board[0]
- elif column_2:
- return board[1]
- elif column_3:
- return board[2]
- # Or return None if there was no winner
- else:
- return None
- # Check the diagonals for a win
- def check_diagonals():
- # Set global variables
- global game_still_going
- # Check if any of the columns have all the same value (and is not empty)
- diagonal_1 = board[0] == board[4] == board[8] != "-"
- diagonal_2 = board[2] == board[4] == board[6] != "-"
- # If any row does have a match, flag that there is a win
- if diagonal_1 or diagonal_2:
- game_still_going = False
- # Return the winner
- if diagonal_1:
- return board[0]
- elif diagonal_2:
- return board[2]
- # Or return None if there was no winner
- else:
- return None
- # Check if there is a tie
- def check_for_tie():
- # Set global variables
- global game_still_going
- # If board is full
- if "-" not in board:
- game_still_going = False
- return True
- # Else there is no tie
- else:
- return False
- # Flip the current player from X to O, or O to X
- def flip_player():
- # Global variables we need
- global current_player
- # If the current player was X, make it O
- if current_player == "X":
- current_player = "O"
- # Or if the current player was O, make it X
- elif current_player == "O":
- current_player = "X"
- # ------------ Start Execution -------------
- # Play a game of tic tac toe
- play_game()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement