Les boucles

Notre programme est bien avancé, il gÚre désormais les rÚgles de base et le score. Cependant, le programme ne permet de gérer le fait qu'un joueur retire le dé plusieurs fois.

Lorsque l'on veut répéter des instructions identique, on emploie des boucles.

Testez le code suivant dans REPL :

import random

print("Boucle For")
for i in range(10):
  print(i)

print("")

print("Boucle while")
i = 0
while i < 100:
  print(i)
  i = i + random.randint(1,10)

On obtient ce résultat :

C'est quand mĂȘme plus pratique que d'Ă©crire X fois la mĂȘme ligne. On distingue gĂ©nĂ©ralement de types de boucles :

  • les boucle for qui s'arrĂȘtent lorsqu'un nombre prĂ©dĂ©terminĂ© de rĂ©pĂ©tition est atteint. Elles sont utilisĂ©es lorsque l'on sait Ă  l'avance combien de fois on doit rĂ©pĂ©ter une boucle,

  • les boucles while, qui s'arrĂȘtent lorsqu'une condition est satisfaite. On les utilise lorsque l'on ne sait pas Ă  l'avance combien de rĂ©pĂ©titions vont ĂȘtre rĂ©alisĂ©es.

Pourquoi parler de boucle pour notre jeu ? Une idée ... ?

On aimerait intégrer la rÚgle : "tant que le joueur souhaite retirer le dé, le dé est lancé". Cela signifie que tant que la valeur du dé est différente de 1, le joueur peut relancer le dé.

Voici le code complet :

import random

def jeterLeDe():
  resultat = random.randint(1,6)
  print("Résultat du lancé : ")
  print(resultat)
  return resultat

def afficherLeScore(valeur1, valeur2):
  print("_________________________________")
  print("SCORES")
  print("Joueur 1 : {}       Joueur 2 : {}".format(valeur1, valeur2))
  print("_________________________________")

print("Bonjour, bienvenue dans le jeu du cochon !")

scoreJoueur1 = 0
scoreJoueur2 = 0
tourJoueur1 = True
rejouer = "o"

resultat = jeterLeDe()

while(rejouer == "o" and resultat != 1):
  if (resultat == 1):
    print("Le dé est tombé sur 1, vous passez votre tour")
    tourJoueur1 = False
  else : 
    print("Le dé n'est pas tombé sur 1")
    rejouer = input("Voulez vous rejouer ? (si oui, taper 'o')  : ")
    if(rejouer == "o"):
      resultat = jeterLeDe()
    else :
      scoreJoueur1 = scoreJoueur1 + resultat
      afficherLeScore(scoreJoueur1, scoreJoueur2)

Voici les résultats d'un test

DerniĂšre mise Ă  jour

Cet article vous a-t-il été utile ?