Élève : 5ème, maîtrise Scratch
Durée : 2h / semaine
Environnement : Linux/GNOME, Geany + Node.js
Objectif : Passer de Scratch à JavaScript via des projets ludiques
- Projets concrets dès le début (pas de théorie abstraite)
- Comparaisons visuelles Scratch ↔ JavaScript
- Progression : Console → Console colorée (terminal-kit) → Canvas Web
- Un challenge pour valider chaque module
- Thème fil rouge : Minecraft / Jeux
- Un fichier par exercice : plus clair, progression pas à pas
- Pas de fichier solutions : on cherche par soi-même !
- Exercices intégrés au cours : on pratique au fur et à mesure de la lecture
| Module | Semaines | Environnement | Challenge Final |
|---|---|---|---|
| 1 - Fondations | 1-4 | Console Node.js | ⛏️ Minecraft Math Mining |
| 2 - Structures de données | 5-8 | Console + terminal-kit | ⚔️ Combat RPG tour par tour |
| 3 - Jeux console | 9-12 | terminal-kit avancé | 🐍 Snake ASCII |
| 4 - Canvas Web | 13-16 | Navigateur (HTML minimal) | 👾 Space Invaders mini |
Objectif : Maîtriser la syntaxe de base de JavaScript
console.log()pour afficher- Variables avec
letetconst - Types :
string,number,boolean - Opérations mathématiques
- Mini-projet : Calculatrice parlante
- Lien Scratch : Variables orange
if,else,else if- Opérateurs de comparaison (
===,!==,<,>, etc.) - Opérateurs logiques (
&&,||,!) - Mini-projet : Choisis ton aventure (1 choix)
- Lien Scratch : Bloc "Si/Sinon"
- Boucle
for - Boucle
while breaketcontinue- Mini-projet : Pyramide d'étoiles
- Lien Scratch : Bloc "Répéter"
- Déclarer une fonction
- Paramètres et
return - Réutiliser son code
- Mini-projet : Convertisseur d'unités
- Lien Scratch : Blocs personnalisés
⛏️ MINECRAFT MATH MINING ⛏️
Concept : Quiz de tables de multiplication avec thème Minecraft
- Blocs à miner (💎💎🥇🪨🥬) = difficulté variable
- Bonne réponse = bloc obtenu
- Mauvaise réponse = pioche s'use
- Creeper 💀 = calcul chrono sinon explosion !
Mécaniques :
- Inventaire de ressources
- Durabilité de pioche
- Niveaux de difficulté (tables faciles → difficiles)
- Score et record
Compétences validées :
✅ Variables (score, inventaire, durabilité)
✅ Aléatoire (Math.random)
✅ Conditions (vérifier réponse, type bloc)
✅ Boucles (boucle de jeu)
✅ Fonctions (genererCalcul, afficherInventaire, etc.)
Objectif : Manipuler tableaux et objets, simples puis imbriqués
- Créer un tableau
[] push(),pop(),length- Parcourir avec
foretforEach - Mini-projet : Liste de courses interactive
- Créer un objet
{} - Propriétés et méthodes
- Accéder aux données
- Mini-projet : Fiche de personnage RPG
- Combiner tableaux et objets
- Rechercher (
find), filtrer (filter) - Mini-projet : Inventaire d'items Minecraft
- Objets dans objets (
hero.equipement.arme.degats) - Tableaux dans objets, objets dans tableaux d'objets
- Modifier en profondeur
- Mini-projet : Équipe RPG (3 héros avec stats et compétences)
Concept : Combat au tour par tour style RPG
- Héros vs Monstre (objets avec stats imbriquées)
- Équipement : arme et armure (sous-objets)
- Actions : Attaquer, Défendre, Potion, Fuir
- Inventaire d'objets équipables (tableau d'objets)
- Barres de vie colorées (intro terminal-kit)
Compétences validées :
✅ Objets imbriqués (hero.stats, hero.equipement.arme...)
✅ Tableaux d'objets (inventaire de potions/items)
✅ Logique de jeu complexe
✅ Introduction terminal-kit (couleurs)
Objectif : Créer des jeux interactifs en terminal avec terminal-kit
- Installation et import
- Couleurs et styles
- Effacer l'écran
- Mini-projet : Texte arc-en-ciel animé
- Écouter les touches
- Réagir sans appuyer sur Entrée
- Mini-projet : Jeu de réflexe
- Tableau de tableaux
- Coordonnées (x, y)
- Afficher une grille
- Mini-projet : Morpion
setInterval/setTimeout- Mettre à jour → Afficher → Répéter
- Mini-projet : Personnage qui bouge
Concept : Snake classique en terminal
- Serpent qui grandit
- Pommes à manger 🍎
- Collision murs et soi-même
- Score et record
Compétences validées :
✅ Grille 2D (tableau de tableaux)
✅ Boucle de jeu (setInterval)
✅ Gestion clavier temps réel
✅ Logique de collision
Objectif : Créer des jeux graphiques avec Canvas (HTML minimal)
- HTML minimal (template fourni)
- Contexte 2D
- Dessiner : rectangles, cercles, lignes
- Couleurs et styles
- Mini-projet : Dessiner des formes
requestAnimationFrame- Effacer et redessiner
- Vélocité et position
- Mini-projet : Balle qui rebondit
- Événements clavier
- Événements souris
- Mini-projet : Contrôler un vaisseau
- Charger des images
- Sons (basique)
- Polish du jeu
- Mini-projet : Finalisation Space Invaders
Concept : Space Invaders simplifié
- Vaisseau contrôlé au clavier
- Vagues d'aliens (tableaux)
- Tirs et collisions
- Score et vies
Compétences validées :
✅ Canvas (dessiner, animer)
✅ Boucle de jeu web (requestAnimationFrame)
✅ Gestion clavier
✅ Collision 2D
✅ Tableaux d'ennemis
cours_JS_enfant/
├── README.md # Ce fichier (plan du cours)
├── installation.md # Guide installation Node.js + Geany
│
├── module_1_fondations/
│ ├── semaine_01/
│ │ ├── cours.md # Fiche de cours
│ │ ├── exercice_1_console_log.js # Un fichier par exercice
│ │ ├── exercice_2_variables.js
│ │ ├── exercice_3_types.js
│ │ ├── exercice_4_calculs.js
│ │ ├── exercice_5_modifier_variables.js
│ │ ├── exercice_6_texte.js
│ │ ├── exercice_7_modulo.js
│ │ ├── exercice_8_entree_utilisateur.js
│ │ └── defi_fiche_joueur.js # Défi bonus
│ ├── semaine_02/
│ ├── semaine_03/
│ ├── semaine_04/
│ └── challenge_minecraft_math/
│ ├── enonce.md
│ └── squelette.js
│
├── module_2_structures/
│ ├── semaine_05/ # Tableaux
│ ├── semaine_06/ # Objets
│ ├── semaine_07/ # Tableaux d'objets
│ ├── semaine_08/ # Objets imbriqués
│ └── challenge_combat_rpg/
│
├── module_3_jeux_console/
│ ├── semaine_09/
│ ├── semaine_10/
│ ├── semaine_11/
│ ├── semaine_12/
│ └── challenge_snake/
│
├── module_4_canvas/
│ ├── template.html # HTML minimal réutilisable
│ ├── semaine_13/
│ ├── semaine_14/
│ ├── semaine_15/
│ ├── semaine_16/
│ └── challenge_space_invaders/
│
└── aide-memoire/
├── syntaxe_js.md # Résumé syntaxe JavaScript
├── scratch_vs_js.md # Comparaisons Scratch ↔ JS
├── terminal-kit.md # Référence terminal-kit
└── canvas.md # Référence Canvas
| Durée | Activité |
|---|---|
| 0-10 min | Rappel semaine précédente (quiz rapide) |
| 10-30 min | Lecture du cours + exercices au fil de la lecture |
| 30-90 min | Suite des exercices (guidés → autonomes) |
| 90-120 min | Défi bonus ou avancement projet |
| Scratch | JavaScript |
|---|---|
| Quand drapeau vert cliqué | Appel de fonction main() |
| Variables (orange) | let maVariable = 5 |
| Répéter X fois | for (let i = 0; i < x; i++) |
| Répéter jusqu'à | while (!condition) |
| Si... Alors... Sinon | if... else |
| Listes | let tableau = [] |
| Ajouter à liste | tableau.push(element) |
| Blocs personnalisés | function monBloc() {} |
| Nombre aléatoire | Math.random() |
| Dire "Hello" | console.log("Hello") |
- Le challenge "Minecraft Math Mining" permet aussi à sa sœur de réviser ses tables
- Possibilité d'ajouter un mode 2 joueurs / compétition
- Adapter les thèmes selon ses intérêts (Minecraft, autres jeux...)
Document créé le 25 novembre 2025