plateau1 = [[0, 0, 0, 0, 0, 0, 0],
            [0, 0, 0, 0, 0, 0, 0],
            [0, 0, 0, 0, 0, 0, 0],
            [0, 0, 0, 1, 0, 0, 0],
            [0, 1, 2, 2, 1, 0, 0],
            [2, 1, 2, 1, 2, 1, 2]]

def plateau_vide():
    """Renvoie un plateau vide, c'est-à-dire une matrice de 6 lignes et 7 colonnes,
    rempli de 0"""
    return [[0 for _ in range(7)] for _ in range(6)]

def afficher(plateau):
    """Affiche le plateau, ne renvoie rien."""
    conversion = {0:".", 1:"ø", 2:"0"}
    for ligne in plateau:
        for element in ligne:
            print(conversion[element], end="")
        print()
    print()

def copie(plateau):
    """Renvoie une copie du plateau en argument, ne modifie pas plateau"""
    return [ligne.copy() for ligne in plateau]

def jouer(plateau, joueur, colonne):
    """Renvoie une copie du plateau dans lequel le joueur (1 ou 2) a joué dans la colonne
    colonne (en supposant que c'est possible)"""
    return

def coups_possibles(plateau):
    """Renvoie la liste des indices de colonnes dans lesquels on peut jouer."""
    return

from math import inf
dico_score = {(0, 1): -1, (0, 2): -2, (0, 3): -3, (0, 4): -inf,
              (1, 0):  1, (2, 0):  2, (3, 0):  3, (4, 0): inf}

def score_segment(plateau, i, j, di, dj):
    """Calcule le score lié au segment (i, j), (i + di, j + dj),
    (i + 2×di, j + 2×dj), et (i + 3×di, j + 3×dj)"""
    return

def score_plateau(plateau):
    """Calcule le score lié au plateau entier
    (teste toutes les lignes, colonnes et diagonales)."""
    return

def strategie_j1_glouton(plateau, sc):
    """Renvoie une copie de plateau sur laquelle le coup optimal du premier joueur a été joué."""
    return

def strategie_j2_glouton(plateau, sc):
    """Renvoie une copie de plateau sur laquelle le coup optimal du premier joueur a été joué."""
    return

def maximin(plateau, p, sc):
    """Renvoie le coup optimal à profondeur p pour le joueur 1"""
    return

def minimax(plateau, p, sc):
    """Renvoie le coup optimal à profondeur p pour le joueur 2"""
    return

def jeu(p):
    "Joueur 1 joue min-max avec profondeur p et Joueur 2 joue glouton"
    plateau = plateau_vide()
    joueur = 1
    while coups_possibles(plateau) != []:
        # à compléter
        afficher(plateau)
        s = score_plateau(plateau)
        if s == inf:
            return # à compléter
        elif s == -inf:
            return # à compléter
    # à compléter
