Coder un jeu de Pac Man avec Scratch - Défi 6
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.
- 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.
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.
·
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 :
- 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 :
Compte
Scratch : LacazeSarah
Nom du
fichier : Pac Man – défiScratch6
Commentaires
Enregistrer un commentaire