var w,h,g,my={} function blockchooseMain(){my.version='0.82' w=420;h=540;my.canTop=70 my.timeQ=false my.imgType='chocs' my.lvls=[{name:'Easy',ansMin:3,ansMax:8,minGap:1,maxGap:4},{name:'Medium',ansMin:8,ansMax:25,minGap:1,maxGap:3},{name:'Hard',ansMin:14,ansMax:25,minGap:1,maxGap:2}] my.lvl=my.lvls[0] my.transTime='0.5s' my.mTot=50;my.mWd=32 my.blocks=[new Block(0),new Block(0)] my.blockTot=2 my.lblsQ=false var s='' s+='' my.soundHome=(document.domain=='localhost')?'/mathsisfun/images/sounds/':'/images/sounds/' s+='';s+='';s+='
';s+='';for(var i=0;i
';if(my.lblsQ){s+='
1
';s+='
1
';s+='
';}} s+='
';s+='
';s+='
';s+='
';s+='';s+=radioHTML('Level','level',my.lvls,'levelChg');s+='
';s+='';s+='';s+='
';s+='
';s+='
';s+='
';s+=boxHTML('right','Right');s+=boxHTML('wrong','Wrong');if(my.timeQ){s+=boxHTML('avgspeed','Avg Time');s+='
';s+=boxHTML('speed','Time (s)');} s+='
';s+='
';s+='';my.soundQ=true s+=soundBtnHTML() s+='
';s+='
© 2020 MathsIsFun.com v'+my.version+'
';s+='';document.write(s);var el=document.getElementById('canvasId');var ratio=2;el.width=w*ratio;el.height=(h-my.canTop)*ratio;el.style.width=w+"px";el.style.height=(h-my.canTop)+"px";g=el.getContext("2d");g.setTransform(ratio,0,0,ratio,0,0);var imgHome=(document.domain=='localhost')?'/mathsisfun/numbers/images/':'/numbers/images/' for(var blockN=0;blockN' if(my.imgType=='chocs'){s+='' s+='';} if(my.imgType=='balls'){var n=i%8;s+='' s+='';} s+=''} document.getElementById('marbles'+blockN).innerHTML=s;} numsDraw() numsShow(false) gameStart();} function levelChg(n){my.lvl=my.lvls[n]} function gameStart(){my.rightN=0;my.doneN=0;my.elapsedTot=0;my.maxRoundsN=10;my.prev={wdn:0,htn:0} optionsShow(false) displayUpdate(0) go();} function optionsShow(showQ){var div=document.getElementById('result');if(showQ){div.style.visibility='visible';div.style.opacity=1;}else{div.style.visibility='hidden';div.style.opacity=0;}} function displayUpdate(elapsed){document.getElementById('right').innerHTML=my.rightN;document.getElementById('wrong').innerHTML=my.doneN-my.rightN;if(my.timeQ){document.getElementById('speed').innerHTML=(elapsed<<0)/1000;document.getElementById('avgspeed').innerHTML=((my.elapsedTot/my.doneN)<<0)/1000;}} function showOpts(stt){var div=document.getElementById('ansBoxes');div.style.visibility='visible';var s='';s+='';var val=stt;var n=0;for(var i=0;i<4;i++){s+='
';for(var j=0;j<3;j++){var id=n+'-'+val;s+='
';s+=val;s+='
';val++;n++;} s+='
';} div.innerHTML=s;} function ansCheck(me){var choseN=parseInt(me.id.substr(-1)) var largerN=my.blocks[0].ans()0.6){s+='Well Done!
';} s+='You got '+my.rightN+' of '+my.doneN+' correct
';if(my.timeQ){s+=((my.elapsedTot/my.doneN)<<0)/1000+' second average';} var div=document.getElementById('msg');div.innerHTML=s;optionsShow(true)} function go(){var prevBlock=null for(var i=0;imy.lvl.maxGap) prevBlock=block drawBoxes(i,block.wdn,block.htn)} my.ansAvailQ=true my.sttTime=performance.now()} function spinAll(blockN){var block=my.blocks[blockN];block.rot=(block.rot==0)?360:0 for(var i=0;i
';s+='0';return s;} function soundBtnHTML(){var s='' s+='' s+='
' return s} function soundToggle(){var btn='sound' if(my.soundQ){my.soundQ=false document.getElementById(btn).classList.add("mute")}else{my.soundQ=true document.getElementById(btn).classList.remove("mute")}} CanvasRenderingContext2D.prototype.roundRect=function(x,y,w,h,r){if(w<2*r)r=w/2;if(h<2*r)r=h/2;this.moveTo(x+r,y);this.arcTo(x+w,y,x+w,y+h,r);this.arcTo(x+w,y+h,x,y+h,r);this.arcTo(x,y+h,x,y,r);this.arcTo(x,y,x+w,y,r);return this;};function getRandomInt(min,max){return Math.floor(Math.random()*(max-min+1)+min);} function radioHTML(prompt,id,lbls,func){var s='';s+='
';for(var i=0;i';s+='';} s+='
';return s;} class Block{constructor(){this.rot=0 this.prev={wdn:0,htn:0}} sizeNew(){var okq,wdn,htn var min=my.lvl.ansMin+my.doneN*0.5 var max=my.lvl.ansMax+my.doneN*1.5 console.log('sizeNew',min,max) do{wdn=getRandomInt(1,6) htn=getRandomInt(1,11) okq=true if(wdn*htnmax)okq=false}while(!okq);console.log('go',wdn,htn) this.prev.wdn=wdn this.prev.htn=htn this.wdn=wdn this.htn=htn} ans(){return this.wdn*this.htn}}