Retour aux projets

Jeu de plateforme avec niveaux, score, vies et écrans de fin

Conception et programmation d'un jeu de plateforme complet dans Scratch, intégrant plusieurs niveaux, un système de score et de vies, des sons et des écrans de victoire/défaite.

5e-4e
6-8 séances
Intermédiaire

Imaginez un jeu vidéo où un personnage doit traverser des niveaux de plus en plus difficiles, collecter des objets et éviter des obstacles. Ce type de jeu, que l'on retrouve sur console ou smartphone, repose sur des mécanismes de programmation précis : gestion des collisions, variables de score et de vies, et transitions entre écrans. Dans ce projet, vous allez créer votre propre jeu de plateforme avec Scratch, en apprenant à structurer un projet complexe et à résoudre des problèmes de logique.

Objectifs pédagogiques

  • Programmer les déplacements d'un personnage avec les touches du clavier et gérer les collisions avec les plateformes et les obstacles.
  • Utiliser des variables pour stocker et mettre à jour le score et le nombre de vies du joueur.
  • Créer plusieurs niveaux avec des arrière-plans et des obstacles différents, et programmer le passage d'un niveau à l'autre.
  • Concevoir des écrans de victoire et de défaite avec des messages personnalisés et des boutons de redémarrage.

Matériel nécessaire

  • Ordinateur avec accès à Scratch (version en ligne ou logiciel téléchargé)
  • Compte Scratch (pour sauvegarder et partager le projet)
  • Casque ou enceintes (pour tester les sons du jeu)
  • Fiche de conception vierge (papier ou numérique) pour planifier les niveaux
  • Bibliothèque de sons libres de droits (ex. : bruitages de saut, collecte, défaite)
  • Tutoriel Scratch sur les variables et les listes (en ligne ou imprimé)

Étapes du projet

1

Conception du jeu et création des arrière-plans

