TP8 - Boucle while
¶

A. Ridard
In [1]:
# on importe les bibliothèques turtle et random
from turtle import *
import random

On aura besoin d'une version "réduite" de la fonction lancer2des() du TP7.

In [2]:
# fonctions du TP7

def carre(c, a, b):
    up()
    goto(a,b)
    down()
    for i in range(4):
        forward(c)
        left(90)

def point(r, x, y):
    up()
    goto(x,y)
    down()
    dot(r)

def face(c, a, b, resultat):
    
    speed(0)
    ht()
    carre(c, a, b)
    d = c/4
    r = c/8
    
    if resultat == 1 :
        point(r, a+2*d, b+2*d)
        
    if resultat == 2 :
        point(r, a+1*d, b+3*d)
        point(r, a+3*d, b+1*d)
        
    if resultat == 3 :
        point(r, a+1*d, b+3*d)
        point(r, a+2*d, b+2*d)
        point(r, a+3*d, b+1*d)
        
    if resultat == 4 :
        point(r, a+1*d, b+3*d)
        point(r, a+1*d, b+1*d)
        point(r, a+3*d, b+1*d)
        point(r, a+3*d, b+3*d)
        
    if resultat == 5 :
        point(r, a+1*d, b+3*d)
        point(r, a+1*d, b+1*d)
        point(r, a+3*d, b+1*d)
        point(r, a+3*d, b+3*d)
        point(r, a+2*d, b+2*d)
        
    if resultat == 6 :
        point(r, a+1*d, b+3*d)
        point(r, a+1*d, b+2*d)
        point(r, a+1*d, b+1*d)
        point(r, a+3*d, b+1*d)
        point(r, a+3*d, b+2*d)
        point(r, a+3*d, b+3*d)

def lancer2des():

    res1 = random.randint(1,6)
    face(100,0,0,res1)
    
    res2 = random.randint(1,6)
    face(100,120,0,res2)
In [ ]:
# test de lancer2des() 

lancer2des()

exitonclick()
TurtleScreen._RUNNING = True

Le jeu des 30 points¶

À tour de rôle, les joueurs lancent deux dés.

S’ils n’obtiennent aucun double, ils ne marquent pas de points.
En revanche, si leurs dés affichent des doubles, voici comment calculer leur score :

  • Un double 1, 2, 4, 5 rapporte 5 points
  • Un double 6 rapporte 25 points
  • Un double 3 ramène leur score à 0

Le premier joueur à atteindre 30 points gagne la partie.

Modifier la fonction lancer2des() ci-dessus pour qu'elle affiche les deux dés ainsi que le score du lancer.

No description has been provided for this image

On pourra commencer par définir une fonction score_lancer(de1, de2) qui retourne le score du lancer selon la règle du jeu.

In [3]:
# def score_lancer(de1, de2)
In [ ]:
# test

print(score_lancer(1,2))
print(score_lancer(2,2))
print(score_lancer(6,6))
print(score_lancer(3,3))
In [ ]:
# def lancer2des()
In [ ]:
# test

lancer2des()

exitonclick()
TurtleScreen._RUNNING = True

Vous pouvez mainenant jouer avec votre voisin, mais à chaque tour il faudra exécuter la fonction et compter les points...

Automatisation d'une partie avec la boucle while.¶

Jouer avec son voisin¶

Définir une fonction jeu30points() qui permet de jouer avec son voisin, simplement en cliquant sur la fenêtre graphique à chaque tour.

No description has been provided for this image
In [ ]:
# def jeu30points()
In [ ]:
# test

jeu30points()

Jouer avec la machine¶

Définir une fonction jeu30pointVSmachine() qui permet de jouer avec la machine, simplement en cliquant sur la fenêtre graphique.

No description has been provided for this image
In [4]:
# def jeu30pointsVSmachine()
In [5]:
# test

jeu30pointsVSmachine()