Coder un jeu de Pac Man avec Scratch - Défi 6



Pour ce #défiScratch6, vous allez voir comment déplacer vos Fantômes d’une manière aléatoire au sein du labyrinthe.

Pour fignoler votre jeu, vous allez créer une porte qui se ferme une fois que tous les Fantômes sont sortis. Et qui s’ouvre lorsque Pac Man a mangé toutes les pac-gommes. Il peut alors accéder à la sortie du labyrinthe.

A la fin de ce #défiScratch6 votre jeu sera terminé… mais ce n’est pas fini. Il y a encore un septième et dernier défi la semaine prochaine !





1.   Des déplacements aléatoires


Lors du dernier défi vous avez créé pour chaque Fantôme un même programme.



Nous allons compléter le programme des sprites Fantôme 1 (bleu) et Fantôme 2 (orange). Ces deux Fantômes ont le même programme car tous deux se déplacent d’une manière aléatoire. Chaque fois qu’ils touchent l’un des murs ils changent de direction.

Les Fantômes peuvent prendre quatre directions différentes (gauche – droite – haut – bas). Les directions sont gérées par une variable appelée directions. En fonction de la valeur de la variable directions, le Fantôme se déplace différemment. 

Si la variable directions est à 1 = il se dirige vers la droite = modification des coordonnées x d’une valeur positive.

Si la variable directions est à 2 = il se dirige vers la gauche = modification des coordonnées x d’une valeur négative.


Si la variable directions est à 3 = il se dirige vers le haut = modification des coordonnées y d’une valeur positive.


Si la variable directions est à 4 = il se dirige vers le bas = modification des coordonnées y d’une valeur négative.



Les déplacements sont gérés par un bloc déplacements. Ce bloc n’existe pas. Nous allons le créer et le définir.
1.    Dans la Palette des blocs sélectionnez Mes blocs (1) et Créer un bloc (2)
2.    Une fenêtre pour créer le bloc s’ouvre
3.    Renseignez le nom de votre bloc déplacements (3)
4.    Validez en sélectionnant OK


Deux blocs ont été créés :
  •      Le premier est situé dans la Palette des blocs (1).
  •          Le deuxième est dans l’Espace des scripts (2).

Le bloc situé dans l’Espace des scripts va vous permettre de définir les sépcificités du bloc situé dans la Palette des blocs. Pour cela il suffit de lui « coller » tous les blocs le caractérisant.




Le bloc déplacements sert à déplacer le Fantôme dans les quatres directions, sans qu’il ne traverse les murs du labyrinthe.
Chaque fois que le Fantome rencontre un mur il recule et il change de direction d’une manière aléatoire. Le bloc déplacements est donc constitué de :
  •          Une boucle de répétition
  •          Quatre conditions (une par direction) elles mêmes intégrant une condition pour changer de direction lorsqu’un mur est touché. 








définir déplacements // tous les blocs accrochés à ce bloc forment les caractéristique du bloc déplacements.


répéter indéfiniment // ouverture d’une boucle de répétitions qui contient els quatre conditions qui seront testées en permanence pour gérer les déplacement du Fantôme.

rebondir si le bord est atteint // le Fantôme ne peut pas sortir de la scène.

si directions = 1 alors // première condition.

ajouter 1 à x // le Fantome se déplace vers la droit. Cette valeur peut être modifiée pour un déplacement plus rapide.

si couleur (couleur des murs du labyrinthe) touchée ? alors // si le Fanôome rencontre l’un des murs

ajouter -1 à x // le fantôme recul, il se déplace vers la gauche/

mettre directions à nombre aléatoire entre 1 et 4 // un obstacle étant détecté le Fantôme doit changer de direction.

Fermeture de la première condition

si directions = 2 alors // deuxième condition.

ajouter -1 à x // le Fantome se déplace vers la gauche. Cette valeur peut être modifiée pour un déplacement plus rapide.

si couleur (couleur des murs du labyrinthe) touchée ? alors // si le Fantôme rencontre l’un des murs.

ajouter 1 à x // il recul en se déplaçant vers la droite.

mettre directions à nombre aléatoire entre 1 et 4 // un obstacle étant détecté le Fantôme doit changer de direction.

Fermeture de la deuxième condition.





Sur le même principe que les deux conditions détaillées ci-dessus, créez les conditions pour directions = 3 et directions = 4.


  • Lorsque directions = 3 le Fantôme se déplace vers le haut et recul vers le bas. Utilisez le bloc ajouter () à y.
  •  Lorsque directions = 4 le Fantôme se déplace vers le bas et recul vers le haut. Utilisez le bloc ajouter () à y




