v1.9

AlphaRace

Le tapis de l'alphabet dรฉfile ร  toute vitesse ! Trouve la lettre manquante avant qu'elle ne disparaisse !

๐Ÿ”ค Alphabet complet
๐ŸŽ๏ธ Tapis accรฉlรฉrant
๐Ÿ”ฅ Combo turbo
โšก 6 Niveaux
๐Ÿ Quel niveau ?
โค๏ธ 3
โญ 0
๐Ÿ”ฅ ร—1
0 โœ… 0 โŒ
โšก ร—1.0
๐ŸŽ๏ธ Vitesse :
๐ŸŽ‰
Excellent !
โญโญโญ
0
Score
0%
Prรฉcision
0
Rรฉussis
0s
Temps
๐Ÿ†
Champion de l'alphabet !

Tu connais l'alphabet ร  l'endroit,
ร  l'envers et ร  toute vitesse ! ๐ŸŽ๏ธ๐Ÿ’จ

0
Score total
0%
Prรฉcision
/* โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• NAVIGATION โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• */ function showScreen(id){ document.querySelectorAll('.scr').forEach(function(s){s.classList.remove('on')}); document.getElementById(id).classList.add('on'); } function openLevels(){ stopAll(); buildLvlList(); showScreen('s-levels'); } function buildLvlList(){ var list=document.getElementById('lvl-list');list.innerHTML=''; LEVELS.forEach(function(lv){ var c=document.createElement('div');c.className='lcard'; c.innerHTML='
'+lv.emoji+'
Niv. '+lv.num+' โ€” '+lv.name+'
'+lv.desc+'
'; c.onclick=(function(n){return function(){selectLevel(n)}})(lv.num); list.appendChild(c); }); } async function selectLevel(n){ var r=await Parcoursly.requestLevel(n); if(!r.allowed)return; li=n-1; startLevel(); } /* โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• Dร‰MARRAGE NIVEAU โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• */ function startLevel(){ var lv=LEVELS[li]; score=0;ok=0;ko=0;lives=3;combo=0;mul=1;tok=0;tko=0;qDone=0; elapsed=0;lvStart=Date.now(); baseSpeed=lv.speed; accelPerOk=lv.accel; speedMul=1.0; curSpeed=baseSpeed; tapeOffset=0; rafState='idle'; answering=false; showScreen('s-game'); updateHeader(); buildTape(); renderTape(); tapeOffset=0; requestAnimationFrame(function(){ requestAnimationFrame(function(){ computeCellW(); startRaf(); showQuestion(); }); }); clearInterval(tickInt); tickInt=setInterval(function(){elapsed=Math.round((Date.now()-lvStart)/1000)},500); buildRoad(); } /* โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• CONSTRUCTION DU TAPIS โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• */ function buildTape(){ var lv=LEVELS[li]; var letters=lv.letters.split(''); var len=letters.length; // Crรฉer un segment suffisamment long : alphabet ร— 3 au moins var rawSeg=[]; var repeats=Math.ceil((TAPE_LEN+10)/len)+2; for(var r=0;r0;i--){var j=Math.floor(Math.random()*(i+1));var t=arr[i];arr[i]=arr[j];arr[j]=t} return arr; } function computeCellW(){ var cells=tapeTrack.querySelectorAll('.tape-cell'); if(cells.length>=2){ var r0=cells[0].getBoundingClientRect(); var r1=cells[1].getBoundingClientRect(); cellW=r1.left-r0.left; // distance rรฉelle entre deux cellules } else if(cells.length===1){ cellW=cells[0].getBoundingClientRect().width+8; } if(cellW<=4) cellW=52; // fallback absolu } function renderTape(){ tapeTrack.innerHTML=''; for(var i=0;i=maxOff){ // Fin du tapis : ajouter un segment et continuer appendTapeSegment(); placeNewMystery(); computeCellW(); } tapeTrack.style.transform='translateX(-'+tapeOffset.toFixed(1)+'px)'; document.getElementById('speed-bar').textContent='โšก ร—'+speedMul.toFixed(1); updateSpeedPips(); rafId=requestAnimationFrame(rafLoop); } function stopRaf(){if(rafId){cancelAnimationFrame(rafId);rafId=null}} function updateSpeedPips(){ var levels=[1.0,1.5,2.0,2.8,4.0]; for(var i=0;i<5;i++){ var pip=document.getElementById('pip'+i); if(!pip)continue; if(speedMul>=levels[i]){ pip.className=speedMul>=2.8?'speed-pip on fast':'speed-pip on'; } else { pip.className='speed-pip'; } } } /* โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• QUESTION โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• */ function showQuestion(){ if(qDone>=LEVELS[li].qCount){ endLevel(); return; } answering=true; renderChoices(mystAnswers[currentMystIdx]); } function renderChoices(correct){ var grid=document.getElementById('choices');grid.innerHTML=''; var lv=LEVELS[li]; var alpha=lv.reversed?ALPHA_REV:ALPHA; var idx=alpha.indexOf(correct); // 3 distracteurs proches var set=[correct]; var offsets=[-3,-2,-1,1,2,3]; shuffle(offsets); for(var i=0;i=0&&ni=8?'๐Ÿš€ TURBO !':combo>=5?'๐Ÿ”ฅ COMBO !':combo>=3?'โœจ Super !':'โœ… Bravo !','ok'); renderTapeCell(currentMystIdx, true); currentMystIdx++; qDone++; updateHeader(); // Enchaรฎner immรฉdiatement sur le prochain mystรจre (le tapis continue de dรฉfiler) if(qDone>=LEVELS[li].qCount){ setTimeout(endLevel, 600); return; } if(currentMystIdx>=mystPositions.length){ appendTapeSegment(); placeNewMystery(); computeCellW(); } setTimeout(showQuestion, 300); } else { combo=0;mul=1;lives=Math.max(0,lives-1);ko++;tko++; speedMul=Math.max(1.0,speedMul-0.4); curSpeed=baseSpeed*speedMul; shakeTape();sfxKo(); showFb('โŒ Essaie encore !','err'); updateHeader(); // Le tapis continue, on rรฉaffiche juste les choix setTimeout(function(){ answering=true; renderChoices(mystAnswers[currentMystIdx]); }, 900); } } function renderTapeCell(mystIdx,solved){ var cells=tapeTrack.querySelectorAll('.tape-cell'); var pos=mystPositions[mystIdx]; if(cells[pos]){ cells[pos].className='tape-cell found'; cells[pos].innerHTML=mystAnswers[mystIdx]; } } function appendTapeSegment(){ var lv=LEVELS[li]; var letters=lv.letters.split(''); var lastLetter=tapeLetters[tapeLetters.length-1]; var lastIdx=letters.indexOf(lastLetter); var seg=[]; for(var i=0;i<8;i++){ lastIdx=(lastIdx+1)%letters.length; seg.push(letters[lastIdx]); tapeLetters.push(letters[lastIdx]); // Crรฉer la cellule DOM var cell=document.createElement('div'); cell.className='tape-cell normal'; cell.textContent=letters[lastIdx]; tapeTrack.appendChild(cell); } } function placeNewMystery(){ var newPos=tapeLetters.length-4; mystAnswers.push(tapeLetters[newPos]); tapeLetters[newPos]=null; mystPositions.push(newPos); mystSolved.push(false); // Mettre ร  jour la cellule DOM var cells=tapeTrack.querySelectorAll('.tape-cell'); if(cells[newPos]){ cells[newPos].className='tape-cell mystery'; cells[newPos].innerHTML='?'; } } function shakeTape(){ tapeWrapper.classList.remove('shaking'); void tapeWrapper.offsetWidth; tapeWrapper.classList.add('shaking'); setTimeout(function(){tapeWrapper.classList.remove('shaking')},380); } /* โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• VITESSE / COMBO โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• */ function updMul(){ if(combo>=8) mul=3; else if(combo>=5) mul=2.5; else if(combo>=3) mul=2; else if(combo>=2) mul=1.5; else mul=1; } function updateHeader(){ document.getElementById('h-lives').textContent='โค๏ธ'.repeat(lives)+'๐Ÿ–ค'.repeat(Math.max(0,3-lives)); document.getElementById('h-score').textContent=score; document.getElementById('h-ok').textContent=ok; document.getElementById('h-ko').textContent=ko; var cp=document.getElementById('h-combo'); cp.textContent='๐Ÿ”ฅ ร—'+mul; cp.className=mul>1?'cpill hot':'cpill'; } var fbt2=null; function showFb(txt,cls){ var el=document.getElementById('fb'); el.textContent=txt;el.className='fb '+cls+' on'; if(fbt2)clearTimeout(fbt2); fbt2=setTimeout(function(){el.classList.remove('on')},680); } /* โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• FIN DE NIVEAU โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• */ function endLevel(){ stopAll(); var el=elapsed,total=LEVELS[li].qCount; var acc=total>0?Math.round(ok/total*100):0; var st=acc>=90?3:acc>=70?2:1; document.getElementById('le-em').textContent=acc>=90?'๐ŸŽ‰':acc>=70?'๐Ÿ˜Š':'๐Ÿ“š'; document.getElementById('le-ti').textContent=acc>=90?'Excellent !':acc>=70?'Bien jouรฉ !':'Continue !'; document.getElementById('le-st').textContent='โญ'.repeat(st)+'โ˜†'.repeat(3-st); document.getElementById('le-sc').textContent=score; document.getElementById('le-ac').textContent=acc+'%'; document.getElementById('le-ok').textContent=ok+'/'+total; document.getElementById('le-tm').textContent=el+'s'; document.getElementById('btn-next').style.display=li=LEVELS.length-1){ Parcoursly.gameComplete({totalScore:score}); var acc=tok+tko>0?Math.round(tok/(tok+tko)*100):0; document.getElementById('fn-sc').textContent=score; document.getElementById('fn-ac').textContent=acc+'%'; showScreen('s-fin');return; } var r=await Parcoursly.requestLevel(LEVELS[li+1].num); if(!r.allowed)return; li++;startLevel(); } function stopAll(){ stopRaf(); clearInterval(tickInt); } /* โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• ROUTE EN FOND โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• */ function buildRoad(){ var rb=document.getElementById('road-bg');rb.innerHTML=''; for(var i=0;i<8;i++){ var stripe=document.createElement('div'); stripe.className='road-stripe'; var dur=(3-speedMul*0.2)||2.8; stripe.style.cssText='bottom:20px;animation-duration:'+(1.5+Math.random())+'s;animation-delay:'+(-(Math.random()*2.5))+'s'; rb.appendChild(stripe); } } /* โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• AUDIO โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• */ var actx=null; function getAC(){if(!actx)actx=new(window.AudioContext||window.webkitAudioContext)();return actx} function beep(f1,f2,dur,vol){ try{ var ctx=getAC(),o=ctx.createOscillator(),g=ctx.createGain(); o.connect(g);g.connect(ctx.destination); o.type='sine'; o.frequency.setValueAtTime(f1,ctx.currentTime); if(f2)o.frequency.setValueAtTime(f2,ctx.currentTime+dur*.5); g.gain.setValueAtTime(vol||.1,ctx.currentTime); g.gain.exponentialRampToValueAtTime(.001,ctx.currentTime+dur); o.start(ctx.currentTime);o.stop(ctx.currentTime+dur); }catch(e){} } function sfxOk(){beep(523,784,.24,.1)} function sfxKo(){beep(220,165,.3,.1)} /* โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• Dร‰CORS โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• */ function buildDecor(){ var gw=document.getElementById('gw'); for(var i=0;i<25;i++){ var s=document.createElement('div');s.className='star'; var sz=1+Math.random()*2.5; s.style.cssText='width:'+sz+'px;height:'+sz+'px;left:'+(Math.random()*100)+'%;top:'+(Math.random()*80)+'%;animation-duration:'+(1.5+Math.random()*2.5)+'s;animation-delay:'+(-Math.random()*3)+'s'; gw.appendChild(s); } } /* โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• INIT โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• */ buildDecor(); buildLvlList(); try{Parcoursly.ready()}catch(e){}