4.9 KiB
Projet - Désamorceur de bombes
1. Contexte
Ce jeu est une adaptation du jeu Keep Talking and nobody explodes, de l'éditeur steelcrategames.com où l'objectif est de désamorcer une bombe en coupant le bon fil.
Cette adaptation a pour but de mettre en oeuvre les connaissances acquises en python, notamment les types construits, les boucles, les structures conditionnelles et les fonctions.
2. Description
2.1. Règles
- Une bombe peut contenir entre 3 et 6 fils.
- Seul un fil a besoin d'être coupé pour désarmer la bombe.
- Les fils sont ordonnés de haut en bas.
- A l'armement de la bombe, l'utilisateur est invité à indiquer l'indice du fil qu'il souhaite couper.
Les règles complètes de désamorçage sont décrites en annexe. Pour 3 fils, les règles sont les suivantes
S'il n'y a pas de fil rouge, couper le deuxième fil.
Sinon, si le dernier fil est blanc, couper le dernier fil.
Sinon, s'il y a plus d'un fil bleu, couper le dernier fil bleu.
Sinon, couper le dernier fil.
2.2. Exemples
3. Consignes
Vous devez créer un module desamorceur qui va permettre de :
- créer une combinaison aléatoire de couleur pour
nfils, - créer une bombe de
nfils, - afficher une bombe,
- créer un numéro de série sur 8 chiffres,
- déterminer si le fil choisi désarme la bombe ou non,
- ... ainsi que d'autres fonctions nécessaires à l'implantation du jeu (Cf. Partie "Petit manuel du désamorceur de bombes").
L'algorithme principal est le suivant :
bombe = creer_bombe(creer_combinaison(combinaison))
numero_serie = creer_numero_serie()
print(f"n°{numero_serie}")
afficher_bombe(bombe)
indice = input('Indice du fils à couper : ')
if est_bon_fil_a_couper(bombe, int(indice), numero_serie):
print('Sauvé !!!')
else:
print('Perdu, la bombe a explosé')
N.B : Vous devez, pour chaque fonction y adjoindre les docstrings et doctests nécessaires
Le module sera exécutable de la manière suivante :
python3 desamorceur.py 4
où le 2ème paramètres correspond au nombre de fils de la bombe
4. Matériel fourni
Le module paint dispose de :
- 5 variables :
ROUGE, VERT, JAUNE, BLEU, BLANC, qui permettent de matérialiser les couleurs des fils, - d'une méthode
dessinerqui permet d'afficher une matrice passée en paramètre.
5. Rendu
- un script
desamorceur.py, - un fichier
README.mdqui présente vos choix de structures de données, les autres fonctions implantées..., ainsi qu'un extrait de codes ou le decriptif d'un problème rencontré et la solution mise en place.
6. Annexe - Petit manuel du désamorceur de bombes
Voici les règles pour désamorcer la bombe :
3 fils :
S'il n'y a pas de fil rouge, couper le deuxième fil.
Sinon, si le dernier fil est blanc, couper le dernier fil.
Sinon, s'il y a plus d'un fil bleu, couper le dernier fil bleu.
Sinon, couper le dernier fil.
4 fils :
S'il y a plus d'un fil rouge et si le dernier chiffre du numéro de série est impair, couper le dernier fil rouge.
Sinon, si le dernier fil est jaune et s'il n'y a pas de fil rouge, couper le premier fil.
Sinon, s'il y a exactement un fil bleu, couper le premier fil.
Sinon, s'il y a plus d'un fil jaune, couper le dernier fil.
Sinon, couper le deuxième fil.
5 fils :
Si le dernier fil est vert et si le dernier chiffre du numéro de série est impair, couper le quatrième fil.
Sinon, s'il y a exactement un fil rouge et plus d'un fil jaune, couper le premier fil.
Sinon, s'il n'y a pas de fil vert, couper le deuxième fil.
Sinon, couper le premier fil.
6 fils :
S'il n'y a pas de fil jaune et si le dernier chiffre du numéro de série est impair, couper le troisième fil.
Sinon, s'il y a exactement un fil jaune et plus d'un fil blanc, couper le quatrième fil.
Sinon, s'il n'y a pas de fil rouge, couper le dernier fil.
Sinon, couper le quatrième fil.
7. Pour aller plus loin
Dans le cas où les éléments du projet sont finalisés, vous pouvez le compléter avec les éléments suivants :
- En cas d'explosion de la bombe, afficher à l'utilisateur l'indice du fil qu'il fallait couper pour désarmer la bombe,
- Mettre en place un numéro de série alphanumérique, qui comporte au moins 1 chiffre qui n'est pas forcément en dernière position,
- Doter le projet d'une interface graphique, via le module
pygame.