Une fois le bloc déplacements défini il nous faut maintenant créer le programme pour mettre en action le Fantôme 1. Ce programme sera presque le même pour le Fantôme 2.
Dans mon jeu, le Fantôme 1 est le dernier à entrer dans le labyrinthe. Derrière lui, la porte se referme.

quand l’arrière-plan bascule sur jeu // vous pouvez également utiliser quand je reçois jeu comme nous l’avons vu dans le défi 5 pour les fantômes 3 et 4.

mettre direction à 0 // la variable direction est initialisée.

montrer // le Fantôme 1 est visible, bien que cache derrière les autres Fantômes.

attendre 8 secondes // ce temps d’attendre peut être modifié. Mes Fantômes entrent les uns à la suite des autres dans le labyrinthe.

glisser en 2 secondes à x : 14 y : ordonnée y + 70 // je force ici le déplacement de mon Fantôme pour qu’il entre dans la labyrinthe en se dirigeant vers le haut. Ces valeurs peuvent être différentes pour votre projet.

envoyer à tous fermeture porte // l’envoi de ce message est spécifique au Fantôme 1 qui entre en dernier dans le labyrinthe.

mettre directions à nombre aléatoire entre 1 et 4 // mon Fantôme va prendre une direction aléatoire

répéter indéfiniment // ouvertur d’une boucle de répétition qui contient le bloc déplacements précédemment défini.

déplacements // ce bloc correspond à celui situé dans la palette des blocs. Il présente toutes les caractéristiques définies précédemment.



Elaborez le même programme pour le Fantôme 2 :



. Le temps d’attente avant d’entrer dans le labyrinthe est différent.
. Ce Fantôme n’étant pas le dernier à entrer dans le labyrinthe, vous ne devez pas utiliser le bloc envoyer à tous fermeture porte.






2.   Programme Pac Man 


Les défis précédents vous ont permis de définir :
  •          La perte de vies losrque Pac Man est touché par l’un des quatre fantômes.
  •          Le gain de points lorsque Pac Man mange l’une des pac-gomme.s
  •          L’ouverture de la porte du labyrinthe lorsque toutes les pac-gommes ont été mangées.


Sur le même principe que la condition qui gère le nombre de points et l’ouverture de la porte, créez une condition :
si le nombre de vies est égal à 0 un message perdu est envoyé.

Ce message sert à modifier l’arrière-plan qui bascule sur l’arrière-plan perdu.  Et à cacher les différents sprites car la partie est terminée.

3.   La porte du labyrinthe

Pour pouvoir gagner, Pac Man doit manger toutes les pac-gommes et franchir la sortie du labyrinthe. La sortie du labyrinthe se situe à l’endroit par lequel sont entrés les fantômes. 



Nous allons créer un sprite porte pour bloquer la sortie une fois que le dernier fantôme (Fantôme 1) est entré dans le labyrinthe.
Dessiné avec la palette grapique, ce nouveau sprite qui a pour nom porte représente une ligne qui vient se positionner à l’entrée.





A vous de créer le programme de ce sprite.
·         Quand doit-il être visible ?
·         Quand doit-il être caché ?




4.   Un sprite pour déterminer la sortie

Afin de déterminer si Pac Man a bien franchi la sortie du labyrinthe, vous pouvez positionner un sprite sortie. Afin que ce sprite ne soit pas visible sur la scène, mais détectable par Pac Man, deux possibilités s'offrent à vous :

  1. Lui appliquer la même couleur que le fond du labyrinthe.



    2.    Lui appliquer un effet fantôme à 100. Bien qu’invisible ce sprite est détectable par Pac Man. Ce qui n’est pas le cas en utilisant le bloc cacher.





Elaborez le programme de ce sprite en fonction de l’option choisie.
Et complétez le programme de Pac Man : si Pac Man touche le sprite sortie un message gagné est envoyé.



Le jeu est terminé !


La semaine prochaine, pour clore ce premier #defiScratch, je vous proposerai quelques améliorations et des solutions pour répondre aux problèmes que vous rencontrez. N’hésitez pas à m’en faire part !!


Pour vous aider :

Vous pouvez télécharger le résultat du cinquième défi sur mon compte Scratch.

Compte Scratch : LacazeSarah

Nom du fichier : Pac Man – défiScratch6

Lien : https://scratch.mit.edu/projects/352592487/

Version PDF téléchargeable de #defiScratch6.


Commentaires

Posts les plus consultés de ce blog

Apprendre à programmer avec Arduino - le chenillard

Scratch - Dessiner dans un repère orthonormé

Apprendre à programmer avec Arduino - LED et bouton poussoir