diff --git a/levels/arcade-survival.json b/levels/arcade-survival.json index 203ce07..efbcd8f 100644 --- a/levels/arcade-survival.json +++ b/levels/arcade-survival.json @@ -1,11 +1,42 @@ { - "dimensions": [32, 32], + "world": [ + " w ", + " w ", + " wwwwwww w wwwwwww ", + " w w ", + " w w ", + " w wwwwwwwwwwwww w ", + " w w ", + " w w ", + " w w w ", + " w w w ", + " w w w ", + " w w w ", + " w w w ", + " w w w ", + " w w w ", + "www w wwwwwwwwwwwwwww w www", + " w w w ", + " w w w ", + " w w w ", + " w w w ", + " w w w ", + " w w w ", + " w w w ", + " w w ", + " w w ", + " w wwwwwwwwwwwww w ", + " w w ", + " w w ", + " wwwwwww w wwwwwww ", + " w ", + " w " + ], "delay": 200, - "food": [], "snake": [ - [16, 12], - [16, 11], - [16, 10] + [16, 3], + [15, 3], + [14, 3] ], "rules": { "worldWrap": false, diff --git a/levels/level2.json b/levels/level2.json index eabcc7c..d2ab120 100644 --- a/levels/level2.json +++ b/levels/level2.json @@ -19,5 +19,5 @@ [6,8], [6,9] ], - "delay": 100 + "delay": 150 } diff --git a/levels/level3.json b/levels/level3.json new file mode 100644 index 0000000..53b2999 --- /dev/null +++ b/levels/level3.json @@ -0,0 +1,41 @@ +{ + "world": [ + " w ", + " w ", + " wwwwwww w wwwwwww ", + " w f w ", + " w w ", + " w wwwwwwwwwwwww w ", + " w w ", + " w f w ", + " w w w ", + " w w w ", + " w w w ", + " w w w ", + " w w w ", + " w w w ", + " w w w ", + "wwwf w fwwwwwwwwwwwwwwwf w fwww", + " w w w ", + " w w w ", + " w w w ", + " w w w ", + " w w w ", + " w w w ", + " w w w ", + " w f w ", + " w w ", + " w wwwwwwwwwwwww w ", + " w w ", + " w f w ", + " wwwwwww w wwwwwww ", + " w ", + " w " + ], + "delay": 200, + "snake": [ + [16, 4], + [15, 4], + [14, 4] + ] +} diff --git a/src/js/main.js b/src/js/main.js index 71b4f54..14339f3 100644 --- a/src/js/main.js +++ b/src/js/main.js @@ -90,11 +90,10 @@ } }; currentGame=snek; - //XXX - window.snek=snek; }); window.addEventListener('keydown', async e => { + e.preventDefault(); if(e.key=='f') { if(document.fullscreenElement) await document.exitFullscreen(); else await main.requestFullscreen(); @@ -108,7 +107,8 @@ else if(e.key=='ArrowRight') inputs.right=true; }); - window.addEventListener('touchstart', e => { + const handleTouch=e => { + e.preventDefault(); let x=e.touches[0].clientX/window.innerWidth-.5; let y=e.touches[0].clientY/window.innerHeight-.5; const angle=((Math.atan2(x, y)+2*Math.PI)%(2*Math.PI))/Math.PI; @@ -118,6 +118,10 @@ else if(angle>.75 && angle<1.25) inputs.up=true; else if(angle>1.25 && angle<1.75) inputs.left=true; else inputs.down=true; - }); + + inputs.clearBuffer=true; + }; + window.addEventListener('touchstart', handleTouch); + window.addEventListener('touchmove', handleTouch); })(); diff --git a/src/js/snek.js b/src/js/snek.js index 710ff90..271a33e 100644 --- a/src/js/snek.js +++ b/src/js/snek.js @@ -322,6 +322,12 @@ class SnekGame { else if(inputs.right && trySet([ 1, 0])) return delete inputs.right; else if(inputs.up && trySet([ 0,-1])) return delete inputs.up; else if(inputs.down && trySet([ 0, 1])) return delete inputs.down; + + if(inputs.clearBuffer) { + Object + .keys(inputs) + .forEach(k => delete inputs[k]); + } } start() {