def drawboard():
  print("\n")
  print("   | A | B | C")
  print("---------------")
  print(" 1 | " + game[0] + " | " + game[1] + " | " + game[2])
  print("---------------")
  print(" 2 | " + game[3] + " | " + game[4] + " | " + game[5])
  print("---------------")
  print(" 3 | " + game[6] + " | " + game[7] + " | " + game[8])
  print("\n")

def checkwin():
  #Check Player X
  if game[0] == "X" and game[1] == "X" and game[2] == "X":
    print("Player X wins")
    return True
  elif game[3] == "X" and game[4] == "X" and game[5] == "X":
    print("Player X wins")
    return True
  elif game[6] == "X" and game[7] == "X" and game[8] == "X":
    print("Player X wins")
    return True
  elif game[0] == "X" and game[3] == "X" and game[6] == "X":
    print("Player X wins")
    return True
  elif game[1] == "X" and game[4] == "X" and game[7] == "X":
    print("Player X wins")
    return True
  elif game[2] == "X" and game[5] == "X" and game[8] == "X":
    print("Player X wins")
    return True
  elif game[0] == "X" and game[4] == "X" and game[8] == "X":
    print("Player X wins")
    return True
  elif game[2] == "X" and game[4] == "X" and game[5] == "X":
    print("Player X wins")
    return True

  #Check Player O
  elif game[0] == "O" and game[1] == "O" and game[2] == "O":
    print("Player O wins")
    return True
  elif game[3] == "O" and game[4] == "O" and game[5] == "O":
    print("Player O wins")
    return True
  elif game[6] == "O" and game[7] == "O" and game[8] == "O":
    print("Player O wins")
    return True
  elif game[0] == "O" and game[3] == "O" and game[6] == "O":
    print("Player O wins")
    return True
  elif game[1] == "O" and game[4] == "O" and game[7] == "O":
    print("Player O wins")
    return True
  elif game[2] == "O" and game[5] == "O" and game[8] == "O":
    print("Player O wins")
    return True
  elif game[0] == "O" and game[4] == "O" and game[8] == "O":
    print("Player O wins")
    return True
  elif game[2] == "O" and game[4] == "O" and game[5] == "O":
    print("Player O wins")
    return True

  #Check if draw
  elif " " not in game:
    print("Draw")
    return True
  else:
    return False

###################################################

game = [" "," "," "," "," "," "," "," "," "]
drawboard()

gameover = False
flag = True
while flag == True:
  symbol = "?"
  for i in range(0,2):
    if gameover == True:
      flag = False
    else:
      if i == 0:
        symbol = "X"
      elif i == 1:
        symbol = "O"
      player = True
      while player == True:
        print("Player (" + symbol + ") type in grid reference")
        ref = input()
        if ref == "a1" and game[0]==" ":
          game[0] = symbol
          player = False
        elif ref == "b1" and game[1]==" ":
          game[1] = symbol
          player = False
        elif ref == "c1" and game[2]==" ":
          game[2] = symbol
          player = False
        elif ref == "a2" and game[3]==" ":
          game[3] = symbol
          player = False
        elif ref == "b2" and game[4]==" ":
          game[4] = symbol
          player = False
        elif ref == "c2" and game[5]==" ":
          game[5] = symbol
          player = False
        elif ref == "a3" and game[6]==" ":
          game[6] = symbol
          player = False
        elif ref == "b3" and game[7]==" ":
          game[7] = symbol
          player = False
        elif ref == "c3" and game[8]==" ":
          game[8] = symbol
          player = False
        else:
          print("Grid reference not recognised, try again.")
      drawboard()
      gameover = checkwin()