Commencez par définir le thème de votre jeu (par exemple, un aventurier dans une forêt ou un robot dans l'espace). Sur une feuille, dessinez le personnage principal, les plateformes, les obstacles et les objets à collecter. Ensuite, dans Scratch, créez les arrière-plans pour chaque niveau (au moins deux niveaux) en utilisant l'éditeur de costumes ou en important des images. Pour chaque niveau, ajoutez un fond différent et des éléments visuels distincts (couleurs, motifs). Cela vous permettra de structurer visuellement votre jeu et de préparer les transitions.

2

Programmation du personnage et des déplacements

Créez un sprite pour le personnage principal et programmez ses déplacements avec les touches fléchées (gauche, droite) et la touche espace pour sauter. Utilisez les blocs « quand [touche] pressée » et « ajouter à x » pour le mouvement horizontal. Pour le saut, utilisez une variable « vitesseY » et modifiez-la avec « ajouter à y » dans une boucle « répéter jusqu'à » pour simuler la gravité. Ajoutez des blocs « si » pour détecter les collisions avec les plateformes (en vérifiant la couleur ou en utilisant le bloc « touche la couleur ? »). Testez le déplacement pour que le personnage se déplace de manière fluide et ne traverse pas les plateformes.

3

Gestion des collectibles et du score

Créez un sprite pour l'objet à collecter (par exemple une pièce ou une étoile) et placez-en plusieurs copies dans chaque niveau. Programmez ce sprite pour qu'il disparaisse lorsqu'il touche le personnage (bloc « si touche [personnage] alors » suivi de « cacher »). Créez une variable « Score » et, à chaque collecte, ajoutez 1 à cette variable avec le bloc « ajouter à Score ». Pour rendre le jeu plus intéressant, vous pouvez ajouter des objets bonus qui donnent plus de points (par exemple, +5). Affichez le score en temps réel sur la scène en cochant la variable dans la liste des variables.

4

Système de vies et gestion des collisions avec les obstacles

Créez des sprites pour les obstacles (par exemple des ennemis ou des pics) et programmez-les pour qu'ils se déplacent ou restent fixes. Lorsque le personnage touche un obstacle, utilisez un bloc « si touche [obstacle] alors » pour diminuer la variable « Vies » de 1. Ajoutez un délai d'invincibilité (par exemple, 2 secondes) en utilisant un bloc « attendre » et en rendant le personnage transparent avec l'effet « fantôme ». Si les vies atteignent 0, basculez vers l'écran de défaite. Pour cela, créez un nouvel arrière-plan « Défaite » et utilisez le bloc « basculer sur l'arrière-plan ».

5

Création des niveaux et des transitions

Pour chaque niveau, créez un arrière-plan distinct et un ensemble de plateformes et d'obstacles. Utilisez des messages Scratch (bloc « envoyer à tous ») pour passer d'un niveau à l'autre. Par exemple, lorsque le personnage atteint la fin d'un niveau (un sprite « portail »), envoyez le message « niveau2 ». Dans chaque sprite, utilisez le bloc « quand je reçois [niveau2] » pour réinitialiser les positions et afficher les éléments du nouveau niveau. Assurez-vous que le score reste cumulé entre les niveaux, mais que les vies soient réinitialisées ou non selon votre choix.

6

Écrans de victoire et de défaite, sons et finalisation

Créez deux arrière-plans supplémentaires : « Victoire » et « Défaite ». Programmez le passage vers l'écran de victoire lorsque tous les niveaux sont terminés (par exemple, après le dernier niveau, envoyer le message « victoire »). Pour l'écran de défaite, utilisez la condition « si Vies = 0 ». Ajoutez des sons : un son de saut, un son de collecte, un son de défaite et un son de victoire. Utilisez les blocs « jouer le son » au moment approprié. Enfin, ajoutez un bouton « Rejouer » sur les écrans de fin qui réinitialise les variables et redémarre le jeu.

⚠️ Points de vigilance

  • ⚠️Vérifiez que les collisions entre le personnage et les plateformes sont bien détectées : utilisez la méthode de la couleur ou des blocs « touche [sprite] » pour éviter les traversées.
  • ⚠️Assurez-vous que les variables « Score » et « Vies » sont initialisées au début du jeu (par exemple, Score = 0, Vies = 3) et qu'elles sont réinitialisées lors d'un redémarrage.
  • ⚠️Testez chaque niveau séparément avant de les enchaîner : un bug dans un niveau peut bloquer tout le jeu.
  • ⚠️Gérez les délais d'invincibilité après une collision pour éviter que le personnage perde toutes ses vies en une fraction de seconde.
  • ⚠️Utilisez des messages (broadcast) pour synchroniser les transitions entre niveaux, et vérifiez que tous les sprites réagissent correctement à ces messages.

Erreurs fréquentes à éviter

Le personnage traverse les plateformes lors du saut.

✅ Solution : Utilisez une boucle « répéter jusqu'à » pour ajuster la position du personnage pixel par pixel, et vérifiez la collision avec la plateforme à chaque itération. Par exemple, après avoir ajouté la vitesse verticale, testez si le personnage touche la couleur de la plateforme et, si oui, remettez-le au-dessus.

Le score ne s'incrémente pas lors de la collecte d'un objet.

✅ Solution : Vérifiez que le bloc « ajouter à Score » est bien placé dans le script du sprite collectible, après la condition de contact. Assurez-vous que la variable « Score » est bien créée et cochée pour être affichée sur la scène.

Les vies diminuent plusieurs fois lors d'un seul contact avec un obstacle.

✅ Solution : Ajoutez un délai d'invincibilité après chaque perte de vie. Par exemple, après avoir diminué les vies, utilisez un bloc « attendre 2 secondes » et modifiez l'effet fantôme du personnage pour indiquer qu'il est invincible temporairement.

Le passage au niveau suivant ne fonctionne pas.

✅ Solution : Vérifiez que le message envoyé (par exemple « niveau2 ») est correctement orthographié et que tous les sprites concernés ont un bloc « quand je reçois [niveau2] ». Assurez-vous que les sprites du niveau précédent sont cachés et ceux du nouveau niveau sont affichés.

Le jeu ne redémarre pas après la défaite.

✅ Solution : Sur l'écran de défaite, créez un sprite bouton « Rejouer » qui, lorsqu'il est cliqué, réinitialise les variables (Score = 0, Vies = 3) et bascule vers le premier niveau. Utilisez le bloc « basculer sur l'arrière-plan » et « montrer » les sprites nécessaires.

💡 Conseils du prof

  • 💡Encouragez les élèves à planifier leur jeu sur papier avant de coder : cela les aide à structurer leur pensée et à éviter les oublis.
  • 💡Utilisez des blocs personnalisés (Mes blocs) pour simplifier le code, par exemple un bloc « sauter » qui regroupe les instructions de saut.
  • 💡Testez régulièrement le jeu en cours de développement, même après chaque petite modification, pour détecter les bugs tôt.
  • 💡Proposez aux élèves de travailler en binôme : l'un peut coder le personnage, l'autre les obstacles, puis ils fusionnent leurs projets.
  • 💡Montrez des exemples de jeux Scratch existants pour inspirer les élèves et leur donner des idées de mécaniques de jeu.

🚀 Pour aller plus loin

  • 🚀Ajouter un système de power-ups (ex. : invincibilité temporaire, double saut) qui modifie les capacités du personnage.
  • 🚀Créer un éditeur de niveaux intégré permettant au joueur de construire ses propres niveaux.
  • 🚀Intégrer un classement des meilleurs scores en utilisant les listes Scratch pour stocker les scores et les noms des joueurs.

Compétences travaillées

CT 4.2 - Programmer un objet interactif en utilisant des blocs de commande.CT 4.3 - Utiliser des variables pour stocker et manipuler des données.CT 4.4 - Concevoir et réaliser un projet numérique en respectant un cahier des charges.CT 5.1 - Tester et valider le fonctionnement d'un programme en identifiant et corrigeant les erreurs.
Techno