TP de Programmation sur le déroulement du jeu

Dans ce TP, nous allons mettre en place ce qui nous permettra de gérer les éléments d'une partie : début du jeu, défaite, victoire, enchainement des niveaux, introduction, conclusion, ...

1 - Décompte, échec d'une tentative et gain de niveau

Notre jeu reprend les règles classiques d'un casse briques avec quelques petits aménagements, à savoir :

Il va donc falloir commencer à compter tous nos éléments de jeu et à les prendre en compte de manière cohérente.

Exercices

2 - Transitions

Avec les modifications précédentes, le passage d'un niveau à l'autre est un peu abrupt : dès la dernière brique détruite, le niveau suivant s'affiche et la balle part immédiatement de la raquette. Il faudrait mettre en place une petite temporisation avec un message annonçant à l'utilisateur le changement de niveau. Pour cela, nous allons avoir besoin de bloquer tous les composants pendant l'affichage du message et de tous les débloquer ensuite. Pour que cela soit visuellement plus agréable nous allons aussi mettre un effet de fondu dans l'apparition et la disparition du message.

Exercices

3 - Déroulement du jeu

Il nous faut maintenant faire en sorte de compléter le jeu avec un déroulement particulier quand le joueur perd ou quand il termine le dernier niveau. Ces déroulements particuliers seront de petites animations ou de simple messages annonçant au joueur ce qui se passe. Surtout, ce déroulement sera potentiellement complètement différent selon ce qui s'est produit avant. Au niveau du jeu cela se modélise par un ensemble d'états de jeu entre lesquels se produiront des transitions selon l'état courant de la partie. Ce modèle est légèrement différent de celui des automates : son alphabet d'entrée (ce qui est consulté dans l'état courant de la partie) dépend de l'état de jeu (on ne se préoccupe pas du nombre de balles quand on fait dérouler les crédits). On peut l'exprimer sous forme d'automate en plongeant les différents alphabets d'entrée dans un seul espace (produits cartésien des différents alphabets) mais cela rendrait l'ensemble inutilement compliqué.

Exercices

4 - Autour de la raquette

Pour finir, nous allons coller la balle à la raquette pendant quelques secondes au début de chaque tentative du joueur. Il faut non seulement que la balle ne bouge plus d'elle même pendant quelques secondes, mais aussi qu'elle suive la raquette quand celle-ci se déplace. Pour cela, nous allons reprendre un design pattern consistant à lier des propriétés. Ce pattern n'est pas présent dans le livre donné en référence pour l'UE, mais il se fonde sur l'observateur que nous avons déjà vu. Le principe est le suivant : une propriété est à la fois observateur est observable. Il est possible d'attacher une propriété à une autre en l'ajoutant à ses observateurs. Lorsque la valeur d'une propriété change, elle met à jour tous ses observateurs pour qu'ils puissent prendre la même valeur. Il faut juste faire attention à éviter les boucles infinies si deux propriétés sont mutuellement attachées l'une à l'autre.