Déplace le TP sour le jeu de roulette dans DM
This commit is contained in:
		
							parent
							
								
									51d6511426
								
							
						
					
					
						commit
						dbc42bcf59
					
				
					 3 changed files with 109 additions and 0 deletions
				
			
		
							
								
								
									
										109
									
								
								src/cours/CIEL1/01-bases-python/dm/tp1bis_mise_en_pratique.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										109
									
								
								src/cours/CIEL1/01-bases-python/dm/tp1bis_mise_en_pratique.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,109 @@
 | 
			
		|||
# Python - Mise en pratique
 | 
			
		||||
 | 
			
		||||
Nous allons mettre en pratique ce que nous avons vu jusqu'à maintenant dans un programme un peu plus conséquent.
 | 
			
		||||
 | 
			
		||||
L'objectif est de créer un mini jeu dans lequel vous pourrez jouer à la roulette. Les règles seront évidemment simplifiées.
 | 
			
		||||
 | 
			
		||||
- Le joueur mise sur un nombre (entier) entre 0 et 49, et annonce une mise en jetons (par exemple : 20 jetons).
 | 
			
		||||
- La croupière lance la roulette, et celle-ci déterminera le numéro gagnant. Les numéros impairs ont une couleur rouge, les numéros pairs sont noirs.
 | 
			
		||||
    - Si le joueur a misé sur le numéro gagnant, il remporte 3 fois sa mise
 | 
			
		||||
    - Si le joueur a misé sur un nombre de même couleur (donc de même parité que le numéro gagnant), il remporte 0,5 fois sa mise (arrondi à l'entier supérieur, car les jetons sont toujours entiers)
 | 
			
		||||
    - Sinon, le joueur perd sa mise. Notons qu'il la garde dans les deux autres cas, en plus de ses gains.
 | 
			
		||||
- Le joueur aura 100 jetons disponibles au début de la partie. Il ne peut miser qu'un nombre entier de jeton, et seulement des jetons qu'il possède.
 | 
			
		||||
- Si le joueur tombe à zéro jetons, la partie est finie.
 | 
			
		||||
- Sinon, il peut rejouer (mais n'est pas obligé).
 | 
			
		||||
 | 
			
		||||
Imprégnez-vous bien des règles du jeu.
 | 
			
		||||
 | 
			
		||||
1. Créez un nouveau fichier appelé `roulette.py`.
 | 
			
		||||
2. Copiez le contenu suivant dedans. Ce sera la structure du script, que vous complèterez à l'aide des questions suivantes. 
 | 
			
		||||
 | 
			
		||||
    Il y a de nombreux `#TODO` (parfois `"#TODO"`) qu'il faudra remplacer par le code adéquat.
 | 
			
		||||
 | 
			
		||||
    L'instruction `pass` sert à ne rien faire tout en ayant un script valide qui pourra donc s'exécuter sans erreur pour que vous puissiez avancer et tester votre code. Vérifiez que le code ci-dessous fonctionne sans erreur (il ne fera évidemment pas ce qui est demandé, ça c'est votre job !)
 | 
			
		||||
 | 
			
		||||
    ~~~python
 | 
			
		||||
    from random import randint
 | 
			
		||||
    #TODO
 | 
			
		||||
 | 
			
		||||
    def miser(jetons_restants):
 | 
			
		||||
        #TODO
 | 
			
		||||
        return 7, 12
 | 
			
		||||
 | 
			
		||||
    def choisir_nombre():
 | 
			
		||||
        nombre = -1
 | 
			
		||||
        while "#TODO condition" :
 | 
			
		||||
            nombre = "#TODO demander un nombre à l'utilisatrice"
 | 
			
		||||
            if "#TODO condition":
 | 
			
		||||
                print("Erreur : le nombre doit être compris entre 0 et 49")
 | 
			
		||||
        return nombre
 | 
			
		||||
 | 
			
		||||
    #TODO fonction miser_jetons
 | 
			
		||||
 | 
			
		||||
    def tourner_la_roulette():
 | 
			
		||||
        numero = 8 #TODO
 | 
			
		||||
        print(f"Le croupier tourne la roulette. Le numéro {numero} est le numéro gagnant !")
 | 
			
		||||
        return numero
 | 
			
		||||
 | 
			
		||||
    def calculer_gains_couleur(mise):
 | 
			
		||||
        pass #TODO
 | 
			
		||||
 | 
			
		||||
    def calculer_gains_numero(mise):
 | 
			
		||||
        pass #TODO
 | 
			
		||||
 | 
			
		||||
    def continuer_de_jouer(jetons_restants):
 | 
			
		||||
        return #TODO Effacer cette ligne quand ce sera demandé
 | 
			
		||||
        if "#TODO condition":
 | 
			
		||||
            print("Vous êtes ruiné.e. C'est la fin de la partie.")
 | 
			
		||||
            #TODO Retourner une valeur
 | 
			
		||||
        else:
 | 
			
		||||
            #TODO Afficher les jetons restants (avec une phrase)
 | 
			
		||||
            rejouer = input("Souhaitez-vous continuer ? (o/n)")
 | 
			
		||||
            if rejouer == "o" or rejouer == "O":
 | 
			
		||||
                pass #TODO Retourner une valeur
 | 
			
		||||
            else:
 | 
			
		||||
                #TODO Annoncer qu'on quitte le jeu avec le nombre de jetons restants
 | 
			
		||||
                pass #TODO Retourner une valeur
 | 
			
		||||
 | 
			
		||||
    jetons = 100
 | 
			
		||||
    continuer = True
 | 
			
		||||
 | 
			
		||||
    while continuer:
 | 
			
		||||
        gains = 0
 | 
			
		||||
        numero_misé, mise = miser(jetons)
 | 
			
		||||
 | 
			
		||||
        numero_gagnant = tourner_la_roulette()
 | 
			
		||||
        #TODO Écrire ici la condition principale, pour déterminer les gains
 | 
			
		||||
 | 
			
		||||
        jetons += gains
 | 
			
		||||
        continuer = continuer_de_jouer(jetons)
 | 
			
		||||
    ~~~
 | 
			
		||||
 | 
			
		||||
3. Expliquez les étapes du programme qui se déroulent dans la boucle à la fin du script, et quand est-ce qu'elle s'arrête.
 | 
			
		||||
1. Complétez les fonctions suivantes à l'aide des règles du jeu :
 | 
			
		||||
    1. `calculer_gains_numero`
 | 
			
		||||
    1. `calculer_gains_couleur`. Comme nous voulons arrondir à l'entier supérieur, il faudra importer et utiliser la fonction `ceil` du module `math`. 
 | 
			
		||||
    
 | 
			
		||||
    Pour vérifier vos résultats, vous pouvez soit utiliser l'interpréteur en console, soit appeler les fonctions dans votre script et utiliser `print` pour afficher le résultat
 | 
			
		||||
 | 
			
		||||
2. Allez à la ligne `#TODO Écrire ici la condition principale, pour déterminer les gains`. Cette condition est celle qui permet de savoir si un joueur a gagné ou non.
 | 
			
		||||
    1. Écrivez la condition en utilisant les fonctions `calculer_gains_couleur` et `calculer_gains_numero`. N'oubliez pas le cas où le joueur perd.
 | 
			
		||||
    2. Ajoutez des `print` dans chaque branche pour annoncer les gains ou pertes.
 | 
			
		||||
    3. Testez les différents cas possibles en modifiant les valeurs retournées par la fonction `tourner_la_roulette`
 | 
			
		||||
1. Maintenant que nous sommes sûrs que nos trois cas fonctionnent, nous allons pouvoir réellement tirer un nombre au hasard. Pour cela, nous avons déjà importé la fonction `randint` du module `random` dont voici la [documentation](https://docs.python.org/3.13/library/random.html#random.randint) :
 | 
			
		||||
    > random.**randint**(a, b)
 | 
			
		||||
    >
 | 
			
		||||
    > Return a random integer N such that a <= N <= b. Alias for randrange(a, b+1).
 | 
			
		||||
    
 | 
			
		||||
    1. Expliquez brièvement ce que fait `randint`
 | 
			
		||||
    2. Modifiez la fonction `tourner_la_roulette` de façon à ce qu'elle retourne un nombre entre 0 et 49 tiré aléatoirement.
 | 
			
		||||
 | 
			
		||||
1. Le coeur du jeu semble maintenant fonctionner. Il ne reste plus qu'à permettre à la joueuse d'interagir avec le programme. Commençons par la mise.
 | 
			
		||||
    1. Complétez la fonction `choisir_nombre` de façon à ce que l'on demande à la joueuse un nombre tant que celui-ci n'est pas valide. Pour simplifier, considérons que personne ne s'amusera à entrer autre chose que des nombres (nous verrons plus tard dans l'année un moyen bien plus efficace de gérer les erreurs).
 | 
			
		||||
    2. Complétez la fonction `miser` pour qu'elle utilise notre fonction nouvellement complétée. Vérifiez que tout fonctionne comme prévu.
 | 
			
		||||
    3. Sur le même modèle que `choisir_nombre`, écrivez une fonction `miser_jetons` qui permettra à la joueuse de choisir un nombre de jetons à miser. Attention : il faudra vérifier qu'elle ne mise pas plus de jetons que ce qu'elle a. Vous aurez donc besoin d'un paramètre pour passer le nombre de jetons restants à votre fonction.
 | 
			
		||||
    4. Complétez la fonction `miser` pour qu'elle utilise notre nouvelle fonction. Vérifiez que tout fonctionne comme prévu.
 | 
			
		||||
 | 
			
		||||
1. Maintenant, il ne reste plus qu'à demander au joueur s'il souhaite continuer de jouer, et mettre fin à la partie s'il n'a plus de jetons. Dans la fonction `continuer_de_jouer`, retirez la première ligne, celle qui contient un `return`. Complétez le reste de la fonction en remplaçant les lignes contenant la mention `#TODO`. Testez votre programme de bout en bout.
 | 
			
		||||
 | 
			
		||||
1. Mettez le programme final dans votre compte rendu. 
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue