Route du Rhum - CE2

Dans cette page, tu trouveras :

Récupérer le projet

  1. Connecte toi à ton compte scratch, et ouvre le projet en cliquant sur ce lien :  https://scratch.mit.edu/projects/1386111372/
  2. Clique ensuite sur le bouton vert « Remix ». 

Si le bouton remix n’apparait pas c’est que tu n’es pas connecter !

Déplacement du bateau

Pour contrôler le bateau, nous allons lui apprendre à tourner, avancer et reculer avec les flèches du clavier. Ces trois actions permettront ensuite au joueur de le diriger librement sur la carte.

Faire tourner le bateau

Dans le sprite voilier, ajoute deux conditions dans la boucle répéter indéfiniment.

Lorsque la flèche droite est pressée, le bateau tourne légèrement vers la droite.
Lorsque la flèche gauche est pressée, il tourne dans l’autre sens.

On utilise une petite rotation de 1 degré pour garder un déplacement fluide.

Faire avancer et reculer le bateau

Toujours dans le sprite voilier, complète la boucle avec 2 nouvelles conditions.

Lorsque la flèche du haut est pressée, le bateau avance de 2 pas dans la direction vers laquelle il est orienté.
Lorsque la flèche du bas est pressée, il avance de -2 pas, ce qui le fait reculer.

Comme ça, les flèches gauche et droite changent la direction, tandis que les flèches haut et bas déplacent le bateau.

Empêcher le bateau de traverser les obstacles

Une HitBox est une zone invisible qui sert à détecter les collisions. Ici, elle représente les zones que le bateau ne doit pas traverser.

À chaque déplacement, nous allons vérifier si le bateau touche la HitBox. Si c’est le cas, nous lui ferons effectuer le mouvement inverse pour le replacer juste avant l’obstacle.

Bloquer les rotations en cas de collision

Dans le sprite voilier, complète les déplacements vers la droite et vers la gauche.

Après chaque rotation, vérifie si le bateau touche « HitBox » 

Si c’est le cas, fais le tourner immédiatement dans le sens inverse pour annuler la rotation.

Bloquer l’avancée et le recul en cas de collision

Ajoute maintenant la vérification de la HitBox lorsque le bateau avance ou recule.

Après chaque déplacement, vérifie si le bateau touche « Hitbox ». Si c’est le cas, fais lui effectuer le déplacement inverse pour le replacer juste avant l’obstacle :

  • après avoir avancé de 2 pas, il recule de 2 pas en cas de collision ;
  • après avoir reculé de 2 pas, il avance de 2 pas en cas de collision.

Gérer le vent à Saint-Malo

Nous allons maintenant programmer le vent pour qu’il traverse régulièrement la zone de Saint-Malo. Il devra repartir toujours du même endroit, dans la même direction, afin de pouvoir ensuite pousser le bateau.

Faire se déplacer le vent à Saint-Malo

Dans le sprite vent, ajoute ce script pour définir son point de départ à Saint-Malo.


À chaque apparition, le vent se replace aux coordonnées indiquées et s’oriente vers la droite avant de commencer son déplacement.

Crée une variable AngleVent pour mémoriser la direction du vent.


Choisis Pour tous les sprites afin que le voilier puisse aussi utiliser cette information.

Enregistre dans AngleVent le sens dans lequel souffle le vent.  


Le bateau pourra ensuite utiliser cette information pour se déplacer dans le bon sens.

Le vent doit traverser la zone, puis revenir à son point de départ pour recommencer.

 

Fais avancer le vent de 6 pas, 75 fois.

Quand il a terminé son passage, la grande boucle recommence et le replace au départ.

 

Faire réagir le bateau au vent 

Quand le bateau touche le vent, il va être poussé dans le sens où celui-ci souffle. Pour cela, nous allons mémoriser la direction du bateau, utiliser celle du vent pour le déplacer, puis lui redonner sa direction de départ.

Avec une boucle répéter indéfiniment pour vérifier tout au long du jeu si le bateau touche le vent.

Dès qu’il le touche, le code placé dans la condition pourra s’activer.

