feat(math6): умножение-прыжки (Гл.4 §7) + координатный тир (Гл.5 §1)
Math6Anim.numberLineJumps — a·b как a прыжков-дуг по b на числовой прямой (зелёные вправо, красные влево, приземление на произведение); ползунки a,b. Math6Anim.coordGame — «поставь точку (x;y)»: клик по узлу сетки, проверка, счёт, при промахе показывает верную точку. План: 3D-тела исключены. Headless-safe. Тесты math6: 20/20. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -500,9 +500,18 @@ function buildP7(){
|
||||
+'<div id="p7-q" class="qbox"></div>'
|
||||
+'<div style="display:flex;gap:10px;justify-content:center;align-items:center;flex-wrap:wrap"><input type="number" id="p7-a" class="tinp" style="width:90px;text-align:center"><button class="btn primary" id="p7-go">Проверить</button></div>'
|
||||
+'<div class="feedback" id="p7-fb"></div></div>';
|
||||
h+='<div class="wg" id="p7-jumps"><div class="wg-header"><span class="wg-badge">Анимация</span><div class="wg-title">Умножение — это прыжки</div></div>'
|
||||
+'<div class="wg-help">$a \\cdot b$ — сделать $a$ прыжков по $b$ от нуля. Зелёные прыжки — вправо ($b>0$), красные — влево ($b<0$).</div>'
|
||||
+'<div class="sliders"><label>$a$ (сколько прыжков) = <b id="p7-jav">3</b><input type="range" id="p7-ja" min="1" max="5" value="3"></label>'
|
||||
+'<label>$b$ (длина прыжка) = <b id="p7-jbv">-2</b><input type="range" id="p7-jb" min="-5" max="5" value="-2"></label></div>'
|
||||
+'<div id="p7-jumpfig"></div></div>';
|
||||
h+=secNav('p6','p8')+readBtn('p7');
|
||||
box.innerHTML=h; renderMath(box);
|
||||
|
||||
(function(){ if(!window.Math6Anim) return; var ja=document.getElementById('p7-ja'), jb=document.getElementById('p7-jb'), jump=null;
|
||||
function r(){ var a=+ja.value,b=+jb.value; document.getElementById('p7-jav').textContent=a; document.getElementById('p7-jbv').textContent=b; if(jump)jump.stop(); jump=Math6Anim.numberLineJumps(document.getElementById('p7-jumpfig'),{a:a,b:b}); }
|
||||
ja.oninput=r; jb.oninput=r; r(); })();
|
||||
|
||||
(function(){
|
||||
var out=document.getElementById('p7-out');
|
||||
function render(s){ var map={pp:['$(+)\\cdot(+)=+$','плюс'],pn:['$(+)\\cdot(-)=-$','минус'],np:['$(-)\\cdot(+)=-$','минус'],nn:['$(-)\\cdot(-)=+$','плюс']};
|
||||
|
||||
@@ -137,9 +137,14 @@ function buildP1(){
|
||||
+'<div id="p1-tq" class="qbox" style="font-size:1.1rem;text-align:center;padding:14px 0"></div>'
|
||||
+'<div style="display:flex;gap:10px;justify-content:center;flex-wrap:wrap"><button class="btn primary" data-tq="1">I</button><button class="btn primary" data-tq="2">II</button><button class="btn primary" data-tq="3">III</button><button class="btn primary" data-tq="4">IV</button></div>'
|
||||
+'<div class="feedback" id="p1-tfb"></div></div>';
|
||||
h+='<div class="wg" id="p1-game-wg"><div class="wg-header"><span class="wg-badge">Игра</span><div class="wg-title">Координатный тир: поставь точку</div></div>'
|
||||
+'<div class="wg-help">Тебе называют координаты — кликни по нужному узлу сетки. Попал — очко и новая цель; промахнулся — покажу, где была точка.</div>'
|
||||
+'<div id="p1-game"></div></div>';
|
||||
h+=secNav(null,'p2')+readBtn('p1');
|
||||
box.innerHTML=h; renderMath(box);
|
||||
|
||||
(function(){ if(window.Math6Anim) Math6Anim.coordGame(document.getElementById('p1-game'),{}); })();
|
||||
|
||||
(function(){
|
||||
var i=0,score=0,cur=null;
|
||||
function gen(){ cur={x:_ri(-5,5), y:_ri(-5,5)}; }
|
||||
|
||||
Reference in New Issue
Block a user