petitjeu.py

Created by schraf

Created on October 24, 2022

625 Bytes

Goûteur de plats chez Cléopâtre

Le jeu d'origine provient de la revue "L'ordinateur de poche n°22 (1984) page 42" que vous pourrez télécharger ici

Programmation du jeu

Explications en vidéo

L'organigramme du jeu est le suivant (PL = Points de Liberté) :

Le programme final est disponible ci-dessous.

Probabilités de gagner (par simulation)

Quelles sont les probabilités de gagner à ce jeu lorsqu'au départ nous avons un seul point de liberté ? 2 points ? 3 points ? Pour le savoir, nous allons demander à la machine de jouer toute seule et nous calculerons les fréquences de succès dans les différents cas.

from random import *
def go(PL = 1): # un seul PL par defaut
 gagne = 0  # nb de parties gagnees
 nbsimul = 10000 # nb de simulations
 for k in range(nbsimul):
  if jeu(PL): gagne += 1 # +1 si on gagne 
 return gagne / nbsimul # frequence observee

def jeu(PL):
 while True: # boucle principale
  plats = ["1","2","3","4"] # Liste des plats
  poison = choice(plats) # Ordi choisit plat avec poison
  choix = choice(plats) # Joueur choisit un plat pr ennemi
  plats.remove(choix) # On enleve le plat
  if choix == poison:
   PL += 1 # Ennemi meurt donc +1 pour nous
   if PL == 4: return True # On gagne la partie
  else:
   choix = choice(plats) # Joueur  choisir un plat pr lui
   if choix == poison: # oups, plat avec poison
    if PL > 1: PL -= 1 # -1 si on a encore des PL
    else: return False # Sinon on perd la partie

En lançant le programme avec différents paramètres on obtient :

go()
0.2491 # 25% de chance de gagner avec un seul PL au départ
> go(2)
0.5044 # 50% de chance de gagner avec un 2 PL au départ
> go(3)
0.7527 # 75% de chance de gagner avec un 3 PL au départ

Probabilités de gagner


from random import *
def go():
 PL = 2
 while True :
  plats = ["1","2","3","4"]
  poison = choice(plats)
  print("PL =", PL)
  print("Plat pour ennemi de Cleopatre ?")
  choix = input("1234 ? ")
  plats.remove(choix)
  if choix == poison:
   print("Bon choix ! Il meurt")
   PL += 1
   if PL == 4:
    return "Vous etes libre !"
  else:
   print("Il se regale !") 
   print("Maintenant pour vous :")
   choix = input("".join(plats) + " ? ")
   if choix == poison:
    print("Il contient du poison !")
    if PL > 1: PL -= 1
    else: return "Vous etes mort !"
   else:
     print("Vous avez de la chance !")