AutonomousVehicleControlBeginnersGuide
Python sample codes and documents about Autonomous vehicle control algorithm. This project can be used as a technical guide book to study the algorithms and the software architectures for beginners.
Assemblez les cinq centrales (hydrogène, biomasse, cycle combiné, solaire, éolien) pour allumer la centrale du futur.
Translation pending
EducationVue · JavaScriptGitHub @houedanoujlOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Jeu Nuxt 4 de type drag & drop, qui marche aussi bien sur téléphone que sur ordinateur. La vue d'ensemble « La centrale du futur » montre cinq centrales en silhouette : hydrogène, biomasse, cycle combiné, solaire et éolien. Chacune cache un puzzle de 6 pièces. Une fois le puzzle juste, la centrale s'allume dans le paysage. Le jeu comprend un score en kWh, 11 récompenses et un classement partagé.
npm install
npm run dev # http://localhost:3000
npm run build # build de production (.output)
Les PDF du client ne contiennent qu'une image JPEG à 4× la taille de la page, sans aucun vecteur. Les schémas ont donc été redessinés en SVG à partir de mesures prises sur ces images, puis contrôlés pixel à pixel.
| Dossier / fichier | Rôle |
|---|---|
public/reference/*.jpg | images d'origine extraites des PDF (référence de comparaison, aussi servies à /comparaison) |
art/<id>.mjs | source de chaque schéma (exporte le SVG ; primitives mesurées) |
art/lib.mjs | briques communes : étiquettes en pastille, flux en pointillés… |
app/utils/jigsaw.js | géométrie des découpes, ajustée sur la position de chaque tiret du PDF |
scripts/build-svg.mjs | npm run svg:build : convertit les textes (Trebuchet MS, la police du client) en tracés et ajoute découpes et cadre, puis écrit app/assets/svg/ |
scripts/compare.mjs | npm run svg:check : rend chaque SVG à 4× et le compare au JPEG ; critère ≥ 98 % des pixels sous ΔE 6 ; écrit les cartes d'écarts dans reference/diff/ |
/comparaison | page de validation : SVG superposé à l'original (fondu ou différence) |
Les textes sont convertis en tracés parce que Trebuchet MS n'existe pas sur Android et n'est pas une Google Font. La police n'est pas redistribuée : le build la lit sur la machine (macOS et Windows l'ont ; sinon, définir les variables TREBUCHET_REGULAR et TREBUCHET_BOLD). Seuls les SVG générés sont versionnés et utilisés par le site.
Emboîtement logique : chaque tenon correspond à un flux qui passe d'un composant à l'autre. Il est placé là où le flux franchit l'arête dans le schéma, pointe dans le sens du flux, et sa forme dépend du type de flux :
Les connexions sont décrites par centrale dans app/data/plants.js (edges) et la géométrie est dans app/utils/jigsaw.js (TABS). Une arête sans flux reste plate. node scripts/preview-pieces.mjs <id> produit une vue éclatée des pièces pour relecture.
Les dessins restent au 1:1. Une fois le puzzle juste, le schéma du client s'affiche en entier (sans les découpes) et l'énergie y circule.
Le plateau n'affiche aucune silhouette, et on ne vérifie qu'une fois les 6 cases remplies : les pièces justes se verrouillent, les fausses retournent au bac et comptent comme erreurs.
Le nom de chaque pièce reste lisible : il est retiré du dessin découpé et redessiné au-dessus de toutes les pièces.
Commandes :
Une centrale rapporte 1000 kWh, moins 2 par seconde et 50 par erreur, avec un plancher de 100. S'y ajoutent les bonus « Sans faute » (+200) et « Éclair » (+150, en moins de 45 s), puis un multiplicateur de série : ×1,2 après 2 puzzles sans faute d'affilée, ×1,5 à partir de 3. Chaque coup de pouce utilisé coûte 100 kWh.
Les 11 récompenses sont définies dans app/composables/useGame.js :
Il passe par l'API Nitro GET/POST /api/scores, qui valide les données côté serveur. Deux modes de stockage :
NUXT_SUPABASE_URL et NUXT_SUPABASE_KEY (clé publishable) sont définis (voir .env.example). Exécuter une fois supabase/migrations/0001_scores.sql dans l'éditeur SQL du projet. La table est en lecture publique ; les écritures passent uniquement par la fonction submit_score, qui valide la partie côté base..data/scores (développement local).NUXT_PUBLIC_SITE_URL sert à construire les liens de partage (LinkedIn, WhatsApp, Facebook, X).
Nuxt est détecté automatiquement par Vercel : aucune configuration à ajouter. Les SVG des schémas sont versionnés, donc le build sur Vercel n'a pas besoin de la police Trebuchet MS.
Dans Project Settings → Environment Variables (Production et Preview), définir :
| Variable | Valeur |
|---|---|
NUXT_SUPABASE_URL | https://yzgbqpmopzhjefyyrzzr.supabase.co |
NUXT_SUPABASE_KEY | la clé publishable du projet (sb_publishable_…), jamais la clé secrète |
NUXT_PUBLIC_SITE_URL | l'adresse publique du jeu (liens de partage) |
Sur Vercel, le disque des fonctions n'est pas conservé : le stockage local de secours ne sert qu'en développement, et le classement doit passer par Supabase.
Direction « jeu illustré » aux couleurs CIPREL (voir DESIGN.md) :
CiprelTechnician.vue, GuideBubble.vue) ;AbidjanSkyline.vue) ;useSound.js), coupables d'un bouton ;prefers-reduced-motion).