Mario Kart 2D
Créer un véhicule “physique” dans Scratch
Un mini-cours complet pour apprendre à programmer un véhicule avec
accélération, friction, gestion des bords et blocs personnalisés.
Parfait pour les ateliers du mercredi, les cours collège/lycée et les profs qui veulent des
activités clés en main.
Public : 8 → 18 ans
+ idées pour aller plus loin
Ressource de départ : projet Scratch à télécharger
Tu peux partir de zéro ou gagner du temps en important un projet de base. Clique ici pour récupérer le projet Scratch de référence :
📥 Ressource : Télécharger le projet de départUne fois sur Scratch, clique sur “Voir à l’intérieur” pour inspecter les scripts, puis sur “Remix” si tu veux l’adapter.
1) Créer un simple véhicule (contrôles de base)
Première étape : faire apparaître une voiture (ou un vaisseau, un kart…) qui répond aux touches du clavier. L’objectif est d’avoir un véhicule jouable le plus vite possible.
🚗 1) Création d'un simple véhiculeObjectifs pédagogiques :
- Savoir choisir ou dessiner un sprite de véhicule.
- Utiliser les événements “quand le drapeau vert est cliqué”.
- Déplacer le véhicule avec les flèches du clavier.
– Quand drapeau vert cliqué : aller au centre, s’orienter vers la droite.
– Pour chaque touche :
• Flèche droite → changer x de 5
• Flèche gauche → changer x de -5
• Flèche haut → changer y de 5
• Flèche bas → changer y de -5
Variantes pour les plus jeunes :
- Changer la couleur du véhicule quand on appuie sur une touche.
- Ajouter un son “vroom” quand la voiture accélère.
2) Ajouter friction, accélération et orientation
On passe d’un déplacement “robot” à un véhicule plus réaliste. Au lieu de déplacer la voiture directement, on utilise des variables de vitesse et une friction qui la ralentit toute seule.
⚙️ 2) Friction, accélération et orientationConcepts clés :
- vitesse : “combien de pas par frame” le véhicule parcourt.
- accélération : on augmente ou diminue la vitesse quand on appuie sur une touche.
- friction : la vitesse diminue un peu toute seule à chaque tour de boucle.
- orientation : la voiture tourne avec les flèches gauche/droite.
–
vitesse (nombre) : vitesse en avant / arrière–
angle (nombre) : orientation du véhicule (ou utiliser “orientation” intégrée de Scratch)
– Quand drapeau vert cliqué → mettre vitesse à 0
– Boucle “répéter indéfiniment” :
• Si touche ↑ pressée → ajouter 0.5 à vitesse
• Si touche ↓ pressée → ajouter -0.5 à vitesse
• Si touche ← pressée → tourner gauche de 4°
• Si touche → pressée → tourner droite de 4°
• Appliquer la friction : mettre
vitesse à vitesse * 0.9• Avancer : avancer de (vitesse) pas
Challenge :
- Limiter la vitesse à un maximum (par exemple entre -15 et 15).
- Afficher un compteur de vitesse avec une variable
speed_kmh(ex :vitesse * 10).
3) Gérer les bords de l’écran
Maintenant que la voiture se comporte comme une “vraie”, il faut éviter qu’elle sorte de la route, c’est-à-dire hors de l’écran. C’est l’étape “gestion des bords”.
Idées de comportements possibles :
- Rebond : la voiture tape le bord et rebondit (arcade).
- Blocage : la voiture ne peut pas sortir (on la recolle au bord).
- Crash : la voiture est remise au départ en cas de sortie.
– Dans la boucle principale, après “avancer de (vitesse) pas” :
• Si “sur le bord ?” → rebondir
(bloc Scratch : “si sur le bord alors rebondir”)
– Tester la position x et y :
• Si x > 230 → mettre x à 230
• Si x < -230 → mettre x à -230
• Même chose pour y (haut/bas) avec des limites adaptées.
– En cas de choc fort, on peut aussi mettre vitesse à 0.
Exercice pour la classe :
- Choisir un comportement : rebond, blocage ou crash.
- Afficher un message “🚧 sortie de piste !” quand la voiture touche le bord.
- Ajouter un compteur de “crashs” (variable
nombre_crashs).
4) Utiliser les blocs personnalisés (propre et pro)
Pour rendre le projet lisible comme un vrai jeu pro, on va découper le code en blocs personnalisés. Par exemple : “Mettre à jour la vitesse”, “Appliquer la friction”, “Mettre à jour la position”, etc.
🧩 4) Utilisation des blocsExemples de blocs à créer :
- “gérer commandes” : lit les touches et modifie la variable
vitesse/ l’orientation. - “appliquer friction” : applique
vitesse = vitesse * 0.9. - “déplacer véhicule” : avance, gère les bords.
– Quand drapeau vert cliqué :
• initialiser les variables
• répéter indéfiniment :
→ appeler “gérer commandes”
→ appeler “appliquer friction”
→ appeler “déplacer véhicule”
Pourquoi c’est important (message pour les développeurs) :
- On apprend la décomposition : séparer un problème en sous-problèmes.
- C’est la base de la programmation structurée (fonctions, méthodes…).
- Le code devient beaucoup plus facile à relire et à faire évoluer.
QCM – As-tu compris la physique du véhicule ?
Coche une réponse par question, puis clique sur “Vérifier mes réponses”.
Idées d’extensions pour aller encore plus loin
- Ajouter des checkpoints et un chrono pour faire un vrai circuit de course.
- Créer une minimap (petit rond en coin de l’écran qui montre la position de la voiture).
- Gérer les collisions avec les murs dessinés sur l’arrière-plan (couleur spécifique).
- Ajouter un mode 2 joueurs : deux véhicules, deux sets de touches.
- Introduire une notion de drift (dérapage) pour les élèves avancés : la voiture glisse plus quand la vitesse est élevée.
Commentaires
Enregistrer un commentaire