Crée maintenant une variable angle. Elle servira à garder en mémoire le sens dans lequel le bateau était tourné avant que le vent le pousse.

Puis, dans la condition si touche le vent, enregistre la direction du bateau dans cette variable avec « Mettre angle à direction »

 

Le bateau va être poussé par le vent sans perdre sa direction.

D’abord, il se tourne dans le sens du vent grâce à la variable AngleVent, puis il avance de 3 pas.
Ensuite, il reprend la direction qu’il avait avant grâce à la variable angle.

Ainsi, le vent déplace le bateau, mais le joueur garde le contrôle de sa direction.

 

Quitter St Malo

Le bateau peut maintenant se déplacer dans toute la zone de Saint-Malo. Nous allons utiliser la flèche verte pour lui permettre de rejoindre la zone suivante : l’Atlantique.

Détecter le passage sur la flèche

Dans le sprite Flèche , on vérifie en continu si le bateau touche la flèche.

Et si le voilier touche la flèche verte, alors on change l’arrière-plan pour afficher celui de l’Atlantique.

 

Afficher la zone Atlantique

Dans le sprite voilier, on va dire à notre programme, que lorsque l’arrière-plan passe sur Atlantique, il doit placer le bateau à son point de départ.

Puis on va le tourner dans la bonne direction.

 

Naviguer dans l’Atlantique

Dans l’Atlantique, le vent va suivre un nouveau trajet. Nous allons aussi préparer l’arrivée à Pointe-à-Pitre pour terminer la course.

Préparer le vent dans l’Atlantique

Quand on arrive dans l’Atlantique, on arrête l’ancien déplacement du vent utilisé à Saint-Malo.
Ensuite, on replace le vent à son nouveau point de départ et on l’oriente dans la bonne direction.

Le bloc « Stop autres scripts dans sprite » : Cela évite que le vent de Saint-Malo continue à fonctionner dans la nouvelle zone.

Faire tourner le vent dans l’Atlantique

Fais avancer le vent de 3 pas, puis tourne-le de 4 degrés à chaque passage dans la boucle.
Il va ainsi suivre une trajectoire courbe dans l’Atlantique.

À chaque déplacement, enregistre sa nouvelle direction dans AngleVent pour que le bateau soit toujours poussé dans le bon sens.

Terminer la course

La course se termine lorsque le bateau atteint Pointe-à-Pitre. Nous allons mesurer le temps du joueur, détecter son arrivée et afficher l’écran de fin.

Mesurer le temps de la course

Crée une variable temps pour afficher le temps écoulé depuis le début de la partie. Tout au long du jeu, elle prend la valeur du chronomètre de Scratch.

Attendre 0.1 seconde : La petite attente évite de mettre à jour la variable trop vite en permanence.

Détecter l’arrivée à Pointe-à-Pitre

On va vérifier en continu si le voilier touche la zone d’arrivée.
Quand c’est le cas, on affichera l’arrière-plan Bravo pour terminer la course.

 

Le bloc stop ce script arrête ensuite la vérification, puisque la course est terminée.

Bonus

Record

Difficile de faire un jeu autour d’une course sans faire de record, non ? Voici un code pour le réaliser dans le sprite de Pointe-à-Pitre.

Si, à la fin de la course, ton temps est inférieur au record, il faut l’enregistrer comme nouveau record.

Il faudra aussi l’enregistrer si le record actuel est à 0, ce qui veut dire que personne n’a encore fait la course.

Animer le vent

Pour animer le vent, c’est assez simple : il suffit de passer au costume suivant régulièrement.

Par contre, le problème, c’est que lorsqu’on change d’écran, on arrête les autres scripts, ce qui arrête aussi l’animation. Il faut donc faire le code de l’animation du vent dans un message qu’on enverra à chaque changement d’écran.

J’ai aussi ajouté l’effet fantôme, qui rend le vent un peu plus agréable à regarder. C’est purement optionnel.

Second Vent

Tu peux facilement ajouter un second vent en dupliquant le premier attention cependant à bien crée aussi une seconde variable et de recoder la colision dans le bateau avec ce nouveau vent.

Retour en haut