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épart

Une 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éhicule

Objectifs 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.
Idée de script (pseudo-Scratch) :
– 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 orientation

Concepts 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.
Idée de variables :
vitesse (nombre) : vitesse en avant / arrière
angle (nombre) : orientation du véhicule (ou utiliser “orientation” intégrée de Scratch)
Idée de logique (pseudo-Scratch) :
– Quand drapeau vert cliqué → mettre vitesse à 0
– Boucle “répéter indéfiniment” :
  • Si touche ↑ presséeajouter 0.5 à vitesse
  • Si touche ↓ presséeajouter -0.5 à vitesse
  • Si touche ← presséetourner gauche de 4°
  • Si touche → presséetourner 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.
Option simple (rebond global) :
– Dans la boucle principale, après “avancer de (vitesse) pas” :
  • Si “sur le bord ?”rebondir
(bloc Scratch : “si sur le bord alors rebondir”)
Option plus fine (blocage) :
– 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 blocs

Exemples 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.
Organisation possible (pseudo-Scratch) :
– 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”.

  1. 1. À quoi sert la variable vitesse dans ce projet ?


  2. 2. La friction (ex : mettre vitesse à vitesse * 0.9) a pour effet de…


  3. 3. Quelle est la différence entre “déplacer avec les touches” et “utiliser vitesse + friction” ?


  4. 4. Pourquoi utiliser des blocs personnalisés (“gérer commandes”, “appliquer friction”, etc.) ?


  5. 5. Que peut-on faire quand la voiture touche le bord de l’écran ?


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

Posts les plus consultés de ce blog

Basthon.fr

mBot2 - programmation mBlock/python