4.4 KiB
4.4 KiB
CookieCode
CookieCode est une microlibrairie JavaScript educative pour apprendre les bases de l'algorithmique avec des recettes de cuisine.
L'idee :
| Cuisine | Programmation |
|---|---|
| Recette | Programme |
| Ingredients | Variables |
| Materiel | Constantes / ressources |
| Etapes | Instructions |
| Actions culinaires | Fonctions |
si |
Condition |
repeter |
Boucle |
Objectif du MVP
- fonctionner directement dans une page HTML via une balise
<script>; - exposer une variable globale
CookieCode; - proposer une API chainable proche du langage naturel ;
- afficher une trace de recette et une lecture algorithmique ;
- rester sans dependance.
Utilisation dans une page
<div id="app"></div>
<script src="dist/cookiecode.js"></script>
<script>
CookieCode.configurer({
sortie: "#app",
afficherNotions: true
});
CookieCode.recette("Cookie au chocolat")
.prendre("farine", 200, "g")
.prendre("sucre", 100, "g")
.prendre("chocolat", 150, "g")
.utiliser("saladier")
.ajouter("farine")
.ajouter("sucre")
.ajouter("chocolat")
.melanger()
.repeter(2, function (recette) {
recette.melanger();
})
.cuire(12, "minutes")
.servir();
</script>
API principale
Creation
CookieCode.recette("Cookies");
CookieCode.ingredient("farine", 200, "g");
CookieCode.materiel("saladier");
CookieCode.constante("temperature", 180);
CookieCode.preparation("pate");
CookieCode.defi("Cookie avec boucle", { ingredientsMinimum: 3 });
Methodes d'une recette
.prendre(nom, quantite, unite)
.utiliser(materiel)
.ajouter(element, quantite, unite)
.retirer(element)
.couper(element, forme)
.melanger()
.verser(contenu, contenant)
.chauffer(element, temperature)
.cuire(duree, unite)
.attendre(duree, unite)
.repeter(nombre, action)
.si(condition, action, sinonAction)
.servir(element)
.afficher()
.toText()
.toHTML()
.analyser()
Exemple avec variables
const farine = CookieCode.ingredient("farine", 200, "g");
const sucre = CookieCode.ingredient("sucre", 100, "g");
const saladier = CookieCode.materiel("saladier");
const recette = CookieCode.recette("Cookies")
.utiliser(saladier)
.ajouter(farine)
.ajouter(sucre)
.melanger();
console.log(recette.toText());
Exemple avec boucle et condition
const pate = CookieCode.preparation("pate").definir("texture", "trop seche");
CookieCode.recette("Pate a cookies")
.ajouter("farine", 200, "g")
.si(function () {
return pate.est("trop seche");
}, function (recette) {
recette.ajouter("lait", 20, "ml");
})
.repeter(3, function (recette) {
recette.melanger();
})
.servir();
Feedback ludique
CookieCode peut analyser une recette et verifier si elle respecte un defi.
const recette = CookieCode.recette("Cookie")
.prendre("farine", 200, "g")
.prendre("sucre", 100, "g")
.prendre("chocolat", 150, "g")
.ajouter("farine")
.ajouter("sucre")
.ajouter("chocolat")
.melanger()
.repeter(2, function (recette) {
recette.melanger();
})
.cuire(12, "minutes")
.servir();
const defi = CookieCode.defi("Cookie avec boucle", {
ingredientsMinimum: 3,
actionsObligatoires: ["melanger", "cuire", "servir"],
boucleObligatoire: true,
terminerParServir: true,
interdireErreurs: true
});
const verification = CookieCode.verifier(recette, defi);
console.log(verification.toText());
Sortie possible :
Defi : Cookie avec boucle
Resultat : reussi
✅ Tu as utilise 3 ingredient(s).
✅ Action trouvee : melanger.
✅ Action trouvee : cuire.
✅ Action trouvee : servir.
✅ Tu as utilise une boucle avec repeter.
✅ Ta recette se termine par servir.
✅ Aucune erreur logique detectee.
Une recette peut aussi etre analysee directement :
const rapport = recette.analyser();
console.log(rapport.ingredients);
console.log(rapport.actions);
console.log(rapport.utiliseBoucle);
console.log(rapport.erreurs);
Cartes pedagogiques conseillees
| Type de carte | Mots cles | Notion |
|---|---|---|
| Structure | recette, servir |
programme / resultat |
| Donnee | ingredient, quantite, unite |
variable / valeur |
| Materiel | materiel, utiliser |
constante / ressource |
| Action | prendre, ajouter, couper, melanger, cuire |
fonction |
| Logique | si, sinon, repeter |
condition / boucle |
Developpement
npm test
npm run build
Aucune dependance n'est necessaire pour lancer les tests du MVP.