Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Optimisation de programme "Jeu des allumettes" de Fort Boyard

Aucune réponse
Avatar
FoxSayz
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 !")

Réponses