1072 lines
65 KiB
HTML
1072 lines
65 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="fr">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>Module A. Le poste de travail</title>
|
|
<style>
|
|
:root{--encre:#1F3864;--encre-clair:#3E5C93;--papier:#FBFAF7;--trait:#C9C6BC;
|
|
--cible:#F2B01E;--ok:#2E7D4F;--erreur:#C0392B;--base:17px}
|
|
*{box-sizing:border-box}
|
|
html{font-size:var(--base)}
|
|
body{margin:0;background:var(--papier);color:var(--encre);
|
|
font-family:Verdana,"DejaVu Sans",Geneva,sans-serif;line-height:1.55}
|
|
body.projection{--base:25px}
|
|
header{background:var(--encre);color:var(--papier);padding:.9rem 1.2rem;
|
|
display:flex;flex-wrap:wrap;gap:.8rem 1.4rem;align-items:baseline}
|
|
header h1{font-size:1rem;font-weight:normal;margin:0}
|
|
nav{display:flex;flex-wrap:wrap;gap:.4rem;margin-left:auto}
|
|
nav button{font:inherit;font-size:.82rem;background:transparent;color:var(--papier);
|
|
border:2px solid rgba(251,250,247,.45);padding:.3rem .7rem;cursor:pointer;border-radius:2px}
|
|
nav button[aria-current="true"]{background:var(--cible);color:var(--encre);border-color:var(--cible)}
|
|
nav button:hover{border-color:var(--papier)}
|
|
main{max-width:60rem;margin:0 auto;padding:1.6rem 1.2rem 5rem}
|
|
section[hidden]{display:none}
|
|
h2{font-size:1.6rem;line-height:1.2;margin:.2rem 0}
|
|
.kicker{font-size:.85rem;color:var(--encre-clair);margin:0 0 1.6rem}
|
|
h3{font-size:1.1rem;margin:2.2rem 0 .6rem;border-top:2px solid var(--trait);padding-top:.8rem}
|
|
p{max-width:44rem}
|
|
ol.plan{counter-reset:s;list-style:none;padding:0;max-width:44rem}
|
|
ol.plan li{counter-increment:s;position:relative;padding:.45rem 0 .45rem 3rem;border-bottom:1px solid var(--trait)}
|
|
ol.plan li::before{content:counter(s);position:absolute;left:0;top:.45rem;width:2rem;height:2rem;
|
|
line-height:2rem;text-align:center;background:var(--encre);color:var(--papier);font-size:.9rem;border-radius:50%}
|
|
ul.but{list-style:none;padding:0;max-width:44rem}
|
|
ul.but li{padding:.35rem 0 .35rem 1.6rem;position:relative}
|
|
ul.but li::before{content:"";position:absolute;left:0;top:.95rem;width:.7rem;height:.7rem;background:var(--cible)}
|
|
.rappel{background:#FDF3DA;border-left:6px solid var(--cible);padding:.7rem 1rem;margin:.9rem 0;max-width:44rem}
|
|
.atelier{border:2px solid var(--trait);border-radius:3px;margin:1.2rem 0;background:#fff}
|
|
.atelier>h4{margin:0;padding:.6rem 1rem;background:var(--encre);color:var(--papier);font-size:.98rem;font-weight:normal;
|
|
display:flex;gap:.6rem;align-items:baseline}
|
|
.atelier>h4 .num{background:var(--cible);color:var(--encre);font-size:.8rem;padding:0 .45rem;border-radius:2px}
|
|
.atelier .corps{padding:1rem}
|
|
.consigne{margin:0 0 .9rem;font-size:.95rem}
|
|
.barre{display:flex;flex-wrap:wrap;gap:.7rem 1.4rem;align-items:center;margin:.2rem 0 .9rem;font-size:.95rem}
|
|
.cible-txt{font-weight:bold;font-size:1.05rem}
|
|
.score{color:var(--encre-clair);font-size:.9rem}
|
|
button.action{font:inherit;background:var(--encre);color:var(--papier);border:0;padding:.45rem 1rem;cursor:pointer;border-radius:2px}
|
|
button.action:hover{background:var(--encre-clair)}
|
|
:focus-visible{outline:3px solid var(--cible);outline-offset:2px}
|
|
.aire{position:relative;width:100%;height:22rem;background:#F4F2EC;border:2px solid var(--trait);overflow:hidden;touch-action:none}
|
|
.pion{position:absolute;width:3.2rem;height:3.2rem;line-height:3.2rem;text-align:center;font-family:inherit;
|
|
font-size:1.25rem;font-weight:bold;background:#fff;color:var(--encre);border:2px solid var(--encre);
|
|
border-radius:50%;cursor:pointer;user-select:none;padding:0}
|
|
.pion.fait{background:var(--ok);border-color:var(--ok);color:#fff}
|
|
.pion.actif{background:var(--cible);border-color:var(--cible)}
|
|
.rate{animation:secousse .25s}
|
|
@keyframes secousse{25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}
|
|
.boites{display:grid;grid-template-columns:repeat(4,1fr);gap:.7rem;max-width:34rem}
|
|
.boite{aspect-ratio:1/1;border:2px solid var(--encre);background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer}
|
|
.boite.ouverte{background:var(--ok);border-color:var(--ok)}
|
|
.boite .forme{width:52%;height:52%;opacity:0}
|
|
.boite.ouverte .forme{background:#fff;opacity:1;border-radius:50%}
|
|
.tri{display:flex;flex-wrap:wrap;gap:1.2rem}
|
|
.reserve{flex:1 1 16rem;min-height:8rem;padding:.6rem;border:2px dashed var(--trait);
|
|
display:flex;flex-wrap:wrap;gap:.5rem;align-content:flex-start}
|
|
.bacs{flex:2 1 22rem;display:flex;gap:.8rem;flex-wrap:wrap}
|
|
.bac{flex:1 1 7rem;min-height:8rem;border:2px solid var(--encre);display:flex;flex-wrap:wrap;
|
|
gap:.5rem;align-content:flex-start;padding:.5rem}
|
|
.bac .titre{flex:1 0 100%;font-size:.85rem;text-align:center;color:var(--encre-clair)}
|
|
.bac.vise{background:#FDF3DA;border-color:var(--cible)}
|
|
.jeton{padding:.4rem .65rem;background:#fff;border:2px solid var(--encre);cursor:grab;user-select:none;font-size:.88rem;touch-action:none}
|
|
.jeton.pris{position:fixed;z-index:99;pointer-events:none;cursor:grabbing;box-shadow:0 6px 14px rgba(31,56,100,.3)}
|
|
.jeton .glyphe{display:block;width:2rem;height:2rem}
|
|
.etapes{display:flex;flex-direction:column;gap:.5rem;max-width:42rem}
|
|
.etape{font:inherit;text-align:left;padding:.5rem .75rem;background:#fff;border:2px solid var(--encre);cursor:pointer}
|
|
.etape.placee{background:var(--ok);border-color:var(--ok);color:#fff;cursor:default}
|
|
.rang{display:inline-block;min-width:1.6rem;font-weight:bold}
|
|
.vf{max-width:44rem}
|
|
.vf .ligne{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;padding:.5rem 0;border-bottom:1px solid var(--trait)}
|
|
.vf .txt{flex:1 1 18rem}
|
|
.vf .verdict{font-size:.85rem;flex:1 1 100%}
|
|
.vf button{font:inherit;padding:.25rem .8rem;border:2px solid var(--encre);background:#fff;color:var(--encre);cursor:pointer}
|
|
.vf button.choisi{background:var(--encre);color:#fff}
|
|
.juste{color:var(--ok)}
|
|
.faux{color:var(--erreur)}
|
|
.qcm{max-width:44rem}
|
|
.qcm .q{font-weight:bold;margin:.2rem 0 .6rem}
|
|
.qcm .choix{display:flex;flex-wrap:wrap;gap:.5rem}
|
|
.qcm .choix button{font:inherit;padding:.4rem .85rem;border:2px solid var(--encre);background:#fff;color:var(--encre);cursor:pointer;text-align:left}
|
|
.qcm .choix button.bon{background:var(--ok);border-color:var(--ok);color:#fff}
|
|
.qcm .choix button.mauvais{background:var(--erreur);border-color:var(--erreur);color:#fff}
|
|
.qcm .retour{margin-top:.7rem;font-size:.9rem;min-height:1.4rem}
|
|
.paires{display:flex;gap:1rem;flex-wrap:wrap;max-width:44rem}
|
|
.paires .col{flex:1 1 13rem;display:flex;flex-direction:column;gap:.45rem}
|
|
.paires button{font:inherit;font-size:.88rem;text-align:left;padding:.45rem .7rem;background:#fff;
|
|
border:2px solid var(--encre);color:var(--encre);cursor:pointer}
|
|
.paires button.choisi{background:var(--cible);border-color:var(--cible)}
|
|
.paires button.liee{background:var(--ok);border-color:var(--ok);color:#fff;cursor:default}
|
|
.chemin{max-width:40rem}
|
|
.fil{font-size:.9rem;color:var(--encre-clair);margin-bottom:.6rem;word-break:break-word}
|
|
.liste{display:flex;flex-direction:column;gap:.4rem}
|
|
.liste button{font:inherit;text-align:left;padding:.45rem .7rem;background:#fff;border:2px solid var(--encre);color:var(--encre);cursor:pointer}
|
|
.liste button.dossier::before{content:"[dossier] ";color:var(--encre-clair);font-size:.8rem}
|
|
.liste button.fichier::before{content:"[fichier] ";color:var(--encre-clair);font-size:.8rem}
|
|
.zone{fill:#fff;stroke:#1F3864;stroke-width:2;cursor:pointer}
|
|
.zone:hover{fill:#FDF3DA}
|
|
.zone.trouve{fill:#D6EBDE;stroke:#2E7D4F}
|
|
svg text{font-family:inherit;font-size:11px;fill:#1F3864;pointer-events:none}
|
|
figure.schema{margin:0;max-width:30rem}
|
|
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
|
|
@media print{header,nav{display:none}section[hidden]{display:block}}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
|
|
<header>
|
|
<h1>Module A. Le poste de travail</h1>
|
|
<nav id="nav">
|
|
<button data-cible="accueil" aria-current="true">Accueil</button>
|
|
<button data-cible="p1">1. Mettre en marche</button>
|
|
<button data-cible="p2">2. La souris</button>
|
|
<button data-cible="p3">3. Les appareils</button>
|
|
<button data-cible="p4">4. Les programmes</button>
|
|
<button data-cible="p5">5. Enregistrer</button>
|
|
<button data-cible="p6">6. Le parcours</button>
|
|
<button id="btn-projection">Agrandir</button>
|
|
</nav>
|
|
</header>
|
|
|
|
<main>
|
|
|
|
<section id="accueil">
|
|
<h2>Six heures pour prendre l'ordinateur en main</h2>
|
|
<p class="kicker">Travaux sur ordinateur, 2e différenciée. Local 134 INFO.</p>
|
|
<p>Chaque heure suit le même ordre : on lit le cours, on fait les exercices écrits, on fait les jeux de ce site, on manipule sur le poste, on range et on éteint.</p>
|
|
<p>Tous les jeux se refont autant de fois que tu veux. Le deuxième essai est toujours meilleur que le premier.</p>
|
|
<div class="rappel"><strong>Avant de partir, toujours.</strong> Démarrer, Alimentation, Arrêter. Jamais le bouton de la boîte.</div>
|
|
</section>
|
|
|
|
<section id="p1" hidden>
|
|
<h2>Mettre l'ordinateur en marche</h2>
|
|
<p class="kicker">Période 1. Six jeux.</p>
|
|
<h3>Le plan de l'heure</h3>
|
|
<ol class="plan">
|
|
<li>Les règles du local et ton poste.</li>
|
|
<li>Le cours et les six exercices.</li>
|
|
<li>Les jeux de ce site.</li>
|
|
<li>Allumer, ouvrir sa session, verrouiller, éteindre.</li>
|
|
<li>Ranger et éteindre.</li>
|
|
</ol>
|
|
<h3>Ce que tu dois savoir faire à la fin de l'heure</h3>
|
|
<ul class="but">
|
|
<li>Allumer un ordinateur et ouvrir ta session, seul.</li>
|
|
<li>Reconnaître et nommer ce qu'il y a sur le bureau.</li>
|
|
<li>Verrouiller ton écran quand tu t'absentes une minute.</li>
|
|
<li>Éteindre par le menu, seul.</li>
|
|
</ul>
|
|
<div class="rappel"><strong>Un ordinateur ne devine pas.</strong> Il fait exactement ce qu'on lui demande. Quand le résultat est faux, c'est presque toujours la demande qui n'était pas claire.</div>
|
|
<h3>Les jeux</h3>
|
|
<div id="jeux-p1"></div>
|
|
</section>
|
|
|
|
<section id="p2" hidden>
|
|
<h2>La souris</h2>
|
|
<p class="kicker">Période 2. Neuf jeux.</p>
|
|
<h3>Le plan de l'heure</h3>
|
|
<ol class="plan">
|
|
<li>Le cours et les six exercices.</li>
|
|
<li>Les jeux de ce site.</li>
|
|
<li>Trier les douze images du dossier Exercices.</li>
|
|
<li>Ranger et éteindre.</li>
|
|
</ol>
|
|
<div class="rappel"><strong>Un clic choisit. Deux clics ouvrent.</strong> Pour déplacer, tu gardes le bouton appuyé pendant tout le trajet. La forme du curseur t'annonce ce qui va se passer.</div>
|
|
<h3>Les jeux</h3>
|
|
<div id="jeux-p2"></div>
|
|
</section>
|
|
|
|
<section id="p3" hidden>
|
|
<h2>Les appareils autour de l'ordinateur</h2>
|
|
<p class="kicker">Période 3. Sept jeux.</p>
|
|
<h3>Le plan de l'heure</h3>
|
|
<ol class="plan">
|
|
<li>Le cours et les sept exercices.</li>
|
|
<li>Les jeux de ce site.</li>
|
|
<li>Le tour du poste, à deux.</li>
|
|
<li>Brancher et tester le casque, puis la webcam.</li>
|
|
<li>Compléter le lexique, puis ranger et éteindre.</li>
|
|
</ol>
|
|
<div class="rappel"><strong>L'ordinateur reçoit, il transforme, il renvoie.</strong> Ce n'est pas parce que les câbles arrivent à l'unité centrale que c'est une entrée : l'entrée, c'est ce qui est au bout du câble, dans ta main.</div>
|
|
<h3>Les jeux</h3>
|
|
<div id="jeux-p3"></div>
|
|
</section>
|
|
|
|
<section id="p4" hidden>
|
|
<h2>Ouvrir et quitter un programme</h2>
|
|
<p class="kicker">Période 4. Sept jeux.</p>
|
|
<h3>Le plan de l'heure</h3>
|
|
<ol class="plan">
|
|
<li>La démonstration du professeur.</li>
|
|
<li>Le cours et les six exercices.</li>
|
|
<li>Les jeux de ce site.</li>
|
|
<li>Ouvrir trois programmes, basculer, quitter, vérifier la barre.</li>
|
|
<li>Ranger et éteindre.</li>
|
|
</ol>
|
|
<div class="rappel"><strong>Réduire n'est pas quitter.</strong> Tant que la marque est dans la barre du bas, le programme tourne encore.</div>
|
|
<h3>Les jeux</h3>
|
|
<div id="jeux-p4"></div>
|
|
</section>
|
|
|
|
<section id="p5" hidden>
|
|
<h2>Enregistrer et retrouver son travail</h2>
|
|
<p class="kicker">Période 5. Sept jeux.</p>
|
|
<h3>Le plan de l'heure</h3>
|
|
<ol class="plan">
|
|
<li>La démonstration du professeur.</li>
|
|
<li>Le cours et les sept exercices.</li>
|
|
<li>Les jeux de ce site.</li>
|
|
<li>Créer son dossier, enregistrer, fermer, retrouver, rouvrir.</li>
|
|
<li>Retirer sa clé, ranger et éteindre.</li>
|
|
</ol>
|
|
<div class="rappel"><strong>Ton travail n'existe que quand il est enregistré.</strong> Avant, il est sur ton banc, et le banc est vidé ce soir.</div>
|
|
<h3>Les jeux</h3>
|
|
<div id="jeux-p5"></div>
|
|
</section>
|
|
|
|
<section id="p6" hidden>
|
|
<h2>Le parcours complet</h2>
|
|
<p class="kicker">Période 6. Cinq jeux de révision.</p>
|
|
<p>Pas de matière nouvelle. Tu révises avec les jeux, puis tu fais le parcours complet sur ton poste, seul. Ce parcours compte pour le bulletin.</p>
|
|
<div class="rappel"><strong>Lis les huit étapes en entier avant de commencer.</strong> Si tu bloques, dis-le : un parcours raté se refait, et c'est la version corrigée qui compte.</div>
|
|
<h3>Les huit étapes</h3>
|
|
<ol class="plan">
|
|
<li>Installe ton poste et allume l'ordinateur.</li>
|
|
<li>Ouvre ta session.</li>
|
|
<li>Branche ta clé USB et ouvre ton dossier.</li>
|
|
<li>Démarre le programme d'écriture par le bouton Démarrer.</li>
|
|
<li>Écris les trois phrases dictées.</li>
|
|
<li>Enregistre dans ton dossier, avec un nom correct.</li>
|
|
<li>Quitte le programme, puis retrouve ton fichier et rouvre-le.</li>
|
|
<li>Ferme tout, retire ta clé, éteins par le menu.</li>
|
|
</ol>
|
|
<h3>Les jeux de révision</h3>
|
|
<div id="jeux-p6"></div>
|
|
</section>
|
|
|
|
</main>
|
|
|
|
<script>
|
|
"use strict";
|
|
|
|
/* ================= navigation ================= */
|
|
const nav = document.getElementById("nav");
|
|
nav.addEventListener("click", e => {
|
|
const b = e.target.closest("button[data-cible]"); if (!b) return;
|
|
nav.querySelectorAll("button[data-cible]").forEach(x => x.setAttribute("aria-current", x === b));
|
|
document.querySelectorAll("main > section").forEach(s => s.hidden = (s.id !== b.dataset.cible));
|
|
window.scrollTo(0, 0);
|
|
});
|
|
document.getElementById("btn-projection").addEventListener("click", e => {
|
|
document.body.classList.toggle("projection");
|
|
e.target.textContent = document.body.classList.contains("projection") ? "Taille normale" : "Agrandir";
|
|
});
|
|
|
|
/* ================= utilitaires ================= */
|
|
function melange(t){ for(let i=t.length-1;i>0;i--){const j=Math.floor(Math.random()*(i+1));[t[i],t[j]]=[t[j],t[i]];} return t; }
|
|
function rate(el2){ el2.classList.remove("rate"); void el2.offsetWidth; el2.classList.add("rate"); }
|
|
function el(tag, cls, txt){ const e = document.createElement(tag); if(cls) e.className = cls; if(txt!=null) e.textContent = txt; return e; }
|
|
|
|
function barre(corps, avecBouton){
|
|
const b = el("div","barre");
|
|
let bt = null;
|
|
if (avecBouton){ bt = el("button","action","Recommencer"); bt.type="button"; b.appendChild(bt); }
|
|
const cible = el("span","cible-txt"), score = el("span","score");
|
|
b.append(cible, score); corps.appendChild(b);
|
|
return {bouton:bt, cible, score};
|
|
}
|
|
|
|
/* ================= moteurs ================= */
|
|
|
|
function mOrdre(corps, cfg){
|
|
const {bouton, cible, score} = barre(corps, true);
|
|
const zone = el("div","etapes"); corps.appendChild(zone);
|
|
let place = 0, erreurs = 0;
|
|
function maj(){
|
|
cible.textContent = place < cfg.etapes.length ? "Cherche l'étape numéro " + (place+1) : "Terminé, tout est dans l'ordre";
|
|
score.textContent = "Erreurs " + erreurs;
|
|
}
|
|
function demarrer(){
|
|
place = 0; erreurs = 0; zone.innerHTML = "";
|
|
melange(cfg.etapes.map((t,i)=>({t,i}))).forEach(o => {
|
|
const b = el("button","etape"); b.type="button"; b.dataset.rang = o.i;
|
|
b.innerHTML = '<span class="rang"></span>'; b.insertAdjacentText("beforeend", o.t);
|
|
zone.appendChild(b);
|
|
});
|
|
maj();
|
|
}
|
|
zone.addEventListener("click", e => {
|
|
const b = e.target.closest(".etape"); if (!b || b.classList.contains("placee")) return;
|
|
if (+b.dataset.rang === place){ b.classList.add("placee"); b.querySelector(".rang").textContent = (place+1)+"."; place++; }
|
|
else { erreurs++; rate(b); }
|
|
maj();
|
|
});
|
|
bouton.addEventListener("click", demarrer); demarrer();
|
|
}
|
|
|
|
function mVF(corps, cfg){
|
|
const zone = el("div","vf"); corps.appendChild(zone);
|
|
cfg.items.forEach(it => {
|
|
const l = el("div","ligne");
|
|
l.appendChild(el("span","txt", it.t));
|
|
["Vrai","Faux"].forEach(lib => {
|
|
const b = el("button",null,lib); b.type="button";
|
|
b.addEventListener("click", () => {
|
|
l.querySelectorAll("button").forEach(x => x.classList.remove("choisi"));
|
|
b.classList.add("choisi");
|
|
const juste = (lib === "Vrai") === it.r;
|
|
const v = l.querySelector(".verdict");
|
|
v.className = "verdict " + (juste ? "juste" : "faux");
|
|
v.textContent = (juste ? "Juste. " : "Non. ") + it.p;
|
|
});
|
|
l.appendChild(b);
|
|
});
|
|
l.appendChild(el("span","verdict")); zone.appendChild(l);
|
|
});
|
|
}
|
|
|
|
function mQCM(corps, cfg){
|
|
const zone = el("div","qcm"); corps.appendChild(zone);
|
|
const q = el("p","q"), c = el("div","choix"), r = el("div","retour"), s = el("div","score");
|
|
zone.append(q,c,r,s);
|
|
let i = 0, bons = 0, verrou = false;
|
|
function afficher(){
|
|
if (i >= cfg.items.length){
|
|
q.textContent = "Terminé."; r.textContent = ""; c.innerHTML = "";
|
|
s.textContent = "Résultat : " + bons + " sur " + cfg.items.length;
|
|
const again = el("button","action","Recommencer"); again.type="button";
|
|
again.addEventListener("click", () => { i=0; bons=0; afficher(); });
|
|
c.appendChild(again); return;
|
|
}
|
|
const it = cfg.items[i];
|
|
q.textContent = (i+1) + ". " + it.q;
|
|
r.textContent = ""; r.className = "retour";
|
|
s.textContent = "Question " + (i+1) + " sur " + cfg.items.length + ", " + bons + " juste(s)";
|
|
c.innerHTML = "";
|
|
it.o.forEach((txt,k) => {
|
|
const b = el("button",null,txt); b.type="button";
|
|
b.addEventListener("click", () => {
|
|
if (verrou) return; verrou = true;
|
|
const juste = (k === it.bon);
|
|
b.classList.add(juste ? "bon" : "mauvais");
|
|
if (!juste) c.children[it.bon].classList.add("bon");
|
|
if (juste) bons++;
|
|
r.className = "retour " + (juste ? "juste" : "faux");
|
|
r.textContent = (juste ? "Juste. " : "Non. ") + it.p;
|
|
setTimeout(() => { verrou = false; i++; afficher(); }, 2300);
|
|
});
|
|
c.appendChild(b);
|
|
});
|
|
}
|
|
afficher();
|
|
}
|
|
|
|
function mPaires(corps, cfg){
|
|
const {bouton, cible, score} = barre(corps, true);
|
|
const zone = el("div","paires");
|
|
const cg = el("div","col"), cd = el("div","col");
|
|
zone.append(cg, cd); corps.appendChild(zone);
|
|
let restant = 0, erreurs = 0, choisi = null;
|
|
function maj(){
|
|
cible.textContent = restant > 0 ? "Paires restantes : " + restant : "Terminé, tout est relié";
|
|
score.textContent = "Erreurs " + erreurs;
|
|
}
|
|
function demarrer(){
|
|
restant = cfg.paires.length; erreurs = 0; choisi = null;
|
|
cg.innerHTML = ""; cd.innerHTML = "";
|
|
melange(cfg.paires.map((p,i)=>({t:p[0],i}))).forEach(o => {
|
|
const b = el("button",null,o.t); b.type="button"; b.dataset.i = o.i; b.dataset.cote = "g"; cg.appendChild(b);
|
|
});
|
|
melange(cfg.paires.map((p,i)=>({t:p[1],i}))).forEach(o => {
|
|
const b = el("button",null,o.t); b.type="button"; b.dataset.i = o.i; b.dataset.cote = "d"; cd.appendChild(b);
|
|
});
|
|
maj();
|
|
}
|
|
zone.addEventListener("click", e => {
|
|
const b = e.target.closest("button"); if (!b || b.classList.contains("liee")) return;
|
|
if (!choisi){ choisi = b; b.classList.add("choisi"); return; }
|
|
if (choisi === b){ b.classList.remove("choisi"); choisi = null; return; }
|
|
if (choisi.dataset.cote === b.dataset.cote){ choisi.classList.remove("choisi"); choisi = b; b.classList.add("choisi"); return; }
|
|
if (choisi.dataset.i === b.dataset.i){
|
|
choisi.classList.remove("choisi"); choisi.classList.add("liee"); b.classList.add("liee");
|
|
restant--; choisi = null;
|
|
} else {
|
|
erreurs++; rate(b); rate(choisi); choisi.classList.remove("choisi"); choisi = null;
|
|
}
|
|
maj();
|
|
});
|
|
bouton.addEventListener("click", demarrer); demarrer();
|
|
}
|
|
|
|
function mZones(corps, cfg){
|
|
const {bouton, cible, score} = barre(corps, true);
|
|
const fig = el("figure","schema"); fig.innerHTML = cfg.schema; corps.appendChild(fig);
|
|
let i = 0, bons = 0;
|
|
function maj(){
|
|
score.textContent = "Trouvé " + bons + " sur " + cfg.questions.length;
|
|
cible.textContent = i < cfg.questions.length ? cfg.questions[i].q : "Terminé, tu as tout trouvé";
|
|
}
|
|
function demarrer(){ i = 0; bons = 0; fig.querySelectorAll(".zone").forEach(z => z.classList.remove("trouve")); maj(); }
|
|
fig.addEventListener("click", e => {
|
|
const z = e.target.closest(".zone"); if (!z || i >= cfg.questions.length) return;
|
|
if (z.dataset.id === cfg.questions[i].id){ z.classList.add("trouve"); bons++; i++; maj(); }
|
|
else { cible.textContent = "Non, ça c'est " + (cfg.noms[z.dataset.id] || "autre chose") + ". " + cfg.questions[i].q; }
|
|
});
|
|
bouton.addEventListener("click", demarrer); demarrer();
|
|
}
|
|
|
|
function mTrieur(corps, cfg){
|
|
const {bouton, cible, score} = barre(corps, true);
|
|
const tri = el("div","tri"), reserve = el("div","reserve"), bacs = el("div","bacs");
|
|
tri.append(reserve, bacs); corps.appendChild(tri);
|
|
let restant = 0, erreurs = 0, pris = null, fantome = null, dx = 0, dy = 0;
|
|
function maj(){ cible.textContent = restant > 0 ? "Restant " + restant : "Terminé"; score.textContent = "Erreurs " + erreurs; }
|
|
function demarrer(){
|
|
erreurs = 0; restant = cfg.items.length; bacs.innerHTML = ""; reserve.innerHTML = "";
|
|
cfg.bacs.forEach(b => {
|
|
const d = el("div","bac"); d.dataset.id = b.id;
|
|
d.appendChild(el("span","titre", b.nom)); bacs.appendChild(d);
|
|
});
|
|
melange(cfg.items.slice()).forEach(it => {
|
|
const j = el("div","jeton"); j.dataset.bac = it.bac;
|
|
if (it.glyphe) j.innerHTML = it.glyphe;
|
|
if (it.nom) j.insertAdjacentText("beforeend", it.nom);
|
|
reserve.appendChild(j);
|
|
});
|
|
maj();
|
|
}
|
|
function bacSous(x,y){ const e2 = document.elementFromPoint(x,y); return e2 ? e2.closest(".bac") : null; }
|
|
document.addEventListener("pointerdown", e => {
|
|
const j = e.target.closest(".jeton"); if (!j || !reserve.contains(j)) return;
|
|
e.preventDefault(); pris = j;
|
|
const r = j.getBoundingClientRect(); dx = e.clientX - r.left; dy = e.clientY - r.top;
|
|
fantome = j.cloneNode(true); fantome.classList.add("pris");
|
|
fantome.style.left = r.left+"px"; fantome.style.top = r.top+"px"; fantome.style.width = r.width+"px";
|
|
document.body.appendChild(fantome); j.style.opacity = ".3";
|
|
});
|
|
document.addEventListener("pointermove", e => {
|
|
if (!pris || !reserve.contains(pris)) return;
|
|
fantome.style.left = (e.clientX-dx)+"px"; fantome.style.top = (e.clientY-dy)+"px";
|
|
const b = bacSous(e.clientX, e.clientY);
|
|
bacs.querySelectorAll(".bac").forEach(x => x.classList.toggle("vise", x === b));
|
|
});
|
|
document.addEventListener("pointerup", e => {
|
|
if (!pris) return;
|
|
if (!reserve.contains(pris)){ pris = null; return; }
|
|
const b = bacSous(e.clientX, e.clientY);
|
|
bacs.querySelectorAll(".bac").forEach(x => x.classList.remove("vise"));
|
|
if (fantome){ fantome.remove(); fantome = null; }
|
|
pris.style.opacity = "";
|
|
if (b && b.dataset.id === pris.dataset.bac){ b.appendChild(pris); pris.style.cursor = "default"; restant--; }
|
|
else if (b){ erreurs++; rate(pris); }
|
|
pris = null; maj();
|
|
});
|
|
bouton.addEventListener("click", demarrer); demarrer();
|
|
}
|
|
|
|
function mPions(corps, cfg){
|
|
const b0 = el("div","barre");
|
|
const lab = el("span",null,"Nombres : ");
|
|
const sel = document.createElement("select");
|
|
[10,20].forEach(v => { const o = document.createElement("option"); o.value=v; o.textContent=v; if(v===20)o.selected=true; sel.appendChild(o); });
|
|
lab.appendChild(sel);
|
|
const bt = el("button","action","Commencer"); bt.type="button";
|
|
const cible = el("span","cible-txt","Clique sur Commencer"), score = el("span","score","");
|
|
b0.append(lab, bt, cible, score); corps.appendChild(b0);
|
|
const aire = el("div","aire"); corps.appendChild(aire);
|
|
|
|
function poser(n){
|
|
aire.innerHTML = "";
|
|
const L = aire.clientWidth || 640, H = aire.clientHeight || 350, taille = 56;
|
|
const cols = Math.max(4, Math.floor(Math.sqrt(n * L / H)));
|
|
const lignes = Math.ceil(n / cols), cw = L/cols, ch = H/lignes;
|
|
const cases = melange([...Array(cols*lignes).keys()]).slice(0,n);
|
|
for (let i=0;i<n;i++){
|
|
const c = cases[i], cx = c % cols, cy = Math.floor(c/cols);
|
|
const b = el("button","pion", String(i+1)); b.type="button"; b.dataset.n = i+1;
|
|
const m = 6;
|
|
b.style.left = Math.round(cx*cw + m + Math.random()*Math.max(0, cw-taille-2*m)) + "px";
|
|
b.style.top = Math.round(cy*ch + m + Math.random()*Math.max(0, ch-taille-2*m)) + "px";
|
|
aire.appendChild(b);
|
|
}
|
|
}
|
|
|
|
if (cfg.mode === "clic"){
|
|
let suivant = 0, erreurs = 0, t0 = 0, chrono = null, n = 20;
|
|
const maj = () => score.textContent = "Temps " + (t0 ? Math.round((Date.now()-t0)/1000) : 0) + " s, erreurs " + erreurs;
|
|
function surligne(){
|
|
aire.querySelectorAll(".pion").forEach(p => p.classList.toggle("actif", +p.dataset.n === suivant+1 && !p.classList.contains("fait")));
|
|
cible.textContent = suivant < n ? "Clique sur le " + (suivant+1) : "Terminé";
|
|
}
|
|
bt.addEventListener("click", () => { n = +sel.value; suivant=0; erreurs=0; t0=0; clearInterval(chrono); chrono=null; poser(n); maj(); surligne(); });
|
|
aire.addEventListener("click", e => {
|
|
const p = e.target.closest(".pion"); if (!p || suivant >= n) return;
|
|
if (!t0){ t0 = Date.now(); chrono = setInterval(maj, 1000); }
|
|
if (+p.dataset.n === suivant+1){
|
|
p.classList.add("fait"); p.classList.remove("actif"); suivant++;
|
|
if (suivant === n){ clearInterval(chrono); cible.textContent = "Terminé en " + Math.round((Date.now()-t0)/1000) + " s"; }
|
|
surligne();
|
|
} else { erreurs++; rate(p); }
|
|
maj();
|
|
});
|
|
} else {
|
|
let suivant = 0, vies = 3, n = 20, actif = false;
|
|
function surligne(){
|
|
aire.querySelectorAll(".pion").forEach(p => {
|
|
const k = +p.dataset.n;
|
|
p.classList.toggle("fait", k <= suivant);
|
|
p.classList.toggle("actif", k === suivant+1);
|
|
});
|
|
cible.textContent = actif ? (suivant < n ? "Passe sur le " + (suivant+1) : "Terminé") : "Clique sur Commencer";
|
|
score.textContent = "Vies " + vies;
|
|
}
|
|
bt.addEventListener("click", () => { n = +sel.value; suivant=0; vies=3; actif=true; poser(n); surligne(); });
|
|
aire.addEventListener("pointerover", e => {
|
|
const p = e.target.closest(".pion"); if (!p || !actif) return;
|
|
const k = +p.dataset.n;
|
|
if (k === suivant+1){ suivant++; if (suivant === n){ actif=false; cible.textContent = "Terminé, il te restait " + vies + " vies"; } }
|
|
else if (k > suivant+1){
|
|
vies--; suivant = 0; rate(p);
|
|
if (vies <= 0){ actif=false; surligne(); cible.textContent = "Plus de vies. Recommence."; return; }
|
|
}
|
|
surligne();
|
|
});
|
|
}
|
|
}
|
|
|
|
function mBoites(corps){
|
|
const {bouton, cible, score} = barre(corps, true);
|
|
const zone = el("div","boites"); corps.appendChild(zone);
|
|
let ouvertes = 0, clics = 0;
|
|
function maj(){
|
|
cible.textContent = ouvertes === 12 ? "Les douze boîtes sont ouvertes" : "Boîtes ouvertes " + ouvertes + " sur 12";
|
|
score.textContent = "Clics perdus " + Math.max(0, clics - 2*ouvertes);
|
|
}
|
|
function demarrer(){
|
|
ouvertes = 0; clics = 0; zone.innerHTML = "";
|
|
for (let i=0;i<12;i++){ const d = el("button","boite"); d.type="button"; d.innerHTML = '<span class="forme"></span>'; zone.appendChild(d); }
|
|
maj();
|
|
}
|
|
zone.addEventListener("click", e => { if (e.target.closest(".boite")){ clics++; maj(); } });
|
|
zone.addEventListener("dblclick", e => {
|
|
const b = e.target.closest(".boite");
|
|
if (b && !b.classList.contains("ouverte")){ b.classList.add("ouverte"); ouvertes++; maj(); }
|
|
});
|
|
bouton.addEventListener("click", demarrer); demarrer();
|
|
}
|
|
|
|
function mChemin(corps, cfg){
|
|
const {bouton, cible, score} = barre(corps, true);
|
|
const zone = el("div","chemin"); const fil = el("div","fil"), liste = el("div","liste");
|
|
zone.append(fil, liste); corps.appendChild(zone);
|
|
let mission = 0, erreurs = 0, pile = [];
|
|
function noeud(){ return pile[pile.length-1]; }
|
|
function maj(){
|
|
cible.textContent = mission < cfg.missions.length ? "Trouve le fichier : " + cfg.missions[mission] : "Terminé, tu as trouvé les trois fichiers";
|
|
score.textContent = "Erreurs " + erreurs;
|
|
fil.textContent = pile.map(n => n.nom).join(" > ");
|
|
liste.innerHTML = "";
|
|
if (mission >= cfg.missions.length) return;
|
|
if (pile.length > 1){
|
|
const b = el("button",null,"Revenir en arrière"); b.type="button"; b.dataset.retour="1"; liste.appendChild(b);
|
|
}
|
|
(noeud().enfants || []).forEach(n => {
|
|
const b = el("button", n.enfants ? "dossier" : "fichier", n.nom); b.type="button"; b.dataset.nom = n.nom;
|
|
liste.appendChild(b);
|
|
});
|
|
}
|
|
function demarrer(){ mission = 0; erreurs = 0; pile = [cfg.arbre]; maj(); }
|
|
liste.addEventListener("click", e => {
|
|
const b = e.target.closest("button"); if (!b) return;
|
|
if (b.dataset.retour){ pile.pop(); maj(); return; }
|
|
const n = (noeud().enfants || []).find(x => x.nom === b.dataset.nom);
|
|
if (!n) return;
|
|
if (n.enfants){ pile.push(n); maj(); return; }
|
|
if (n.nom === cfg.missions[mission]){ mission++; pile = [cfg.arbre]; maj(); }
|
|
else { erreurs++; rate(b); }
|
|
});
|
|
bouton.addEventListener("click", demarrer); demarrer();
|
|
}
|
|
|
|
/* ================= montage ================= */
|
|
const MOTEURS = {ordre:mOrdre, vf:mVF, qcm:mQCM, paires:mPaires, zones:mZones,
|
|
trieur:mTrieur, pions:mPions, boites:(c)=>mBoites(c), chemin:mChemin};
|
|
|
|
function monter(idParent, jeux){
|
|
const parent = document.getElementById(idParent);
|
|
jeux.forEach((j, k) => {
|
|
const a = el("div","atelier");
|
|
const h = el("h4"); h.appendChild(el("span","num", "Jeu " + (k+1)));
|
|
h.insertAdjacentText("beforeend", j.titre);
|
|
const corps = el("div","corps");
|
|
if (j.consigne) corps.appendChild(el("p","consigne", j.consigne));
|
|
a.append(h, corps); parent.appendChild(a);
|
|
MOTEURS[j.type](corps, j);
|
|
});
|
|
}
|
|
|
|
/* ================= schémas ================= */
|
|
const SCHEMA_BUREAU = `
|
|
<svg viewBox="0 0 420 300" width="100%" role="img" aria-label="Schéma d'un bureau">
|
|
<rect class="zone" data-id="fond" x="6" y="6" width="408" height="288"/>
|
|
<text x="300" y="150">fond d'écran</text>
|
|
<g class="zone" data-id="icone">
|
|
<rect x="24" y="24" width="42" height="42"/><line x1="34" y1="56" x2="56" y2="56" stroke="#1F3864" stroke-width="2"/>
|
|
</g>
|
|
<g class="zone" data-id="icone2">
|
|
<rect x="24" y="88" width="42" height="42"/><line x1="34" y1="120" x2="56" y2="120" stroke="#1F3864" stroke-width="2"/>
|
|
</g>
|
|
<g class="zone" data-id="corbeille">
|
|
<rect x="24" y="196" width="42" height="46"/>
|
|
<line x1="24" y1="206" x2="66" y2="206" stroke="#1F3864" stroke-width="2"/>
|
|
<line x1="38" y1="216" x2="38" y2="234" stroke="#1F3864" stroke-width="2"/>
|
|
<line x1="52" y1="216" x2="52" y2="234" stroke="#1F3864" stroke-width="2"/>
|
|
</g>
|
|
<rect class="zone" data-id="barre" x="6" y="256" width="408" height="38"/>
|
|
<g class="zone" data-id="demarrer"><rect x="14" y="262" width="28" height="26"/>
|
|
<line x1="20" y1="270" x2="36" y2="270" stroke="#1F3864" stroke-width="2"/>
|
|
<line x1="20" y1="276" x2="36" y2="276" stroke="#1F3864" stroke-width="2"/>
|
|
<line x1="20" y1="282" x2="36" y2="282" stroke="#1F3864" stroke-width="2"/></g>
|
|
<g class="zone" data-id="horloge"><rect x="340" y="262" width="66" height="26"/></g>
|
|
<text x="348" y="279">10:45</text>
|
|
</svg>`;
|
|
|
|
const SCHEMA_UC = `
|
|
<svg viewBox="0 0 420 520" width="100%" role="img" aria-label="Schéma de l'intérieur d'une unité centrale">
|
|
<rect x="10" y="10" width="400" height="500" fill="#F4F2EC" stroke="#1F3864" stroke-width="3"/>
|
|
<rect class="zone" data-id="carte" x="40" y="140" width="345" height="345" style="fill:#EDEBE4"/>
|
|
<text x="52" y="160">carte mère</text>
|
|
<rect class="zone" data-id="alim" x="248" y="32" width="137" height="82"/>
|
|
<text x="262" y="78">alimentation</text>
|
|
<g class="zone" data-id="ventb">
|
|
<circle cx="120" cy="73" r="46"/>
|
|
<line x1="120" y1="27" x2="120" y2="119" stroke="#1F3864" stroke-width="2"/>
|
|
<line x1="74" y1="73" x2="166" y2="73" stroke="#1F3864" stroke-width="2"/>
|
|
</g>
|
|
<g class="zone" data-id="proc">
|
|
<rect x="150" y="180" width="130" height="130"/>
|
|
<circle cx="215" cy="245" r="52" fill="none" stroke="#1F3864" stroke-width="2"/>
|
|
<circle cx="215" cy="245" r="12" fill="#1F3864"/>
|
|
</g>
|
|
<g class="zone" data-id="memoire">
|
|
<rect x="305" y="170" width="16" height="150"/>
|
|
<rect x="329" y="170" width="16" height="150"/>
|
|
<rect x="353" y="170" width="16" height="150"/>
|
|
</g>
|
|
<rect class="zone" data-id="disque" x="60" y="380" width="150" height="80"/>
|
|
<text x="74" y="426">disque</text>
|
|
</svg>`;
|
|
|
|
const SCHEMA_FENETRE = `
|
|
<svg viewBox="0 0 460 300" width="100%" role="img" aria-label="Schéma d'une fenêtre">
|
|
<rect class="zone" data-id="bord" x="6" y="6" width="448" height="288"/>
|
|
<rect class="zone" data-id="titre" x="18" y="18" width="424" height="34"/>
|
|
<text x="28" y="40">Mon document</text>
|
|
<g class="zone" data-id="reduire"><rect x="330" y="20" width="34" height="30"/>
|
|
<line x1="339" y1="42" x2="355" y2="42" stroke="#1F3864" stroke-width="2"/></g>
|
|
<g class="zone" data-id="agrandir"><rect x="366" y="20" width="34" height="30"/>
|
|
<rect x="376" y="28" width="14" height="14" fill="none" stroke="#1F3864" stroke-width="2"/></g>
|
|
<g class="zone" data-id="fermer"><rect x="402" y="20" width="34" height="30"/>
|
|
<line x1="412" y1="28" x2="426" y2="42" stroke="#1F3864" stroke-width="2"/>
|
|
<line x1="426" y1="28" x2="412" y2="42" stroke="#1F3864" stroke-width="2"/></g>
|
|
<rect class="zone" data-id="travail" x="18" y="60" width="424" height="222"/>
|
|
<text x="30" y="86">zone de travail</text>
|
|
</svg>`;
|
|
|
|
const rond = '<svg class="glyphe" viewBox="0 0 40 40"><circle cx="20" cy="20" r="17" fill="#1F3864"/></svg>';
|
|
const carre = '<svg class="glyphe" viewBox="0 0 40 40"><rect x="4" y="4" width="32" height="32" fill="#2E7D4F"/></svg>';
|
|
const triangle = '<svg class="glyphe" viewBox="0 0 40 40"><polygon points="20,3 37,36 3,36" fill="#C0392B"/></svg>';
|
|
|
|
const ES = [
|
|
{bac:"e",nom:"le clavier"},{bac:"e",nom:"la souris"},{bac:"e",nom:"la webcam"},
|
|
{bac:"e",nom:"le micro"},{bac:"e",nom:"le scanner"},{bac:"e",nom:"la manette"},
|
|
{bac:"s",nom:"l'écran"},{bac:"s",nom:"le casque"},{bac:"s",nom:"l'imprimante"},
|
|
{bac:"s",nom:"les haut-parleurs"},{bac:"s",nom:"le vidéoprojecteur"},{bac:"s",nom:"l'écran d'un portable"}
|
|
];
|
|
|
|
/* ================= période 1 ================= */
|
|
monter("jeux-p1", [
|
|
{type:"ordre", titre:"Les étapes de l'allumage",
|
|
consigne:"Clique sur les étapes dans le bon ordre. Si tu te trompes, l'étape refuse et tu peux réessayer.",
|
|
etapes:["J'allume l'unité centrale.","J'allume l'écran.","J'attends que la machine démarre.",
|
|
"Je tape mon identifiant et mon mot de passe.","Le bureau apparaît à l'écran."]},
|
|
{type:"ordre", titre:"Les étapes pour éteindre",
|
|
consigne:"Trois étapes, toujours les mêmes, toutes les semaines.",
|
|
etapes:["Je clique sur le bouton Démarrer.","Je clique sur Alimentation.","Je clique sur Arrêter."]},
|
|
{type:"zones", titre:"Reconnaître le bureau", schema:SCHEMA_BUREAU,
|
|
consigne:"Clique sur l'élément demandé, sur le schéma.",
|
|
noms:{fond:"le fond d'écran", icone:"une icône", icone2:"une icône", corbeille:"la corbeille",
|
|
barre:"la barre des tâches", demarrer:"le bouton Démarrer", horloge:"l'horloge"},
|
|
questions:[{id:"demarrer",q:"Clique sur le bouton qui ouvre la liste des programmes."},
|
|
{id:"corbeille",q:"Clique sur l'endroit où vont les fichiers supprimés."},
|
|
{id:"barre",q:"Clique sur la rangée qui montre ce qui est ouvert."},
|
|
{id:"horloge",q:"Clique sur ce qui donne l'heure et la date."},
|
|
{id:"icone",q:"Clique sur une icône."},
|
|
{id:"fond",q:"Clique sur l'image qui ne sert qu'à décorer."}]},
|
|
{type:"paires", titre:"Les mots du bureau",
|
|
consigne:"Clique sur un mot à gauche, puis sur sa définition à droite.",
|
|
paires:[["Session","Ta place à toi sur un ordinateur partagé"],
|
|
["Identifiant","Ton nom pour la machine"],
|
|
["Mot de passe","La preuve que c'est bien toi"],
|
|
["Bureau","Ce qui s'affiche quand ta session est ouverte"],
|
|
["Icône","Un petit dessin qui ouvre quelque chose"],
|
|
["Corbeille","L'endroit où vont les fichiers supprimés"],
|
|
["Verrouiller","Protéger l'écran sans fermer sa session"],
|
|
["Arrêter","Éteindre proprement, par le menu"]]},
|
|
{type:"vf", titre:"Vrai ou faux", items:[
|
|
{t:"L'écran est la partie qui fait les calculs.", r:false, p:"C'est l'unité centrale qui calcule. L'écran ne fait que montrer."},
|
|
{t:"Je peux prêter mon mot de passe à un ami.", r:false, p:"Tout ce qui serait fait sur ta session serait fait à ton nom."},
|
|
{t:"Éteindre avec le bouton est la meilleure façon de faire.", r:false, p:"La machine n'a pas le temps de fermer ses programmes. On passe par le menu."},
|
|
{t:"Un démarrage lent veut toujours dire que l'ordinateur est en panne.", r:false, p:"La machine va chercher ce dont elle a besoin. On attend."},
|
|
{t:"Une tablette est un ordinateur.", r:true, p:"Le doigt remplace la souris, mais elle travaille de la même façon."},
|
|
{t:"Un fichier mis à la corbeille est perdu pour toujours.", r:false, p:"Tant que la corbeille n'est pas vidée, on peut le récupérer."}]},
|
|
{type:"qcm", titre:"Huit questions", items:[
|
|
{q:"Quel bouton allumes-tu en premier ?", o:["Celui de l'écran","Celui de l'unité centrale","N'importe lequel"], bon:1,
|
|
p:"C'est l'unité centrale qui travaille. L'écran seul ne sert à rien."},
|
|
{q:"À quoi sert l'identifiant ?", o:["À dire qui arrive","À prouver que c'est toi","À décorer"], bon:0,
|
|
p:"C'est ton nom pour la machine. Le mot de passe, lui, prouve que c'est toi."},
|
|
{q:"Tu t'absentes deux minutes. Que fais-tu ?", o:["J'éteins","Je verrouille","Je ferme ma session"], bon:1,
|
|
p:"Verrouiller protège l'écran et garde ton travail ouvert."},
|
|
{q:"Le cours est fini et le local ferme. Que fais-tu ?", o:["Je verrouille","Je ferme ma session","J'éteins par le menu"], bon:2,
|
|
p:"Personne ne vient après. On arrête la machine proprement."},
|
|
{q:"Où se trouve le bouton Démarrer ?", o:["Dans la barre des tâches","Sur le fond d'écran","Dans la corbeille"], bon:0,
|
|
p:"Il est dans la rangée du bas, avec l'horloge et les programmes ouverts."},
|
|
{q:"Le fond d'écran sert à…", o:["ouvrir des programmes","décorer","ranger des fichiers"], bon:1,
|
|
p:"C'est une image, rien de plus. Les icônes, elles, ouvrent quelque chose."},
|
|
{q:"La machine met du temps à démarrer. Que fais-tu ?", o:["J'appuie encore sur le bouton","J'attends","J'éteins et je rallume"], bon:1,
|
|
p:"Elle va chercher ce dont elle a besoin. Rappuyer risque de tout couper."},
|
|
{q:"Que veut dire ouvrir sa session ?", o:["Allumer l'écran","Entrer à sa place sur la machine","Ouvrir un programme"], bon:1,
|
|
p:"La session, c'est ta place à toi sur un ordinateur partagé."}]}
|
|
]);
|
|
|
|
/* ================= période 2 ================= */
|
|
monter("jeux-p2", [
|
|
{type:"pions", mode:"clic", titre:"Les nombres dans l'ordre",
|
|
consigne:"Clique sur 1, puis sur 2, puis sur 3, et ainsi de suite."},
|
|
{type:"pions", mode:"survol", titre:"Le parcours",
|
|
consigne:"Passe la souris sur les nombres dans l'ordre, sans jamais toucher un nombre qui n'est pas le tien. Tu ne cliques pas. Tu as trois vies."},
|
|
{type:"boites", titre:"Les boîtes à double-clic",
|
|
consigne:"Ouvre les douze boîtes. Un seul clic ne les ouvre pas : il en faut deux, rapides, sans bouger la souris."},
|
|
{type:"trieur", titre:"Le tri par glisser-déposer",
|
|
consigne:"Prends une forme, garde le bouton appuyé, amène-la dans le bon bac, et lâche seulement là.",
|
|
bacs:[{id:"rond",nom:"Les ronds"},{id:"carre",nom:"Les carrés"},{id:"triangle",nom:"Les triangles"}],
|
|
items:[{bac:"rond",glyphe:rond},{bac:"rond",glyphe:rond},{bac:"rond",glyphe:rond},
|
|
{bac:"carre",glyphe:carre},{bac:"carre",glyphe:carre},{bac:"carre",glyphe:carre},
|
|
{bac:"triangle",glyphe:triangle},{bac:"triangle",glyphe:triangle},{bac:"triangle",glyphe:triangle}]},
|
|
{type:"paires", titre:"La forme du curseur",
|
|
consigne:"Relie chaque forme du curseur à ce qu'elle t'annonce.",
|
|
paires:[["La flèche","Tout est normal, je peux cliquer"],
|
|
["La barre verticale","Je suis sur du texte"],
|
|
["La main","Je suis sur un lien"],
|
|
["Le rond qui tourne","La machine travaille, j'attends"],
|
|
["La double flèche","Je peux changer la taille de la fenêtre"]]},
|
|
{type:"paires", titre:"Les mots de la souris",
|
|
paires:[["Curseur","La flèche qui suit ta main à l'écran"],
|
|
["Capteur","Le petit œil sous la souris"],
|
|
["Sélectionner","Choisir d'un seul clic, sans ouvrir"],
|
|
["Double-clic","Deux clics rapides, sans bouger : cela ouvre"],
|
|
["Menu","La liste des choses possibles, ouverte par le clic droit"],
|
|
["Renommer","Changer le nom sans changer le contenu"],
|
|
["Trackpad","La surface plate qui remplace la souris sur un portable"]]},
|
|
{type:"qcm", titre:"Le menu du clic droit", items:[
|
|
{q:"Le fichier s'appelle Document1 et tu veux lui donner un vrai nom.", o:["Renommer","Supprimer","Copier"], bon:0,
|
|
p:"Renommer change le nom sans toucher à ce qu'il y a dedans."},
|
|
{q:"Tu veux mettre ce fichier à la corbeille.", o:["Renommer","Supprimer","Coller"], bon:1,
|
|
p:"Supprimer l'envoie à la corbeille. Il n'est pas encore perdu."},
|
|
{q:"Tu veux le même fichier dans un deuxième dossier, sans perdre celui-ci.", o:["Supprimer","Renommer","Copier, puis coller"], bon:2,
|
|
p:"Copier prend une copie. L'original reste en place."},
|
|
{q:"Tu as ouvert un menu par erreur. Comment le refermer ?", o:["Avec la touche Échap","En éteignant","En cliquant vingt fois"], bon:0,
|
|
p:"Échap referme le menu sans rien déclencher."},
|
|
{q:"Le menu du clic droit…", o:["fait l'action tout seul","propose une liste de choix","ouvre le fichier"], bon:1,
|
|
p:"Il propose. C'est toi qui choisis dans la liste."}]},
|
|
{type:"vf", titre:"Vrai ou faux", items:[
|
|
{t:"Le curseur bouge même quand la souris est soulevée.", r:false, p:"Le capteur ne lit plus rien. Elle glisse, elle ne se soulève pas."},
|
|
{t:"La touche Échap referme un menu.", r:true, p:"Sans rien déclencher."},
|
|
{t:"Pour réussir un double-clic, il faut surtout cliquer très fort.", r:false, p:"Il faut surtout ne pas bouger la souris entre les deux clics."},
|
|
{t:"Pour déplacer un fichier, je garde le bouton appuyé pendant tout le trajet.", r:true, p:"Si tu lâches en route, l'objet reste en route."},
|
|
{t:"Copier un fichier fait disparaître l'original.", r:false, p:"L'original reste en place. C'est supprimer qui l'enlève."},
|
|
{t:"La molette sert à cliquer.", r:false, p:"Elle fait défiler la page."}]},
|
|
{type:"qcm", titre:"Huit questions", items:[
|
|
{q:"Un seul clic gauche sur un fichier, que fait-il ?", o:["Il l'ouvre","Il le choisit sans l'ouvrir","Il le supprime"], bon:1,
|
|
p:"Un clic choisit. Deux clics ouvrent."},
|
|
{q:"Qu'y a-t-il sous la souris ?", o:["Un capteur qui lit la surface","Une pile","Un aimant"], bon:0,
|
|
p:"C'est lui qui voit la surface défiler."},
|
|
{q:"Le curseur devient une barre verticale. Où es-tu ?", o:["Sur du texte","Sur un lien","Sur un bord de fenêtre"], bon:0,
|
|
p:"Si tu cliques, tu poses le point de départ pour écrire."},
|
|
{q:"Le curseur devient un rond qui tourne. Que fais-tu ?", o:["Je clique plus vite","J'attends","J'éteins"], bon:1,
|
|
p:"La machine travaille. Chaque clic s'ajoute à la file d'attente."},
|
|
{q:"Tu veux ouvrir un dossier. Quel geste ?", o:["Un clic gauche","Un double-clic","Un clic droit"], bon:1,
|
|
p:"Le double-clic ouvre."},
|
|
{q:"À quoi sert la molette ?", o:["À faire défiler la page","À sélectionner","À fermer une fenêtre"], bon:0,
|
|
p:"Elle fait monter et descendre la page."},
|
|
{q:"Sur un portable, qu'est-ce qui remplace la souris ?", o:["Le trackpad","L'écran","Le clavier"], bon:0,
|
|
p:"Les gestes sont exactement les mêmes."},
|
|
{q:"Tu lâches le bouton au milieu d'un déplacement. Que se passe-t-il ?", o:["Le fichier revient à sa place","Le fichier reste là où tu as lâché","Le fichier est supprimé"], bon:1,
|
|
p:"Il faut garder appuyé jusqu'à destination. C'est réversible, tu peux recommencer."}]}
|
|
]);
|
|
|
|
/* ================= période 3 ================= */
|
|
monter("jeux-p3", [
|
|
{type:"trieur", titre:"Entrée ou sortie",
|
|
consigne:"Une entrée va de toi vers l'ordinateur. Une sortie va de l'ordinateur vers toi.",
|
|
bacs:[{id:"e",nom:"Entrée"},{id:"s",nom:"Sortie"}], items:ES},
|
|
{type:"ordre", titre:"Les trois temps",
|
|
consigne:"Tu appuies sur la touche A du clavier. Que se passe-t-il, et dans quel ordre ?",
|
|
etapes:["L'ordinateur reçoit le signal de la touche.",
|
|
"L'ordinateur transforme ce signal en lettre.",
|
|
"L'ordinateur renvoie le résultat : le A s'affiche."]},
|
|
{type:"zones", titre:"Dans l'unité centrale", schema:SCHEMA_UC,
|
|
consigne:"Clique sur la pièce demandée. Attention, le processeur est caché sous son ventilateur.",
|
|
noms:{carte:"la carte mère", alim:"l'alimentation", ventb:"le ventilateur du boîtier",
|
|
proc:"l'endroit du processeur", memoire:"les barrettes de mémoire", disque:"le disque"},
|
|
questions:[{id:"proc",q:"Clique sur l'endroit où se trouve le processeur."},
|
|
{id:"memoire",q:"Clique sur les barrettes de mémoire vive."},
|
|
{id:"disque",q:"Clique sur la pièce qui garde ce que tu as enregistré."},
|
|
{id:"alim",q:"Clique sur la pièce qui distribue le courant."},
|
|
{id:"ventb",q:"Clique sur ce qui fait le bruit de l'ordinateur."},
|
|
{id:"carte",q:"Clique sur la plaque qui relie toutes les pièces."}]},
|
|
{type:"paires", titre:"Chaque pièce et son rôle",
|
|
paires:[["Le processeur","Calcule"],
|
|
["La mémoire vive","Retient pendant le travail, oublie à l'extinction"],
|
|
["Le disque","Garde ce qui est enregistré, même éteint"],
|
|
["Le ventilateur","Refroidit la machine"],
|
|
["La carte mère","Relie toutes les pièces entre elles"],
|
|
["L'alimentation","Distribue le courant aux autres pièces"]]},
|
|
{type:"paires", titre:"Chaque prise et son usage",
|
|
paires:[["USB","Une clé, une souris, une imprimante"],
|
|
["Jack","Un casque, des haut-parleurs"],
|
|
["HDMI","Un écran, un vidéoprojecteur"],
|
|
["Réseau","Un câble internet"]]},
|
|
{type:"vf", titre:"Vrai ou faux", items:[
|
|
{t:"L'unité centrale est un appareil d'entrée.", r:false, p:"Elle n'est ni entrée ni sortie. Elle est au milieu, c'est elle qui transforme."},
|
|
{t:"Le micro envoie un son à l'ordinateur.", r:true, p:"C'est une entrée, comme le clavier et la souris."},
|
|
{t:"Sur un portable, il n'y a pas d'unité centrale.", r:false, p:"Il y en a une, mais elle est dans la même coque que le clavier."},
|
|
{t:"Pour débrancher un casque, je tire sur le câble.", r:false, p:"On tire sur la fiche. Le câble finit par lâcher."},
|
|
{t:"Un écran tactile est à la fois une entrée et une sortie.", r:true, p:"Il montre, et il envoie l'endroit que tu touches."},
|
|
{t:"Le processeur est bien visible quand on ouvre la boîte.", r:false, p:"Il est caché sous un gros ventilateur."},
|
|
{t:"La mémoire vive garde ton travail après l'extinction.", r:false, p:"Elle oublie tout. C'est le disque qui garde."},
|
|
{t:"Le scanner est un appareil d'entrée.", r:true, p:"Il transforme une feuille en image et l'envoie à la machine."}]},
|
|
{type:"qcm", titre:"Dix questions", items:[
|
|
{q:"Dans quel ordre l'ordinateur travaille-t-il ?", o:["Il renvoie, il reçoit, il transforme","Il reçoit, il transforme, il renvoie","Il transforme, il reçoit, il renvoie"], bon:1,
|
|
p:"Il ne peut pas renvoyer avant d'avoir reçu."},
|
|
{q:"Le mot périphérique veut dire…", o:["au centre","autour","en dessous"], bon:1,
|
|
p:"Ce sont les appareils branchés autour de l'unité centrale."},
|
|
{q:"L'imprimante est un appareil…", o:["d'entrée","de sortie","ni l'un ni l'autre"], bon:1,
|
|
p:"C'est la machine qui te donne une feuille."},
|
|
{q:"La manette de jeu est un appareil…", o:["d'entrée","de sortie","ni l'un ni l'autre"], bon:0,
|
|
p:"Elle envoie tes ordres à la machine."},
|
|
{q:"Quelle pièce calcule ?", o:["Le disque","Le processeur","L'alimentation"], bon:1,
|
|
p:"C'est la pièce qui travaille le plus, et qui chauffe le plus."},
|
|
{q:"Quelle mémoire oublie tout quand on éteint ?", o:["Le disque","La mémoire vive","La clé USB"], bon:1,
|
|
p:"La mémoire vive retient pendant, le disque garde après."},
|
|
{q:"Où branche-t-on une clé USB ?", o:["Dans la prise jack","Dans la prise rectangulaire USB","Dans la prise réseau"], bon:1,
|
|
p:"Elle se branche dans un sens. Si ça résiste, on retourne, on ne force pas."},
|
|
{q:"Le casque avec micro est…", o:["seulement une entrée","seulement une sortie","les deux à la fois"], bon:2,
|
|
p:"L'écouteur est une sortie, le micro posé dessus est une entrée."},
|
|
{q:"À quoi sert le ventilateur ?", o:["À faire du bruit","À refroidir","À calculer"], bon:1,
|
|
p:"Le bruit n'est qu'une conséquence."},
|
|
{q:"Tous les câbles arrivent à l'unité centrale. Est-ce une entrée ?", o:["Oui","Non"], bon:1,
|
|
p:"L'entrée, c'est ce qui est au bout du câble, dans ta main."}]}
|
|
]);
|
|
|
|
/* ================= période 4 ================= */
|
|
monter("jeux-p4", [
|
|
{type:"zones", titre:"Les parties de la fenêtre", schema:SCHEMA_FENETRE,
|
|
consigne:"Clique sur la partie demandée.",
|
|
noms:{bord:"le bord de la fenêtre", titre:"la barre de titre", travail:"la zone de travail",
|
|
reduire:"le bouton qui réduit", agrandir:"le bouton qui agrandit", fermer:"le bouton qui ferme"},
|
|
questions:[{id:"fermer",q:"Clique sur le bouton qui arrête le programme pour de bon."},
|
|
{id:"reduire",q:"Clique sur le bouton qui cache la fenêtre sans arrêter le programme."},
|
|
{id:"agrandir",q:"Clique sur le bouton qui met la fenêtre sur tout l'écran."},
|
|
{id:"titre",q:"Clique sur la partie qui sert à déplacer la fenêtre."},
|
|
{id:"travail",q:"Clique sur la partie où tu écris."},
|
|
{id:"bord",q:"Clique sur ce qui sert à changer la taille de la fenêtre."}]},
|
|
{type:"paires", titre:"Chaque partie et son rôle",
|
|
paires:[["La barre de titre","Donne le nom du document et sert à déplacer"],
|
|
["La zone de travail","L'endroit où j'écris"],
|
|
["Les bords","Servent à changer la taille"],
|
|
["Les trois boutons","Arrêtent, cachent ou agrandissent"],
|
|
["La barre des tâches","Montre tout ce qui est ouvert"]]},
|
|
{type:"paires", titre:"Chaque programme et son métier",
|
|
paires:[["Traitement de texte","Écrire et mettre en page"],
|
|
["Programme de dessin","Dessiner et retoucher des images"],
|
|
["Navigateur","Aller sur internet"],
|
|
["Tableur","Faire des calculs dans un tableau"]]},
|
|
{type:"paires", titre:"Les mots des programmes",
|
|
paires:[["Programme","Un outil installé qui fait un métier précis"],
|
|
["Fenêtre","Le cadre dans lequel un programme s'affiche"],
|
|
["Réduire","Cacher la fenêtre sans arrêter le programme"],
|
|
["Quitter","Arrêter le programme pour de bon"],
|
|
["Basculer","Passer d'un programme ouvert à un autre"],
|
|
["Barre des tâches","La rangée du bas, qui montre ce qui est ouvert"]]},
|
|
{type:"ordre", titre:"Ouvrir, travailler, quitter",
|
|
etapes:["Je clique sur le bouton Démarrer.","Je choisis le programme dans la liste.",
|
|
"Je travaille dans la fenêtre.","Je quitte le programme par la croix.",
|
|
"Je vérifie dans la barre des tâches qu'il ne reste rien."]},
|
|
{type:"vf", titre:"Vrai ou faux", items:[
|
|
{t:"Réduire une fenêtre arrête le programme.", r:false, p:"Le programme continue de tourner, dans la barre du bas."},
|
|
{t:"Je peux avoir plusieurs programmes ouverts en même temps.", r:true, p:"Comme plusieurs feuilles posées sur une table."},
|
|
{t:"La barre des tâches montre ce qui est ouvert.", r:true, p:"C'est là que tu vérifies en fin d'heure."},
|
|
{t:"Si un programme met du temps à s'ouvrir, je double-clique encore.", r:false, p:"Tu en ouvres un de plus à chaque fois, et la machine ralentit."},
|
|
{t:"On peut déplacer une fenêtre en glissant sur sa barre de titre.", r:true, p:"C'est à ça qu'elle sert, en plus de donner le nom du document."},
|
|
{t:"Un programme qui ne répond plus se règle en cliquant très vite.", r:false, p:"Chaque clic s'ajoute à la file d'attente. On attend, puis on appelle le professeur."},
|
|
{t:"Un traitement de texte sert à retoucher des photos.", r:false, p:"Chaque programme fait son métier. Aucun ne fait tout."}]},
|
|
{type:"qcm", titre:"Dix questions", items:[
|
|
{q:"Combien de chemins pour démarrer un programme ?", o:["Un seul","Trois : l'icône, le menu Démarrer, la recherche","Deux : l'icône et la corbeille"], bon:1,
|
|
p:"Le menu Démarrer est le plus sûr : tout y est."},
|
|
{q:"Le bouton en forme de trait…", o:["ferme","réduit","agrandit"], bon:1,
|
|
p:"Il cache la fenêtre, le programme tourne encore."},
|
|
{q:"Le bouton en forme de croix…", o:["ferme","réduit","agrandit"], bon:0,
|
|
p:"Il arrête le programme pour de bon."},
|
|
{q:"Tu as fini ton travail. Que fais-tu de la fenêtre ?", o:["Je la réduis","Je la quitte par la croix","Je l'agrandis"], bon:1,
|
|
p:"Réduire laisserait le programme tourner pour rien."},
|
|
{q:"Comment sait-on qu'un programme est encore ouvert ?", o:["Sa marque est dans la barre des tâches","Il n'y a pas de moyen","L'écran clignote"], bon:0,
|
|
p:"Chaque programme ouvert y laisse une marque sous son icône."},
|
|
{q:"Quinze programmes réduits, que se passe-t-il ?", o:["Rien du tout","L'ordinateur devient lent","L'écran s'éteint"], bon:1,
|
|
p:"Chacun occupe encore une partie de la mémoire vive."},
|
|
{q:"Quel raccourci fait passer d'un programme à l'autre ?", o:["Ctrl et S","Alt et Tabulation","Échap"], bon:1,
|
|
p:"La barre des tâches fait la même chose, à la souris."},
|
|
{q:"Comment change-t-on la taille d'une fenêtre ?", o:["En glissant sur un bord","En cliquant au milieu","Avec la molette"], bon:0,
|
|
p:"Le curseur devient une double flèche pour te prévenir."},
|
|
{q:"La fenêtre est pâle et rien ne répond. Que fais-tu ?", o:["Je clique quinze fois","J'attends une minute","Je débranche"], bon:1,
|
|
p:"Si rien ne revient, tu appelles le professeur. Tu ne redémarres pas seul."},
|
|
{q:"Programme, logiciel, application, ce sont…", o:["trois choses différentes","trois mots pour la même chose","trois marques"], bon:1,
|
|
p:"Un outil installé qui sert à faire quelque chose de précis."}]}
|
|
]);
|
|
|
|
/* ================= période 5 ================= */
|
|
monter("jeux-p5", [
|
|
{type:"qcm", titre:"Le bon nom de fichier", items:[
|
|
{q:"Quel nom est le meilleur ?", o:["Document1","horaire-dupont","aaaa"], bon:1,
|
|
p:"Il dit ce que c'est et à qui c'est, sans avoir besoin de l'ouvrir."},
|
|
{q:"Quel nom est le meilleur ?", o:["mon travail à moi","truc2","fiche-identite-morgane"], bon:2,
|
|
p:"Pas d'espace, pas d'accent, et on sait tout de suite ce que c'est."},
|
|
{q:"Pourquoi éviter les espaces dans un nom de fichier ?", o:["Parce que c'est interdit","Parce que selon les machines ça pose parfois problème","Parce que c'est plus long à taper"], bon:1,
|
|
p:"Un tiret remplace très bien un espace."},
|
|
{q:"Où enregistres-tu ton travail pour ce cours ?", o:["Sur le bureau du poste","Dans ma clé USB","N'importe où"], bon:1,
|
|
p:"La clé est à toi et tu la reprends. Le poste est nettoyé."},
|
|
{q:"Pourquoi le bureau du poste est-il un mauvais endroit ?", o:["Il est trop petit","Les postes sont nettoyés et tu changes de place","C'est interdit"], bon:1,
|
|
p:"Tu ne travailleras pas forcément sur le même poste la semaine prochaine."},
|
|
{q:"Que fait le raccourci Ctrl et S ?", o:["Il ferme le programme","Il enregistre sans fermer","Il imprime"], bon:1,
|
|
p:"À faire toutes les quelques minutes, par réflexe."}]},
|
|
{type:"ordre", titre:"Les étapes de l'enregistrement",
|
|
consigne:"Tu viens d'écrire un texte. Que fais-tu, et dans quel ordre ?",
|
|
etapes:["J'ouvre le programme et j'écris mon texte.","Je clique sur Enregistrer.",
|
|
"Je choisis l'endroit : ma clé USB, dans mon dossier.","Je donne un nom qui veut dire quelque chose.",
|
|
"Je ferme le programme.","Je retire ma clé, une fois l'enregistrement terminé."]},
|
|
{type:"chemin", titre:"Retrouver le fichier",
|
|
consigne:"Ouvre les dossiers l'un après l'autre pour arriver au fichier demandé. Tu peux revenir en arrière.",
|
|
missions:["gateau-chocolat.docx","horaire-morgane.docx","page-garde-francais.docx"],
|
|
arbre:{nom:"Clé USB", enfants:[
|
|
{nom:"morgane", enfants:[
|
|
{nom:"recette", enfants:[{nom:"gateau-chocolat.docx"},{nom:"photo-gateau.jpg"}]},
|
|
{nom:"horaire", enfants:[{nom:"horaire-morgane.docx"}]},
|
|
{nom:"page-de-garde", enfants:[{nom:"page-garde-francais.docx"},{nom:"page-garde-maths.docx"}]}
|
|
]},
|
|
{nom:"photos", enfants:[{nom:"vacances.jpg"},{nom:"chien.jpg"}]},
|
|
{nom:"lisezmoi.pdf"}
|
|
]}},
|
|
{type:"paires", titre:"La fin du nom et le type de fichier",
|
|
paires:[[".docx","Un document écrit"],
|
|
[".jpg","Une image ou une photo"],
|
|
[".mp3","Un son, une musique"],
|
|
[".mp4","Une vidéo"],
|
|
[".pdf","Un document à lire, qu'on ne modifie pas"],
|
|
[".exe","Un programme"]]},
|
|
{type:"paires", titre:"Les mots de l'enregistrement",
|
|
paires:[["Fichier","Un travail rangé quelque part, avec un nom"],
|
|
["Dossier","Une boîte qui contient des fichiers"],
|
|
["Chemin","La liste des boîtes à ouvrir pour arriver au fichier"],
|
|
["Enregistrer","Faire passer son travail dans un endroit qui garde"],
|
|
["Enregistrer sous","Faire une deuxième version, ailleurs ou sous un autre nom"],
|
|
["Mémoire vive","La mémoire rapide qui s'efface quand on éteint"]]},
|
|
{type:"vf", titre:"Vrai ou faux", items:[
|
|
{t:"Un travail non enregistré est perdu quand on éteint.", r:true, p:"La mémoire vive s'efface. Seul l'enregistrement garde."},
|
|
{t:"Le bureau du poste est le meilleur endroit pour garder son travail.", r:false, p:"Les postes sont nettoyés et tu changes de place."},
|
|
{t:"Ctrl et S enregistrent sans fermer le programme.", r:true, p:"En une seconde. À faire souvent."},
|
|
{t:"Je peux retirer ma clé pendant qu'elle enregistre.", r:false, p:"Le fichier peut devenir illisible."},
|
|
{t:"Enregistrer sous fait une deuxième version du fichier.", r:true, p:"L'ancienne reste en place."},
|
|
{t:"Un fichier qui finit par .exe est une image.", r:false, p:"C'est un programme. On n'ouvre jamais un .exe reçu d'un inconnu."},
|
|
{t:"Un dossier peut contenir d'autres dossiers.", r:true, p:"Comme des boîtes dans une boîte."}]},
|
|
{type:"qcm", titre:"Dix questions", items:[
|
|
{q:"Pendant que tu écris, ton texte est…", o:["sur le disque","dans la mémoire vive","sur la clé"], bon:1,
|
|
p:"Et la mémoire vive oublie tout quand on éteint."},
|
|
{q:"Enregistrer, c'est…", o:["imprimer","faire passer son travail dans un endroit qui garde","fermer le programme"], bon:1,
|
|
p:"De la mémoire qui oublie vers l'endroit qui garde."},
|
|
{q:"Un fichier, c'est…", o:["une boîte","un travail rangé avec un nom","un programme"], bon:1,
|
|
p:"La boîte, c'est le dossier."},
|
|
{q:"Le chemin d'un fichier, c'est…", o:["son nom","la liste des boîtes à ouvrir pour y arriver","sa taille"], bon:1,
|
|
p:"On l'écrit de la plus grande boîte à la plus petite."},
|
|
{q:"Dans Clé USB puis morgane puis recette puis gateau.docx, où est le fichier ?", o:["Dans le dossier morgane","Dans le dossier recette","Sur le bureau"], bon:1,
|
|
p:"Le dossier recette est lui-même dans le dossier morgane."},
|
|
{q:"Tu veux garder l'ancienne version et en faire une nouvelle. Tu choisis…", o:["Enregistrer","Enregistrer sous","Imprimer"], bon:1,
|
|
p:"Enregistrer sous fait une deuxième version."},
|
|
{q:"Que dit la fin du nom d'un fichier ?", o:["Sa taille","De quelle sorte de fichier il s'agit","Qui l'a écrit"], bon:1,
|
|
p:"Et donc quel programme saura l'ouvrir."},
|
|
{q:"Tu reçois un fichier .exe de quelqu'un que tu ne connais pas.", o:["Je l'ouvre","Je ne l'ouvre pas","Je le renomme"], bon:1,
|
|
p:"Un .exe est un programme : il fait quelque chose quand on l'ouvre."},
|
|
{q:"Quand utilises-tu Ctrl et S ?", o:["Seulement à la fin","Toutes les quelques minutes","Jamais"], bon:1,
|
|
p:"Un travail perdu, c'est une heure perdue."},
|
|
{q:"Tu ne retrouves plus ton fichier. La cause la plus fréquente ?", o:["La machine l'a effacé","Tu ne sais plus quel chemin tu as pris en l'enregistrant","Il a changé de nom tout seul"], bon:1,
|
|
p:"C'est pour ça qu'on choisit l'endroit avant de cliquer, et qu'on le note."}]}
|
|
]);
|
|
|
|
/* ================= période 6 ================= */
|
|
monter("jeux-p6", [
|
|
{type:"ordre", titre:"Le parcours en huit étapes",
|
|
consigne:"Remets les huit étapes du parcours dans l'ordre, avant de le faire pour de vrai sur ton poste.",
|
|
etapes:["J'installe mon poste et j'allume l'ordinateur.","J'ouvre ma session.",
|
|
"Je branche ma clé USB et j'ouvre mon dossier.","Je démarre le programme par le bouton Démarrer.",
|
|
"J'écris les trois phrases dictées.","J'enregistre dans mon dossier, avec un nom correct.",
|
|
"Je quitte le programme, puis je retrouve mon fichier et je le rouvre.",
|
|
"Je ferme tout, je retire ma clé, j'éteins par le menu."]},
|
|
{type:"trieur", titre:"Le tri final",
|
|
consigne:"Douze appareils à classer. C'est le même exercice qu'à la période 3 : tu dois le réussir sans hésiter.",
|
|
bacs:[{id:"e",nom:"Entrée"},{id:"s",nom:"Sortie"}], items:ES},
|
|
{type:"paires", titre:"Les douze mots de l'étape",
|
|
consigne:"Douze mots, douze définitions. Ce sont ceux qui reviendront toute l'année.",
|
|
paires:[["Session","Ta place à toi sur un ordinateur partagé"],
|
|
["Bureau","Ce qui s'affiche quand ta session est ouverte"],
|
|
["Curseur","La flèche qui suit ta main à l'écran"],
|
|
["Sélectionner","Choisir d'un seul clic, sans ouvrir"],
|
|
["Périphérique","Un appareil branché autour de l'unité centrale"],
|
|
["Unité centrale","La boîte qui transforme ; ni entrée ni sortie"],
|
|
["Processeur","La pièce qui calcule"],
|
|
["Mémoire vive","La mémoire qui oublie quand on éteint"],
|
|
["Programme","Un outil installé qui fait un métier précis"],
|
|
["Barre des tâches","La rangée du bas, qui montre ce qui est ouvert"],
|
|
["Fichier","Un travail rangé quelque part, avec un nom"],
|
|
["Chemin","La liste des boîtes à ouvrir pour arriver au fichier"]]},
|
|
{type:"vf", titre:"Vrai ou faux de synthèse", items:[
|
|
{t:"On éteint l'ordinateur par le bouton de la boîte.", r:false, p:"Par Démarrer, Alimentation, Arrêter."},
|
|
{t:"Un clic gauche ouvre un fichier.", r:false, p:"Un clic choisit. Deux clics ouvrent."},
|
|
{t:"L'unité centrale est au milieu : elle transforme.", r:true, p:"Elle n'est ni entrée ni sortie."},
|
|
{t:"Réduire une fenêtre revient à quitter le programme.", r:false, p:"Il tourne encore, dans la barre du bas."},
|
|
{t:"La mémoire vive garde ton travail après l'extinction.", r:false, p:"C'est le disque et la clé qui gardent."},
|
|
{t:"Un dossier est une boîte qui contient des fichiers.", r:true, p:"Et il peut contenir d'autres dossiers."},
|
|
{t:"La touche Échap referme un menu ouvert par erreur.", r:true, p:"Sans rien déclencher."},
|
|
{t:"Verrouiller son écran ferme la session et perd le travail.", r:false, p:"La session reste ouverte, le travail est toujours là."}]},
|
|
{type:"qcm", titre:"Les vingt questions du module", items:[
|
|
{q:"Quel bouton allumes-tu en premier ?", o:["Celui de l'écran","Celui de l'unité centrale"], bon:1, p:"C'est elle qui travaille."},
|
|
{q:"Ta session, c'est…", o:["ta place à toi sur la machine","un programme","un fichier"], bon:0, p:"Avec tes réglages et tes documents."},
|
|
{q:"Tu t'absentes deux minutes.", o:["Je verrouille","J'éteins"], bon:0, p:"Ton travail reste ouvert et protégé."},
|
|
{q:"La corbeille sert à…", o:["décorer","garder les fichiers supprimés","ouvrir des programmes"], bon:1, p:"Tant qu'elle n'est pas vidée, on peut récupérer."},
|
|
{q:"Un seul clic gauche…", o:["ouvre","choisit sans ouvrir"], bon:1, p:"Deux clics ouvrent."},
|
|
{q:"Le clic droit…", o:["fait l'action tout seul","propose un menu de choix"], bon:1, p:"Échap le referme."},
|
|
{q:"Pour déplacer un fichier…", o:["je clique une fois dessus","je garde le bouton appuyé pendant tout le trajet"], bon:1, p:"Si tu lâches en route, il reste en route."},
|
|
{q:"Le curseur devient un rond qui tourne.", o:["J'attends","Je clique plus vite"], bon:0, p:"La machine travaille."},
|
|
{q:"L'ordinateur…", o:["reçoit, transforme, renvoie","renvoie, reçoit, transforme"], bon:0, p:"Cet ordre ne change jamais."},
|
|
{q:"Le clavier est un appareil…", o:["d'entrée","de sortie"], bon:0, p:"Il va de toi vers la machine."},
|
|
{q:"L'écran est un appareil…", o:["d'entrée","de sortie"], bon:1, p:"Il va de la machine vers toi."},
|
|
{q:"L'unité centrale est un appareil…", o:["d'entrée","de sortie","ni l'un ni l'autre"], bon:2, p:"Elle est au milieu : elle transforme."},
|
|
{q:"Quelle pièce calcule ?", o:["Le disque","Le processeur"], bon:1, p:"Caché sous son ventilateur."},
|
|
{q:"Quelle mémoire oublie tout à l'extinction ?", o:["La mémoire vive","Le disque"], bon:0, p:"Le disque, lui, garde."},
|
|
{q:"Le chemin le plus sûr pour démarrer un programme ?", o:["L'icône du bureau","Le bouton Démarrer"], bon:1, p:"Tout y est, même ce qui n'a pas d'icône."},
|
|
{q:"Le bouton en forme de trait…", o:["réduit","ferme"], bon:0, p:"Le programme continue de tourner."},
|
|
{q:"Où vérifies-tu qu'il ne reste rien d'ouvert ?", o:["Sur le fond d'écran","Dans la barre des tâches"], bon:1, p:"Chaque programme ouvert y laisse une marque."},
|
|
{q:"Un bon nom de fichier…", o:["dit ce que c'est et à qui c'est","est le plus court possible"], bon:0, p:"Pour le retrouver dans trois semaines sans l'ouvrir."},
|
|
{q:"Où enregistres-tu pour ce cours ?", o:["Sur le bureau du poste","Dans ma clé USB"], bon:1, p:"Elle est à toi, tu la reprends."},
|
|
{q:"Ctrl et S…", o:["ferment le programme","enregistrent sans fermer"], bon:1, p:"À faire toutes les quelques minutes."}]}
|
|
]);
|
|
</script>
|
|
</body>
|
|
</html>
|