def printGame(game):
    pass
    for row in game:
        print("| ", end = '')
        for char in row:
            print(char+" | ", end = '')
        print()

def getGame(*size):
    if len(size) == 0:
        n = int(input("Enter size of the game (minimum 3): "))
    else: n = size[0]
    if n < 3: n = 3
    return [["-" for x in range(n)] for x in range(n)]

def isAllowed(game, x, y):
    if x<0 or x >= len(game): return False
    if y<0 or y >= len(game): return False
    return game[x][y] == "-"

def humanTurn(game, char):
    x,y = -1, -1
    while (not isAllowed(game, x, y)):
        printGame(game)
        x = int(input("Enter X position of your move: "))
        y = int(input("Enter Y position of your move: "))
    game[x][y] = char

import random

def machineTurn(game, char):
    x,y = -1, -1
    while (not isAllowed(game, x, y)):
        x = random.randint(0,len(game)-1)
        y = random.randint(0,len(game)-1)
    game[x][y] = char

def boardFull(game):
    for row in game:
        for cell in row:
            if cell == "-": return False
    return True

def gameFinished(game):
    for x in range(len(game)):
        for y in range(len(game)):
            char = game[x][y]
            if char == "-": continue
            if (y < len(game)-2 and game[x][y+1] == char
                and game[x][y+2]) == char:
                return char
            if (x< len(game)-2 and game[x+1][y] == char
                and game[x+2][y] == char):
                return char
            # add other two directions

def play(machine, game):
    while True:
        if boardFull(game):
            print("No winner!")
            printGame(game)
            break
        winner = gameFinished(game)
        if winner == "O":
            print("Machine wins!")
            printGame(game)
            break
        if winner == "X":
            print("Human wins!")
            printGame(game)
            break
        if machine:
            machineTurn(game,"O")
        else:
            #machineTurn(game,"X") # pro machine-to-machine testy
            humanTurn(game, "X")
        machine = not machine


machine = True
game = getGame(3) #abychom to nemuseli porad zadavat
play(machine,game)


