ajout tp mastermind et suppression anciens tp
This commit is contained in:
@@ -1,171 +1,91 @@
|
||||
---
|
||||
title : Les Drapeaux
|
||||
author: M. BODDAERT
|
||||
license: CC-BY-NC-SA
|
||||
---
|
||||
# TP : Les Drapeaux
|
||||
## TP : Jeu de Mastermind
|
||||
|
||||
<img src='./assets/france.png'/>
|
||||
## Introduction
|
||||
|
||||
Fig 1. Drapeau français
|
||||
Le Mastermind est un jeu de réflexion qui se joue à deux personnes. L'objectif du jeu est de faire deviner à une première personne une combinaison secrète de couleurs choisie par l'autre élève en un nombre limité de tentatives. Dans ce TP, nous allons créer un jeu de Mastermind en utilisant des listes en Python.
|
||||
|
||||
## 1. Contexte
|
||||
-----------------------------
|
||||
|
||||
Un drapeau peut être vu comme une matrice, i.e un tableau de tableaux, de dimension $n \times m$.
|
||||
|
||||
Soient les codes couleurs suivants :
|
||||
|
||||
| Code | Couleur associée |
|
||||
| :--: | :----------------: |
|
||||
| 0 | NOIR |
|
||||
| 1 | ROUGE |
|
||||
| 2 | VERT |
|
||||
| 3 | JAUNE |
|
||||
| 4 | BLEU |
|
||||
| 5 | MAGENTA |
|
||||
| 6 | CYAN |
|
||||
| 7 | BLANC |
|
||||
## Consignes
|
||||
|
||||
Il est dès lors possible de représenter le drapeau français de la Fig.1 , en python, par la matrice $15 \times 7$ suivante :
|
||||
Il audra créer une fonction python Mastermind.py qui va permettre de respecter les règles suivantes :
|
||||
|
||||
```python
|
||||
>>> drapeau = [
|
||||
[4, 4, 4, 4, 4, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1],
|
||||
[4, 4, 4, 4, 4, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1],
|
||||
[4, 4, 4, 4, 4, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1],
|
||||
[4, 4, 4, 4, 4, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1],
|
||||
[4, 4, 4, 4, 4, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1],
|
||||
[4, 4, 4, 4, 4, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1],
|
||||
[4, 4, 4, 4, 4, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1]
|
||||
]
|
||||
```
|
||||
1. **Initialisation du jeu**
|
||||
|
||||
En utilisant le formalisme par compréhension :
|
||||
- Générez une combinaison secrète de 4 couleurs choisies parmi les couleurs suivantes : Rouge (R), Bleu (B), Vert (V), Jaune (J), Orange (O) et Rose (P). Utilisez une liste pour stocker cette combinaison secrète.
|
||||
|
||||
```python
|
||||
>>> drapeau = [ [4] * 5 + [7] * 5 + [1] * 5 for _ in range(7)]
|
||||
```
|
||||
|
||||
|
||||
Ce formalisme compact traduit le fait que le drapeau français est constitué de ***5 cases bleues, 5 cases blanches et 5 cases rouges, et cela sur 7 lignes***.
|
||||
2. **Interaction entre élèvesr**
|
||||
|
||||
## 2. Matériel fourni
|
||||
- Demandez à votre camarade de TP de deviner la combinaison secrète en entrant une liste de 4 lettres représentant les couleurs (par exemple, 'R', 'B', 'V', 'J'). Assurez-vous que les lettres sont toutes en majuscules.
|
||||
- Le joueur dispose de 10 tentatives pour trouver la combinaison secrète.
|
||||
|
||||
Le module `paint` dispose de :
|
||||
3. **Vérification de la proposition**
|
||||
|
||||
- 8 variables : `NOIR, ROUGE, VERT, JAUNE, BLEU, MAGENTA, CYAN, BLANC`, qui permettent de matérialiser les couleurs,
|
||||
- d'une méthode `dessiner` qui permet d'afficher un drapeau, à partir d'une matrice passée en paramètre, dans la console de l'interpréteur python.
|
||||
- Comparez la proposition du joueur avec la combinaison secrète et fournissez des indices pour indiquer si les couleurs sont correctes et bien placées (`X`) ou si les couleurs sont correctes mais mal placées (`O`).
|
||||
- Utilisez une deuxième liste pour stocker ces indices.
|
||||
- Par exemple, si la combinaison secrète est ['R', 'B', 'V', 'J'] et la proposition du joueur est ['B', 'V', 'R', 'J'], les indices seront ['O', 'O', 'X', 'X'].
|
||||
|
||||
<figure>
|
||||
<center><img src='./assets/utilisation_paint.png'/></center>
|
||||
<figcaption style='text-align:center;'>Fig 2. Exemple d'utilisation du module paint</figcaption>
|
||||
</figure>
|
||||
4. **Affichage des indices**
|
||||
|
||||
## 3. Consignes
|
||||
- Affichez les indices pour aider le joueur à ajuster sa prochaine proposition. Par exemple, "O O X X" pour les indices de l'exemple précédent.
|
||||
|
||||
Vous devez créer un module `drapeau`.
|
||||
5. **Répétez les étapes 2 à 4**
|
||||
|
||||
Pour chaque drapeau de la liste fournie en Annexe, vous devez :
|
||||
- Demandez au joueur de faire une autre proposition en répétant les étapes de vérification et d'affichage des indices jusqu'à ce que le joueur trouve la combinaison secrète ou épuise toutes les tentatives.
|
||||
|
||||
- Formaliser la matrice modélisant le drapeau,
|
||||
6. **Fin du jeu**
|
||||
|
||||
- Identifier la structure algorithmique,
|
||||
- Si le joueur a trouvé la combinaison secrète, affichez un message de félicitations. Sinon, affichez un message indiquant que le joueur a échoué à trouver la combinaison secrète.
|
||||
|
||||
- Écrire une fonction, dans le module `drapeau` qui permette de créer la matrice modélisant le drapeau.
|
||||
|
||||
|
||||
***N.B : Vous devez utiliser le formalisme par compréhension ou l'utilisation de boucle mais il est interdit d'utiliser l'affectation par valeur, case par case.***
|
||||
```python
|
||||
def mastermind(combinaison, proposition):
|
||||
"""
|
||||
Compare la proposition du joueur avec la combinaison secrète et renvoie les indices correspondants.
|
||||
|
||||
:param combinaison : liste contenant la combinaison secrète
|
||||
:param proposition : liste contenant la proposition de l'adversaire
|
||||
:return : liste "indices" contenant les indices pour la proposition du joueur
|
||||
|
||||
"""
|
||||
pass
|
||||
```
|
||||
|
||||
Le module sera exécutable de la manière suivante :
|
||||
|
||||
|
||||
> python3 drapeau.py france
|
||||
Utilisation :
|
||||
|
||||
Le résultat attendu étant l'affichage du drapeau du pays passé en paramètre.
|
||||
```python
|
||||
combinaison_secrete = ['R', 'B', 'V', 'J']
|
||||
proposition = ['B', 'V', 'R', 'J']
|
||||
|
||||
indices = mastermind(combinaison_secrete, proposition)
|
||||
print(indices) # Affiche ['O', 'O', 'X', 'X']
|
||||
|
||||
```
|
||||
|
||||
## 4. Annexe : Liste des pays et drapeaux
|
||||
|
||||
|
||||
- Belgique
|
||||
- Drapeau: 
|
||||
- Consigne: Le drapeau est de dimension \($15 \times 7$\)
|
||||
|
||||
- Pays-Bas
|
||||
- Drapeau: 
|
||||
- Consigne: Le drapeau est de dimension \($15 \times 6$\)
|
||||
|
||||
- Suède
|
||||
- Drapeau: 
|
||||
- Consigne: Le drapeau est de dimension \($15 \times 7$\)
|
||||
|
||||
- Finlande
|
||||
- Drapeau: 
|
||||
- Consigne: Le drapeau est de dimension \($15 \times 7$\)
|
||||
|
||||
- Irlande
|
||||
- Drapeau: 
|
||||
- Consigne: Le drapeau est de dimension \($15 \times 7$\)
|
||||
|
||||
- Côte d'Ivoire
|
||||
- Drapeau: 
|
||||
- Consigne: Vous devez utiliser la fonction de création du drapeau d'Irlande.
|
||||
|
||||
- Bénin
|
||||
- Drapeau: 
|
||||
- Consigne: Le drapeau est de dimension \($15 \times 6$\)
|
||||
|
||||
- Suisse
|
||||
- Drapeau: 
|
||||
- Consigne: Le drapeau est de dimension \($15 \times 7$\)
|
||||
|
||||
- Guinée
|
||||
- Drapeau: 
|
||||
- Consigne: Le drapeau est de dimension \($15 \times 7$\)
|
||||
|
||||
- Mali
|
||||
- Drapeau: 
|
||||
- Consigne: Vous devez utiliser la fonction de création du drapeau de Guinée.
|
||||
|
||||
- Botswana
|
||||
- Drapeau: 
|
||||
- Consigne: Le drapeau est de dimension \($15 \times 7$\)
|
||||
|
||||
- Monaco
|
||||
- Drapeau: 
|
||||
- Consigne: Le drapeau est de dimension \($15 \times 6$\)
|
||||
|
||||
- Pologne
|
||||
- Drapeau: 
|
||||
- Consigne: Vous devez utiliser la fonction de création du drapeau de Monaco.
|
||||
|
||||
- Japon
|
||||
- Drapeau: 
|
||||
- Consigne: Le drapeau est de dimension \($15 \times 7$\)
|
||||
|
||||
- Hongrie
|
||||
- Drapeau: 
|
||||
- Consigne: Le drapeau est de dimension \($15 \times 7$\)
|
||||
|
||||
- Iran
|
||||
- Drapeau: 
|
||||
- Consigne: Vous devez utiliser la fonction de création du drapeau de Hongrie.
|
||||
|
||||
- Palaos
|
||||
- Drapeau: 
|
||||
- Consigne: Le drapeau est de dimension \($15 \times 7$\)
|
||||
|
||||
- Grèce
|
||||
- Drapeau: 
|
||||
- Consigne: Le drapeau est de dimension \($15 \times 6$\)
|
||||
|
||||
- États-Unis
|
||||
- Drapeau: 
|
||||
- Consigne: Le drapeau est de dimension \($15 \times 6$\)
|
||||
|
||||
- République du Congo
|
||||
- Drapeau: 
|
||||
- Consigne: Le drapeau est de dimension \($15 \times 7$\)
|
||||
|
||||
- Trinidad et Tobago
|
||||
- Drapeau: 
|
||||
- Consigne: Le drapeau est de dimension \($15 \times 7$\)
|
||||
|
||||
- Jamaïque
|
||||
- Drapeau: 
|
||||
- Consigne: Le drapeau est de dimension \($15 \times 7$\)
|
||||
Astuce : pour tester des listes, on peut utiliser l'opérateur de comparaison "=="
|
||||
|
||||
## Annexe : Liste des couleurs disponibles
|
||||
|
||||
- Rouge (R)
|
||||
- Bleu (B)
|
||||
- Vert (V)
|
||||
- Jaune (J)
|
||||
- Orange (O)
|
||||
- Rose (P)
|
||||
|
||||
------
|
||||
|
||||
Auteur : Florian Mathieu
|
||||
|
||||
Licence CC BY NC
|
||||
|
||||
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Licence Creative Commons" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a> <br />Ce cours est mis à disposition selon les termes de la <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International</a>.
|
||||
Reference in New Issue
Block a user