Le déroulement du jeu sera géré par une machine à cinq états dont le comportement est détaillé dans ce tableau :
État | Actions | Condition | État suivant |
---|---|---|---|
INIT |
Réinitialiser l’état de la balle et de la raquette, le score et le nombre de vies | Appui sur le bouton Restart | GAME |
GAME |
Animer la balle et la raquette, tenir à jour le score et le nombre de vies | Nombre de vies à zéro | GAME_OVER |
– | – | Score à 10 | SUCCESS |
GAME_OVER |
Signaler la défaite, attendre le début d’une nouvelle partie | Appui sur le bouton Restart | RESTART |
SUCCESS |
Signaler la victoire, attendre le début d’une nouvelle partie | Appui sur le bouton Restart | RESTART |
RESTART |
Réinitialiser la coordonnée et la direction de la balle le long de l’axe X, le score et le nombre de vies | Immédiatement | GAME |
D’après ces indications, représentez le fonctionnement du jeu sous la forme d’un graphe d’états.
Dans un premier temps, déclarez les signaux lives_reg
(nombre de vies restantes)
et score_reg
(score courant) et affectez-leur des constantes.
Complétez le module SquashCore
avec une description de la machine à états.
Faites en sorte que l’animation de la balle et de la raquette soit désormais
conditionnée par l’état courant.
Pour réaliser cette étape, vous devrez appliquer les notions suivantes :
Ajoutez deux compteurs chargés de mettre à jour lives_reg
et score_reg
en fonction de l’état et des détection de collision.
Affectez également les sorties game_over_o
et success_o
de SquashCore
pour qu’ils soient à 1, respectivement dans les états GAME_OVER
et SUCCESS
.
Synthétisez le circuit et observez son fonctionnement sur la carte Basys3.
Pour réaliser cette étape, vous devrez appliquer les notions suivantes :