f = open("sample.txt")
text = f.read()
print(text)

###

def isGameOver(board):
    if isFull(board):
        return True
    allLines = horizLines(board) + vertLines(board) + diagLines(board)
    for line in allLines:
        if line == "XXX" or line == "OOO":
            return True
    return False

def playGame():
    board = makeBoard()
    showBoard(board)
    isXTurn = True
    while not isGameOver(board):
        if isXTurn:
            board = takeTurn(board, "X")
        else:
            board = takeTurn(board, "O")
        showBoard(board)
        isXTurn = not isXTurn
    print("Goodbye")

# Construct the tic-tac-toe board
def makeBoard():
    board = []
    for row in range(3):
        # Add a new row to board
        board.append([".", ".", "."])
    return board

# Print the board as a 3x3 grid
def showBoard(board):
    for row in range(3):
        line = ""
        for col in range(3):
            line += board[row][col]
        print(line)

# Ask the user to input where they want
# to go next with row,col position
def takeTurn(board, player):
    while True:
        row = input("Enter a row for " + player + ":")
        col = input("Enter a col for " + player + ":")
        # Make sure it's a number!
        if row.isdigit() and col.isdigit():
            row = int(row)
            col = int(col)
            # Make sure it's in the grid!
            if 0 <= row < 3 and 0 <= col < 3:
                if board[row][col] == ".":
                    board[row][col] = player
                    # stop looping when move is made
                    return board
                else:
                    print("That space isn't open!")
            else:
                print("Not a valid space!")
        else:
            print("That's not a number!")

# Generate all horizontal lines
def horizLines(board):
    lines = []
    for row in range(3):
        lines.append(board[row][0] + \
                     board[row][1] + \
                     board[row][2])
    return lines

# Generate all vertical lines
def vertLines(board):
    lines = []
    for col in range(3):
        lines.append(board[0][col] + \
                     board[1][col] + \
                     board[2][col])
    return lines

# Generate both diagonal lines
def diagLines(board):
    leftDown = board[0][0] + \
               board[1][1] + \
               board[2][2]
    rightDown = board[0][2] + \
                board[1][1] + \
                board[2][0]
    return [ leftDown, rightDown ]

# Check if the board has no empty spots
def isFull(board):
    for row in range(3):
        for col in range(3):
            if board[row][col] == ".":
                return False
    return True
