Exercice 09 - Le jeu Simon
Dans cet exercice on va reproduire le jeu Simon avec notre ESP32. Si vous ne connaissez pas le jeu, vous en avez un aperçu ici : https://fr.wikipedia.org/wiki/Simon_(jeu)
On va simplifier le montage en n'utilisant que deux couleurs pour notre jeu: jaune et bleu
Principe du jeu
Le jeu consiste à reproduire une suite de couleur générée aléatoirement. La suite commence par une seule couleur et un nouvel élément s'ajoute à chaque fois que le joueur réussi à reproduire la suite. Exemple :
- Premier round : jaune.
- Deuxième round : jaune, jaune
- Troisième round : jaune, jaune, bleu
- Etc.
Le but du jeu est d'atteindre le round le plus élevé. Le jeu se termine quand on atteint le niveau 10.
Montage
Pour notre jeu, nous allons faire un montage avec :
- Un écran LCD
- Une DEL jaune et une DEL bleu
- Un bouton jaune et un bouton bleu
- Un buzzer passif
Attention
Vous devez tenir compte de l'effet de *debounce* sur vos boutons.
Utilisez la fonction *outputCW* de la librairie *DacESP32* pour vous assurez que votre code répond toujours lors de la génération de sons.
Déroulement du jeu
Écran de démarrage
- Au démarrage, sur l'écran LCD on affiche sur la première ligne "Simon le jeu" et "Meilleur: xxx" sur la deuxième ligne où xxx représente le meilleur niveau atteint par les joueurs. (Le record se réinitialise à chaque démarrage)
- Le jeu va commencer si on appuie sur un des deux boutons.
Écran niveau
- Pour chaque niveau:
- Affiche "Niveau x" sur la première ligne et "Mémorise" sur la deuxième (x représente le niveau actuel)
- Reproduit la suite sur les DEL pendant 1 seconde par élément.
- Un son associé a chaque couleur est joué en meme temps que la DEL s`allume.
- Ensuite affiche "Niveau x" sur la première ligne et "Votre tour" sur la deuxième ligne + un son plus aigu est joué
- Il n'y a pas de limite de temps pour le joueur
- Le joueur doit reproduire la suite avec les boutons aux couleurs correspondantes
- La DEL et le son correspondant sont actifs lorsque le joueur appuie sur un bouton
- Si le joueur se trompe dans la suite
- Affiche ""Niveau x" sur la première ligne et "Erreur" sur la deuxième
- Un son plus grave est joué pour indiquer l`erreur
- Après 5 secondes affiche Partie terminée sur la deuxième ligne
- Après 5 secondes affiche l'écran de démarrage.
- Si le joueur réussit
- Affiche "Niveau x" sur la première ligne et "Bravo" sur la deuxième
- Une séquence de 2 sons (grave puis aigu) indique le succès
- Après 5 secondes affiche un nouveau niveau
Optionnel: Ajouter un bouton rouge et une DEL rouge pour rendre le jeu plus intéressant