grille1 = [[1, 0, 0], [0, 1, 0], [2, 0, 2]]

def afficher(grille):
    "affiche la grille"
    conversion = {0:' ', 1:'✖', 2:'●'}
    print(' _ _ _')
    for ligne in grille:
        print('|', end='')
        for elem in ligne:
            print(conversion[elem], end='|')
        print()
    print(' ‾ ‾ ‾')

def gagnant(grille):
    "renvoie 0, 1, 2 suivant si personne, le joueur 1 ou le joueur 2 gagne."
    for k in (0, 1, 2): # Analyse des lignes et des colonnes
        if grille[k][0] == grille[k][1] == grille[k][2]:
            return grille[k][0]
        if grille[0][k] == grille[1][k] == grille[2][k]:
            return grille[0][k]
    for k in (0, 2) : # Analyse des diagonales
        if grille[k][0] == grille[1][1] == grille[2 - k][2]:
            return grille[1][1]
    return 0

def grille2tuple(grille):
    "convertit une grille 3x3 en tuple"
    return tuple(grille[0] + grille[1] + grille[2])

def tuple2grille(tuple):
    "convertit un tuple en grille 3x3"
    return [[tuple[3 * i+j] for j in range(3)] for i in range(3)]

def copie(grille):
    "renvoie une copie de la grille"
    return [ligne.copy() for ligne in grille]
    # alternative :
    # return tuple2grille(grille2tuple(grille))

def cases_libres(grille):
    return

def joueur(grille):
    return

def successeurs(grille):
    return

def estPosVictoire1(grille, gmem):
    return

def attracteur1(grille):
    return

def estPosVictoire2(grille, gmem):
    return

def attracteur2(grille):
    return

def jeu():
    grille = [[0, 0, 0] for _ in range(3)] 
    wp1 = attracteur1(grille)
    wp2 = attracteur2(grille)
    while gagnant(grille) == 0 and len(cases_libres(grille)) > 0:
        t = grille2tuple(grille)
        if joueur(grille) == 2:
            afficher(grille)
            i, j = -1, -1
            while i not in (1, 2, 3) or j not in (1, 2, 3) or grille[i - 1][j - 1] != 0:
                i, j = map(int, list(input("Coordonnées de votre coup de la forme LigneColonne : ")))
            grille[i - 1][j - 1] = 2
        else:
            # WRITE ME
            return # REMOVE ME
    gagne = gagnant(grille)
    afficher(grille)
    if gagne != 0:
        print(f"Le joueur {gagne} a gagné !")
    else:
        print("Match nul.")
