Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > fr.comp.lang.python > #3258

Optimisation de programme "Jeu des allumettes" de Fort Boyard

Newsgroups fr.comp.lang.python
Subject Optimisation de programme "Jeu des allumettes" de Fort Boyard
From FoxSayz <nospam_foxsayz03100@gmail.com.invalid>
Organization !No_Organization!
Message-ID <aNidncb3Y5XzhkTAnZ2dnUU7983NnZ2d@giganews.com> (permalink)
Date 2019-11-23 05:43 -0600

Show all headers | View raw


Bonjour, j'aimerais si possible qu'on m'aide à optimiser mon projet
Le voici ci-dessous :

def allumettes(x):  ## Fonction qui affiche les allumettes
    print(['|' for i in range(x)])
def strat(b, q):  ## "IA" du programme. strat2 et strat3 en sont des variantes
pour l'adapter à différentes situations. Le programme essaie d'atteindre les
positions gagnantes : 17, 13, 9 et 5 allumettes.
            b=q
            while True:
                print("A ton tour !")
                texte = "Combien retires tu d'allumettes ; une, deux, ou trois ?
Il y en a actuellement"+" "+str(b)
                cb = input(texte)
                if cb == '1' or cb == '2' or cb == '3':
                    if cb == '1':
                        b = b-1
                        allumettes(b)
                        print("A mon tour ! J'en retire 3 !")
                        b = b-3
                        allumettes(b)
                        if b == 1:
                            print("J'ai gagné !")
                            break
                    elif cb == '2':
                        b = b-2
                        allumettes(b)
                        print("A mon tour ! J'en retire 2 !")
                        b = b-2
                        allumettes(b)
                        if b == 1:
                            print("J'ai gagné !")
                            break
                    else:
                        b = b-3
                        allumettes(b)
                        print("A mon tour ! J'en retire 1 !")
                        b = b-1
                        allumettes(b)
                        if b == 1:
                            print("J'ai gagné !")
                            break
                else:
                    print("Ton nombre doit être 1, 2 ou 3 !")
                    break
def strat2(b, c):
    c = 0
    b = b-3-4*c
    allumettes(b)
    print("A mon tour ! J'en retire 1 !")
    b = b-1
    allumettes(b)
    print("A ton tour !")
    texte = "Combien retires tu d'allumettes ; une, deux, ou trois ? Il y en a
actuellement"+" "+str(b)
    cb = input(texte)
    if cb == '1' or cb == '2' or cb == '3':
        if cb == "1":
            b = b-1
            allumettes(b)
            print("A mon tour ! J'en retire 2 !")
            b = b-2
            allumettes(b)
            if b == 1:
               print("J'ai gagné !")
            else:
                strat(b, b)
        elif cb == "2":
            b = b-2
            allumettes(b)
            print("A mon tour ! J'en retire 1 !")
            b = b-1
            allumettes(b)
            if b == 1:
               print("J'ai gagné !")
            else:
                strat(b, b)
        else:
            if b == 4:
                allumettes(1)
                print("J'ai perdu... Bien joué !")
            else:
                strat2(b, c+1)
    else:
        print("Ton nombre doit être 1, 2 ou 3 !")
def strat3(b, c):
    c = 0
    b = b-4*c
    print("A mon tour ! J'en retire 1 !")
    b = b-1
    allumettes(b)
    print("A ton tour !")
    texte = "Combien retires tu d'allumettes ; une, deux, ou trois ? Il y en a
actuellement"+" "+str(b)
    cb = input(texte)
    if cb == '1' or cb == '2' or cb == '3':
        if cb == "1":
            b = b-1
            allumettes(b)
            print("A mon tour ! J'en retire 2 !")
            b = b-2
            allumettes(b)
            if b == 1:
               print("J'ai gagné !")
            else:
                strat(b, b)
        elif cb == "2":
            b = b-2
            allumettes(b)
            print("A mon tour ! J'en retire 1 !")
            b = b-1
            allumettes(b)
            if b == 1:
               print("J'ai gagné !")
            else:
                strat(b, b)
        else:
            if b == 4:
                allumettes(1)
                print("J'ai perdu... Bien joué !")
            else:
                strat2(b, c+1)
    else:
        print("Ton nombre doit être 1, 2 ou 3 !")
