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+=''+title+'
';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}}