Le jeu de Nim

Le jeu de Nim

## Nim

def print_allumettes(n):
    s=""
    for i in range(0,n):
        s=s+"|"
    print(s)
    return(0)

def step(n,j):
    print("Joueur",j," : Combien d'allumettes prenez-vous ? (1, 2 ou 3)")
    x=int(input())
    if (not (x==1 or x==2 or x==3) or x>n):
        print("Impossible")
        x=int(input("Combien d'allumettes prenez-vous ? (1, 2 ou 3)"))
    else:
        print_allumettes(n-x)
        return(n-x)

def jeu(n):
    j=0
    allu = n
    print_allumettes(allu)
    while (allu != 0):
        allu=step(allu,j)
        j=1-j
    print("Le joueur",j,"a gagné")

import random as rd

def step_ia(n):
    if n==1:
        print("J'en prends 1")
        return(0)
    elif n%4 == 0:
        print("J'en prends 3")
        n=n-3
        print_allumettes(n)
        return(n)
    elif n%4 == 1:
        i=rd.randint(1,3)
        print("J'en prends",i)
        n=n-i
        print_allumettes(n)
        return(n)
    elif n%4 == 2:
        print("J'en prends 1")
        n=n-1
        print_allumettes(n)
        return(n)
    else:   
        print("J'en prends 2")
        n=n-2
        print_allumettes(n)
        return(n)

def jeu_ia(n):
    print_allumettes(n) 
    print("Je commence")
    while (n!=0):
        n=step_ia(n)
        print("\n")
        if n==0:
            print("J'ai perdu")
        else:
            n=step(n,0)
            print("\n")
            if n==0:
                print("J'ai gagne")

## Jeu de Morpion

def affiche_grille(s):
    print(s[0],s[1],s[2])
    print(s[3],s[4],s[5])
    print(s[6],s[7],s[8])

def check_win(s,i,j,k):
    if (s[i] == "x" and s[j] == "x" and s[k] == "x"):
        return(True)
        print("Le joueur x gagne")
    elif (s[i] == "o" and s[j] == "o" and s[k] == "o"):
        return(True)
        print("Le joueur o gagne")
    else:
        return(False)

def step(s,p):
    print("Joueur",p,": choisissez une case")
    n=int(input())
    if not (s[n] == "-"):
        print("Case déjà prise. Choisissez une autre")
        n=int(input())
    return(s[:n]+p+s[n+1:])

def jeu(p):
    affiche_grille("012345678")
    s=("---------")
    n=0
    win=False
    while ((not win) and n<9):
        s=step(s,p)
        affiche_grille(s)
        if p=="x":
            p="o"
        else:
            p="x"
        n=n+1
        win = (check_win(s,0,1,2) or check_win(s,3,4,5) or check_win(s,6,7,8) or check_win(s,0,3,6) or check_win(s,1,4,7) or check_win(s,2,5,8) or check_win(s,0,4,8) or check_win(s,6,4,2))
    if n==9:
        print("C'est une égalité")
    else:
        if p=="x":
            print("Le joueur o a gagné")
        else:
            print("Le joueur x a gagné")