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