
from IPython.display import clear_output
import random

def display_board(board):
    clear_output()
    print(board[1]+'|'+board[2]+'|'+board[3])
    print(board[4]+'|'+board[5]+'|'+board[6])
    print(board[7]+'|'+board[8]+'|'+board[9])

def player_input():

    marker = ''

    while marker!='X' and marker!='O':
        marker = input('Player - Input X or O: ')

    if marker == 'X':
        return ('X','O')
    else:
        return ('O','X')

def choose_first():
    if random.randint(0, 1) == 0:
        return 'Player 2'
    else:
        return 'Player 1'

def player_choice(board):
    position = 0

    while position not in [1,2,3,4,5,6,7,8,9] or not space_check(board, position):
        position = int(input('Choose your next position: (1-9) '))

    return position

def place_marker(board, marker, position):
    board[position] = marker

def win_check(board,mark):

    return ((board[7] == mark and board[8] == mark and board[9] == mark) or # across the top
            (board[4] == mark and board[5] == mark and board[6] == mark) or # across the middle
            (board[1] == mark and board[2] == mark and board[3] == mark) or # across the bottom
            (board[7] == mark and board[4] == mark and board[1] == mark) or # down the middle
            (board[8] == mark and board[5] == mark and board[2] == mark) or # down the middle
            (board[9] == mark and board[6] == mark and board[3] == mark) or # down the right side
            (board[7] == mark and board[5] == mark and board[3] == mark) or # diagonal
            (board[9] == mark and board[5] == mark and board[1] == mark)) # diagonal

def space_check(board, position):

    return board[position] == ' '

print('Welcome to TIC TAC TOE')

theBoard = [' '] * 10
display_board(theBoard)
player1,player2 = player_input()
turn = choose_first()
print('The {} is to play first'.format(turn))

start = input('Are you ready to play? Enter Yes or No.')

if start.lower()[0]=='y':
    start = True
else:
    start = False

while start:
    if turn == 'Player 1':
        display_board(theBoard)
        position = player_choice(theBoard)
        place_marker(theBoard, player1, position)
        if win_check(theBoard,player1):
            display_board(theBoard)
            print('Player1 has won the game ')
            start = False
        else:
            turn = 'Player 2'

    else:
        display_board(theBoard)
        position = player_choice(theBoard)
        place_marker(theBoard, player2, position)
        if win_check(theBoard,player2):
            display_board(theBoard)
            print('Player2 has won the game ')
            start = False
        else:
            turn = 'Player 1'