a = input("Un ou deux joueurs ? (1/2)")
if a == '1':
    f = input("Quelle difficulté pour l'ordinateur ? (1/2/3) Plus le chiffre est
grand, plus la difficulté augmente.") ## 3 niveaux de difficulté :
    if f == "3": ## Niveau de difficulté 3, le plus difficile. L'ordinateur
utilise tout le temps l'IA définie ci-dessus. Il essaie par tout les moyens
d'atteindre les positions gagnantes. La seule façon de le battre est de
commencer et d'enlever 3 allumettes à chaque fois.
        print("DIFFICULTE 3 : EXPERT")
        b=20
        allumettes(b)
        début = input("Qui commence ? (toi/moi)")
        if début == "toi" or début == "moi":
            if début == "toi":
                print("A mon tour ! J'en retire 3 !")
                b = b-3
                allumettes(b)
                strat(b, 17)
            else:
                print("A ton tour !")
                texte = "Combien retires tu d'allumettes ; une, deux, ou trois ?
Il y en a actuellement"+" "+str(b)
                cb = input(texte)
                if cb == '1' or cb == '2' or cb == '3':
                    if cb == "1":
                        b = b-1
                        allumettes(b)
                        print("A mon tour ! J'en retire 2 !")
                        b = b-2
                        allumettes(b)
                        strat(b, 17)
                    elif cb == "2":
                        b = b-2
                        allumettes(b)
                        print("A mon tour ! J'en retire 1 !")
                        b = b-1
                        allumettes(b)
                        strat(b, 17)
                    else:
                        strat2(20, 0)
                else:
                    print("Ton nombre doit être 1, 2 ou 3 !")
        else:
            print("Je n'ai pas compris ; qui doit commencer ?")
    elif f == "1" : ## Niveau de difficulté 1, le plus facile. L'ordinateur joue
tous ses coups au hasard.
        print("DIFFICULTE 1 : FACILE")
        from random import randint
        b=20
        allumettes(b)
        début = input("Qui commence ? (toi/moi)")
        if début == "moi" or début == "toi" :
            if début == "moi":
                while True:
                    print("A ton tour !")
                    texte = "Combien retires tu d'allumettes ; une, deux, ou
trois ? Il y en a actuellement"+" "+str(b)
                    cb = int(input(texte))
                    if cb == 1 or cb == 2 or cb == 3:
                        b = b-cb
                        allumettes(b)
                        if b <= 0:
                            print("Tu as perdu !")
                            break
                        elif b == 1:
                            print("J'ai perdu... Bien joué !")
                            break
                        o = randint(1,3)
                        z = "A mon tour, j'en retire"+" "+str(o)+" "+"!"
                        print(z)
                        b=b-o
                        allumettes(b)
                        if b <= 0:
                            print("J'ai perdu... Bien joué !")
                            break
                        elif b == 1:
                            print("Tu as perdu !")
                            break
                    else:
                        print("1, 2 ou 3 allumettes !")
            else:
                while True:
                    o = randint(1,3)
                    z = "A mon tour, j'en retire"+" "+str(o)+" "+"!"
                    print(z)
                    b=b-o
                    allumettes(b)
                    if b <= 0:
                        print("J'ai perdu !")
                        break
                    elif b == 1:
                        print("J'ai perdu... Bien joué !")
                        break
                    print("A ton tour !")
                    texte = "Combien retires tu d'allumettes ; une, deux, ou
trois ? Il y en a actuellement"+" "+str(b)
                    cb = int(input(texte))
                    if cb == 1 or cb == 2 or cb == 3:
                        b = b-cb
                        allumettes(b)
                        if b <= 0:
                            print("Tu as perdu !")
                            break
                        elif b == 1:
                            print("J'ai perdu... Bien joué !")
                            break
                    else:
                        print("1, 2 ou 3 !")
        else:
            print("Je n'ai pas compris ; qui doit commencer ?")
    else: ##Difficulté 2, niveau intermédiaire. C'est un melange du niveau 3 et
1 : deux positions gagnantes sont gardées: 13 et 5. L'orinateur se comporte
comme au niveau 1 mais bascule au niveau 3 (et utilise l'IA) si une des
positions gagnante est atteinte.
        print("DIFFICULTE 2 : DIFFICILE")
        from random import *
        b = 20
        allumettes(b)
        début = input("Qui commence ? (toi/moi)")
        if début == "moi" or début == "toi" :
            if début == "moi":
                while True:
                    print("A ton tour !")
                    texte = "Combien retires tu d'allumettes ; une, deux, ou
trois ? Il y en a actuellement"+" "+str(b)
                    cb = int(input(texte))
                    if cb == 1 or cb == 2 or cb == 3:
                        b = b-cb
                        allumettes(b)
                        if b <= 0:
                            print("Tu as perdu !")
                            break
                        elif b == 1:
                            print("J'ai perdu... Bien joué !")
                            break
                        elif b == 13:
                            strat3(b,1)
                            break
                        elif b == 5:
                            strat3(b,3)
                            break
                        o = randint(1,3)
                        z = "A mon tour, j'en retire"+" "+str(o)+" "+"!"
                        print(z)
                        b=b-o
                        allumettes(b)
                        if b <= 0:
                            print("J'ai perdu !")
                            break
                        elif b == 1:
                            print("J'ai perdu... Bien joué !")
                            break
                        elif b == 13:
                            strat(b,13)
                            break
                        elif b == 5:
                            strat(b,5)
                            break
                    else:
                        print("1, 2 ou 3 allumettes !")
            else:
                while True:
                    o = randint(1,3)
                    z = "A mon tour, j'en retire"+" "+str(o)+" "+"!"
                    print(z)
                    b=b-o
                    allumettes(b)
                    if b <= 0:
                        print("J'ai perdu !")
                        break
                    elif b == 1:
                        print("J'ai perdu... Bien joué !")
                        break
                    elif b == 13:
                        strat(b,13)
                        break
                    elif b == 5:
                        strat(b,5)
                        break
                    print("A ton tour !")
                    texte = "Combien retires tu d'allumettes ; une, deux, ou
trois ? Il y en a actuellement"+" "+str(b)
                    cb = int(input(texte))
                    if cb == 1 or cb == 2 or cb == 3:
                        b = b-cb
                        allumettes(b)
                        if b <= 0:
                            print("Tu as perdu !")
                            break
                        elif b == 1:
                            print("J'ai perdu... Bien joué !")
                            break
                        elif b == 13:
                            strat3(13,1)
                            break
                        elif b == 5:
                            strat3(5,3)
                            break
                    else:
                        print("1, 2 ou 3 !")
        else:
            print("Je n'ai pas compris ; qui doit commencer ?")
else:
    b=20
    allumettes(b)
    while True:
        e = "Joueur 1, à toi ! Il y a"+" "+str(b)+" "+"allumettes."
        a = int(input(e))
        if a == 1 or a ==2 or a == 3:
            if a == 1:
                print("Tu en retires une !")
                b=b-1
                allumettes(b)
            elif a == 2:
                print("Tu en retires deux !")
                b=b-2
                allumettes(b)
            else:
                print("Tu en retires trois !")
                b=b-3
                allumettes(b)
            if b == 1 :
                print("Joueur 1, tu as gagné, bravo !")
                break
            if b <= 0:
                print("Joueur 2, tu as gagné, bravo !")
                break
        else:
            print("1/2/3 !")
        p = "Joueur 2, à toi ! Il y a"+" "+str(b)+" "+"allumettes."
        q = int(input(p))
        if q == 1 or q ==2 or q == 3:
            if q == 1:
                print("Tu en retires une !")
                b=b-1
                allumettes(b)
            elif q == 2:
                print("Tu en retires deux !")
                b=b-2
                allumettes(b)
            else:
                print("Tu en retires trois !")
                b=b-3
                allumettes(b)
            if b == 1:
                print("Joeur 2, tu as gagné, bravo !")
                break
            if b <= 0:
                print("Joeur 2, tu as gagné, bravo !")
                break
        else:
            print("1/2/3 !")

Back to fr.comp.lang.python | Previous | Next | Find similar


Thread

Optimisation de programme "Jeu des allumettes" de Fort Boyard FoxSayz <nospam_foxsayz03100@gmail.com.invalid> - 2019-11-23 05:43 -0600

csiph-web