From 10585fef988fbb38c8cd6700cfe458040c8b17ff Mon Sep 17 00:00:00 2001 From: Nathan DECHER Date: Thu, 26 Mar 2020 10:46:50 +0100 Subject: [PATCH 1/3] fixed engine to limit input buffering in time --- src/js/snek.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/js/snek.js b/src/js/snek.js index 792ef45..710ff90 100644 --- a/src/js/snek.js +++ b/src/js/snek.js @@ -82,7 +82,9 @@ class SnekGame { worldWrap: true, winCondition: 'none', scoreSystem: 'fruit', - netPlay: false + netPlay: false, + autoSizeGrow: false, + autoSpeedIncrease: false }, rules, settings.rules || {}); } @@ -305,6 +307,17 @@ class SnekGame { return true; } } + + Object + .keys(inputs) + .forEach(k => { + let v=inputs[k]; + if(v===true) v=5; + v--; + if(!v) delete inputs[k]; + else inputs[k]=v; + }); + if(inputs.left && trySet([-1, 0])) return delete inputs.left; else if(inputs.right && trySet([ 1, 0])) return delete inputs.right; else if(inputs.up && trySet([ 0,-1])) return delete inputs.up; From 1df62ff1fea62d62d84598694101c634af5c4c75 Mon Sep 17 00:00:00 2001 From: Nathan DECHER Date: Thu, 26 Mar 2020 10:47:10 +0100 Subject: [PATCH 2/3] added timed and improved survival --- levels/arcade-survival.json | 4 +++- levels/arcade-timed.json | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 levels/arcade-timed.json diff --git a/levels/arcade-survival.json b/levels/arcade-survival.json index 7c2f485..203ce07 100644 --- a/levels/arcade-survival.json +++ b/levels/arcade-survival.json @@ -8,9 +8,11 @@ [16, 10] ], "rules": { + "worldWrap": false, "autoSpeedIncrease": true, "autoSpeadIncreaseTicks": 10, "autoSizeGrow": true, - "autoSizeGrowTicks": 100 + "autoSizeGrowTicks": 100, + "scoreSystem": "survival" } } diff --git a/levels/arcade-timed.json b/levels/arcade-timed.json new file mode 100644 index 0000000..6d6c837 --- /dev/null +++ b/levels/arcade-timed.json @@ -0,0 +1,17 @@ +{ + "dimensions": [32, 32], + "delay": 100, + "food": [ + [16, 5] + ], + "snake": [ + [16, 12], + [16, 11], + [16, 10] + ], + "rules": { + "speedMultiplier": 0.8, + "gameDuration": 30000, + "winCondition": "time" + } +} From 6b7ff7e86d813543a889c9cfec9d4dda66be60a0 Mon Sep 17 00:00:00 2001 From: Nathan DECHER Date: Thu, 26 Mar 2020 10:47:22 +0100 Subject: [PATCH 3/3] added touchscreen support --- src/js/main.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/js/main.js b/src/js/main.js index 35e82a4..71b4f54 100644 --- a/src/js/main.js +++ b/src/js/main.js @@ -108,4 +108,16 @@ else if(e.key=='ArrowRight') inputs.right=true; }); + window.addEventListener('touchstart', e => { + 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; + + let inputs=currentInputs; + if(angle>.25 && angle <.75) inputs.right=true; + 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; + }); + })();