Gérer le déroulement du jeu

Séquenceur

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 :

Gestion du nombre de vies et du score

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 :