Python Terminal Game: Tic Tac Toe

Hi All!

I got stuck SUPER hard during this project, so I watched the same YouTube video multiple times to help with us. It is not my code, but I am posting anyways here to see how it could be improved.

brand new project

------- GLOBAL VARIABLES

#board

board = ["-", “-”, “-”,

     "-", "-", "-",

     "-", "-", "-"]

game_still_going = True

#Who won

winner = None

#whose turn

current_player = “X”

def display_board():

print(board[0] + " | " + board[1] + " | " + board[2])

print(board[3] + " | " + board[4] + " | " + board[5])

print(board[6] + " | " + board[7] + " | " + board[8])

def play_game():

display_board()

while game_still_going:

    #handle the single turn

    handle_turn(current_player)

    #check if the game has ended

    check_if_game_over()

    # flip to other player

    flip_player()

# The game has ended

if winner == "X" or winner == "O":

    print(winner + " won.")

elif winner == None:

    print("Tie.")

def handle_turn(player):

print(player + "'s turn.")

position = input("Choose a position from 1-9: ")

valid = False

while not valid:

    while position not in ["1", "2", "3", "4", "5", "6", "7", "8", "9"]:

        position = input("Choose a position from 1-9: ")

    position = int(position) - 1

    if board[position] == "-":

        valid = True

    else:

        print("You can't go there, try again")

board[position] = player

display_board()

def check_if_game_over():

check_for_winner()

check_if_tie()

def check_for_winner():

global winner

#check rows

row_winner = check_rows()

#check columms

column_winner = check_columns()

#check Diagonals

diagonal_winner = check_diagonals()

if row_winner:

    winner = row_winner

elif column_winner:

    winner = column_winner

elif diagonal_winner:

    winner = diagonal_winner

else:

    winner = None

return

def check_rows():

global game_still_going

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 row_1 or row_2 or row_3:

    game_still_going = False

if row_1:

    return board[0]

elif row_2:

    return board[3]

elif row_3:

    return board[6]

return

def check_columns():

global game_still_going

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 column_1 or column_2 or column_3:

    game_still_going = False

if column_1:

    return board[0]

elif column_2:

    return board[1]

elif column_3:

    return board[2]

return

def check_diagonals():

global game_still_going

diagonal_1 = board[0] == board [4] == board [8] != "-"

diagonal_2 = board[6] == board [4] == board [2] != "-"

if diagonal_1 or diagonal_2:

    game_still_going = False

if diagonal_1:

    return board[0]

elif diagonal_2:

    return board[6]

return

def check_if_tie():

global game_still_going

if "-" not in board:

    game_still_going = False

return

def flip_player():

global current_player

if current_player == "X":

    current_player = "O"

elif current_player == "O":

    current_player = "X"

return

#display board

play_game()

#board

#display board

#play game

#handle a turn

#check win

#check row

#check columnes

#check diagonals

#check tie

#flip player