浏览代码

Improvements to snake, specifically trying to address the input spam crashes

Kirk Trombley 3 年之前
父节点
当前提交
bd16616df4
共有 1 个文件被更改,包括 6 次插入4 次删除
  1. 6 4
      client/src/components/screens/GamePanel/GuessPane/GunGame.jsx

+ 6 - 4
client/src/components/screens/GamePanel/GuessPane/GunGame.jsx

@@ -58,10 +58,11 @@ const snakeGame = () => {
 
   reset();
 
+  let currentKey;
   let lastKey;
 
   const onKey = ({ code }) => {
-    if (snakeTail.length <= 1 || OPPOSITE_KEY[lastKey] !== code) {
+    if (snakeTail.length <= 1 || OPPOSITE_KEY[currentKey] !== code) {
       lastKey = code;
     }
   };
@@ -75,7 +76,8 @@ const snakeGame = () => {
         return;
       }
 
-      switch (lastKey) {
+      currentKey = lastKey;
+      switch (currentKey) {
         case "ArrowUp":
           snakeHead.vx = 0;
           snakeHead.vy = -1;
@@ -111,7 +113,7 @@ const snakeGame = () => {
         ctx.textAlign = "center";
         ctx.textBaseline = "middle";
         ctx.fillText("Crashed!", rawSize / 2, rawSize / 2);
-        setTimeout(() => reset(), 250);
+        setTimeout(() => reset(), 125);
         return;
       }
 
@@ -152,7 +154,7 @@ const snakeGame = () => {
 
         setTimeout(onFinish, 500);
       }
-    }, 60);
+    }, 65);
   };
 
   const stop = () => {