def saisieJoueur(grille):
	# les valeurs par défaut de x et y ne doivent pas être bonne
	# pour pouvoir rentrer dans le voile
	x = -1
	y = -1
	triche = True
	while triche:
		print("Entrer un entier entre 0 et 2 pour x")
		x = int(input())
		print("Entrer un entier entre 0 et 2 pour y")
		y = int(input())
		if ((x > 2 or x < 0) or (y > 2 or y < 0)):
			triche = True
		# par convention, une case vide est un espace
		elif grille[x][y] != " ":
			triche = True
		else:
			triche = False
	return x,y

def initGrille():
	return [[" "," "," "],[" "," "," "],[" "," "," "]]

def afficheGrille(grille):
	for i in range(3):
		str1 = "|"
		for j in range(3):
			str1 += grille[i][j] + "|"
		print(str1)

def grillePleine(grille):
	for i in range(3):
		if grille[i].count(" ") > 0:
				return False
	return True

def winner(grille, player):
	# ligne
	for i in range(3):
		if grille[i][0] == grille[i][1] and grille[i][0] == grille[i][2] and grille[i][0] != " ":
			print(player, " a gagne")
			return True
	# colonne
	for i in range(3):
		if grille[0][i] == grille[1][i] and grille[0][i] == grille[2][i] and grille[0][i] != " ":
			print(player, " a gagne")
			return True
	# diagonale
	if grille[0][0] == grille[1][1] and grille[0][0] == grille[2][2] and grille[0][0] != " ":
		print(player, " a gagne")
		return True
	if grille[0][2] == grille[1][1] and grille[0][2] == grille[2][0] and grille[0][2] != " ":
		print(player, " a gagne")
		return True
	return False

grille = initGrille()
joueur = "O"
afficheGrille(grille)
while not grillePleine(grille) and not winner(grille, joueur) :
	# on change de joueur
	if joueur == "X":
		joueur = "O"
	else:
		joueur = "X"
	x,y = saisieJoueur(grille)
	grille[x][y] = joueur
	afficheGrille(grille)










