/* ---------- Contenidos de 2.º ---------- */ const TRABADAS=[["fre-sa","🍓"],["glo-bo","🎈"],["dra-gón","🐉"],["plá-ta-no","🍌"],["bru-ja","🧙"],["li-bro","📖"],["ca-bra","🐐"],["co-co-dri-lo","🐊"],["pla-to","🍽️"],["ti-gre","🐯"],["pla-ya","🏖️"],["fla-men-co","🦩"],["bi-ci-cle-ta","🚲"],["blu-sa","👚"],["glo-tón","😋"],["pro-fe-so-ra","👩🏫"],["cla-vel","🌺"],["tri-go","🌾"],["ne-gro","⚫"],["pla-ne-ta","🪐"],["sem-bra-do","🌱"],["crua-sán","🥐"]]; const RELLENO=["bri","cle","fla","gro","pli","tru","dre","cra","blo","gli"]; const CONTRARIOS=[["grande","pequeño"],["alto","bajo"],["día","noche"],["frío","calor"],["arriba","abajo"],["abierto","cerrado"],["lleno","vacío"],["rápido","lento"],["blanco","negro"],["alegre","triste"],["dentro","fuera"],["mucho","poco"],["nuevo","viejo"],["limpio","sucio"],["encender","apagar"],["subir","bajar"]]; const ESCRIBE=[["queso","keso","🧀"],["guitarra","gitarra","🎸"],["zapato","sapato","👞"],["ratón","raton","🐭"],["jirafa","girafa","🦒"],["cebra","zebra","🦓"],["hormiga","ormiga","🐜"],["huevo","uevo","🥚"],["girasol","jirasol","🌻"],["barco","varco","⛵"],["llave","yave","🔑"],["cerezas","zerezas","🍒"],["perro","pero","🐶"],["burro","buro","🫏"],["vaca","baca","🐮"],["helado","elado","🍦"],["guisantes","gisantes","🫛"],["quince","kince","1️⃣5️⃣"],["gorro","goro","🧢"],["caracol","karakol","🐌"],["búho","buho","🦉"],["árbol","arbol","🌳"]]; const PLURALES=[["pez","peces"],["ratón","ratones"],["flor","flores"],["lápiz","lápices"],["árbol","árboles"],["sol","soles"],["león","leones"],["casa","casas"],["perro","perros"],["mesa","mesas"],["tren","trenes"],["pan","panes"],["luz","luces"],["camión","camiones"],["reloj","relojes"],["nariz","narices"],["rey","reyes"],["mano","manos"],["papel","papeles"],["botón","botones"],["libro","libros"],["nuez","nueces"]]; const GAMES=[ {id:"contrarios",s:"lengua",t:3,pic:"↔️",name:"Los contrarios",area:"Vocabulario",type:"match",help:"Toca una palabra y después su contraria."}, {id:"trabadas",s:"lengua",t:3,pic:"🐉",name:"Sílabas trabadas",area:"bra, cla, tri…",type:"silabas",help:"Toca las sílabas en orden para formar la palabra."}, {id:"escribe",s:"lengua",t:2,pic:"✏️",name:"¿Cómo se escribe?",area:"Ortografía",type:"quiz",help:"Mira el dibujo y toca la palabra bien escrita."}, {id:"plural",s:"lengua",t:2,pic:"🐟",name:"Singular y plural",area:"Gramática",type:"quiz",help:"Toca el plural correcto."}, {id:"decenas",s:"mates",t:1,pic:"🧮",name:"Decenas y unidades",area:"Números hasta 99",type:"quiz",help:"Cuenta las decenas y las unidades y toca el número."}, {id:"calculo",s:"mates",t:1,pic:"🧠",name:"Cálculo mental",area:"Sumas y restas",type:"quiz",help:"Calcula de cabeza y toca el resultado."}, {id:"clases",s:"naturales",t:2,pic:"🦎",name:"Clases de animales",area:"Mamíferos, aves, peces…",type:"quiz",help:"¿A qué grupo pertenece este animal?"}, {id:"vocab",s:"english",t:0,pic:"🍎",name:"Food and animals",area:"Vocabulary",type:"quiz",help:"Look and choose the word."} ]; const CLASES=[["perro","🐶","mamífero"],["ballena","🐋","mamífero"],["murciélago","🦇","mamífero"],["vaca","🐮","mamífero"],["águila","🦅","ave"],["pingüino","🐧","ave"],["gallina","🐔","ave"],["loro","🦜","ave"], ["tiburón","🦈","pez"],["pez payaso","🐠","pez"],["sardina","🐟","pez"],["serpiente","🐍","reptil"],["tortuga","🐢","reptil"],["cocodrilo","🐊","reptil"],["lagarto","🦎","reptil"],["rana","🐸","anfibio"]]; const CLASE_WHY={mamífero:"Tiene pelo y toma leche de su madre.",ave:"Tiene plumas y pico.",pez:"Vive en el agua y respira por branquias.",reptil:"Tiene escamas y patas cortas o no tiene patas.",anfibio:"Nace en el agua y de mayor vive también en tierra."}; const VOCAB2=[["apple","🍎"],["banana","🍌"],["orange","🍊"],["bread","🍞"],["milk","🥛"],["egg","🥚"],["pizza","🍕"],["cake","🎂"],["lion","🦁"],["monkey","🐵"],["elephant","🐘"],["frog","🐸"],["pig","🐷"],["duck","🦆"],["horse","🐴"],["rabbit","🐰"]]; const $=s=>document.querySelector(s); const board=$("#board"); const rand=(a,b)=>a+Math.floor(Math.random()*(b-a+1)); const pick=a=>a[rand(0,a.length-1)]; const shuffle=a=>{a=[...a];for(let i=a.length-1;i>0;i--){const j=Math.floor(Math.random()*(i+1));[a[i],a[j]]=[a[j],a[i]]}return a}; const esc=s=>String(s).replace(/[&<>"]/g,c=>({"&":"&","<":"<",">":">",'"':"""}[c])); let current="trabadas", soundOn=true, actx=null; function tone(ok){ if(!soundOn) return; try{ actx=actx||new (window.AudioContext||window.webkitAudioContext)(); (ok?[660,880]:[220]).forEach((f,i)=>{const o=actx.createOscillator(),g=actx.createGain();o.type="sine";o.frequency.value=f; const t=actx.currentTime+i*.11;g.gain.setValueAtTime(.0001,t);g.gain.exponentialRampToValueAtTime(.18,t+.02);g.gain.exponentialRampToValueAtTime(.0001,t+.25); o.connect(g).connect(actx.destination);o.start(t);o.stop(t+.27)}); }catch(e){} } function shake(el){el.classList.remove("shake");void el.offsetWidth;el.classList.add("shake")} function dotsHtml(n,i,res,label){return `
Nada este trimestre
`}${g.help}
${msg}
${parts.length} sílabas: ¡dad ${parts.length} palmadas!
${esc(n)}
`,answer:c,opts:["mamífero","ave","pez","reptil","anfibio"],small:true,why:CLASE_WHY[c]}; } if(id==="vocab"){ const [w,e]=pick(VOCAB2.filter(x=>!used.has(x[0]))); used.add(w); return {scene:`What is it?
`,answer:w,opts:shuffle([w,...shuffle(VOCAB2.filter(x=>x[0]!==w)).slice(0,2).map(x=>x[0])]),small:true}; } if(id==="escribe"){ const [ok,bad,e]=pick(ESCRIBE.filter(x=>!used.has(x[0]))); used.add(ok); return {scene:`¿Cómo se escribe?
`,answer:ok,opts:wordOpts([ok,bad]),word:true}; } if(id==="plural"){ const [s,p]=pick(PLURALES.filter(x=>!used.has(x[0]))); used.add(s); const opts=[p]; if(/[aeiou]$/.test(s)) opts.push(s+"es"); else { opts.push(s+"s"); if(s.endsWith("z")) opts.push(s+"es"); } return {scene:`un / una
${esc(s)}
¿Cuál es el plural?
`,answer:p,opts:shuffle(opts),word:true}; } if(id==="decenas"){ const d=rand(1,9), u=rand(0,9), n=d*10+u; const tens=Array.from({length:d},()=>`¿Qué número es?
`,answer:String(n),opts:shuffle([...set].map(String))}; } /* cálculo mental */ const kind=rand(0,5); let a,b,op,r; if(kind===0){a=rand(10,89);b=10;op="+";} else if(kind===1){a=rand(20,99);b=10;op="−";} else if(kind===2){a=rand(1,6)*10;b=rand(1,9-a/10)*10;op="+";} else if(kind===3){a=rand(2,10);b=a;op="+";} else if(kind===4){a=rand(5,9);b=rand(11-a,9);op="+";} else {a=rand(11,18);b=rand(a-9,9);op="−";} r=op==="+"?a+b:a-b; return {scene:`${a} ${op} ${b} = ?
`,answer:String(r),opts:numOpts(r,0,100)}; } function playQuiz(g){ let i=0, score=0; const res=[], used=new Set(); const next=()=>{ if(i===ROUNDS) return winScreen(g,score,ROUNDS); const q=makeQ(g.id,used); board.innerHTML=head(g,dotsHtml(ROUNDS,i,res,"Pregunta"))+ `