#Definitely works def draw(board): foundASpace = False for row in board: if '-' in row: foundASpace = True return not foundASpace and not won(board) def won(board): for i in range(0, 2): if(board[i][0] == board[i][1] and board[i][0] == board[i][2] and board[i][0] != '-'): return True for i in range(0, 2): if(board[0][i] == board[1][i] and board[0][i] == board[2][i] and board[0][i] != '-'): return True if(board[0][0] == board[1][1] and board[0][0] == board[2][2] and board[0][0] != '-'): return True if(board[0][2] == board[1][1] and board[2][0] == board[1][1] and board[0][2] != '-'): return True return False #Prints the board #This works def printBoard(board): for innerList in board: for item in innerList: print(item, end="") print() #board must be a 2d list #turn is a boolean #returns true or false if move is successful def move(board, turn, row, column): if(row < 0 or row > 2 or column < 0 or column > 2): return False if(board[row][column] == '-'): if(turn): board[row][column] = 'X' else: board[row][column] = 'O' return True else: return False def main(): xTurn = True board = [ ['-', '-', '-'], ['-', '-', '-'], ['-', '-', '-']] while(not won(board) and not draw(board)): row = int(input("Please enter a row ")) col = int(input("PLease enter a col ")) #This branch happens if move is valid #Move also changes board if(move(board, xTurn, row, col)): xTurn = not xTurn printBoard(board) else: print("Illegal move, what are you 5") main()