From 3cc0125afbe1928b91a2838779bfc354a47a224e Mon Sep 17 00:00:00 2001 From: jpez Date: Thu, 28 Apr 2022 17:58:53 +0100 Subject: [PATCH] adjusted movement --- scripts/control.js | 54 ++++++++++++++++++++++++++++++++++------------ scripts/launch.js | 3 ++- 2 files changed, 42 insertions(+), 15 deletions(-) diff --git a/scripts/control.js b/scripts/control.js index 661bd4f..b789134 100644 --- a/scripts/control.js +++ b/scripts/control.js @@ -1,4 +1,6 @@ /* player movement logic */ +currentKey = 0; +lastKey = 0; function setVars() { let player = document.getElementById("player"); @@ -12,18 +14,18 @@ function verticalMovement(keyCode) { switch(keyCode) { case 38: /*Up*/ case 87: /*W*/ - var element = document.elementFromPoint(playerLeft, playerTop-10); + var element = document.elementFromPoint(playerLeft, playerTop-5); if (element.classList.contains("sky") == false) { /*change to only trigger when not grass*/ - player.style.top = (playerTop - 10) + "px"; + player.style.top = (playerTop - 5) + "px"; } player.className = "character walk up"; console.log("Up"); break; case 40: /*Down*/ case 83: /*S*/ - var element = document.elementFromPoint(playerLeft, playerTop+10); + var element = document.elementFromPoint(playerLeft, playerTop+5); if (element.classList.contains("sky") == false) { - player.style.top = (playerTop + 10) + "px"; + player.style.top = (playerTop + 5) + "px"; } player.className = "character walk down"; console.log("Down"); @@ -37,18 +39,18 @@ function horizontalMovement(keyCode) { switch(keyCode) { case 37: /*Left*/ case 65: /*A*/ - var element = document.elementFromPoint(playerLeft-10, playerTop); + var element = document.elementFromPoint(playerLeft-5, playerTop); if (element.classList.contains("sky") == false) { - player.style.left = (playerLeft - 10) + "px"; + player.style.left = (playerLeft - 5) + "px"; } player.className = "character walk left"; console.log("Left"); break; case 39: /*Right*/ case 68: /*D*/ - var element = document.elementFromPoint(playerLeft+10, playerTop); + var element = document.elementFromPoint(playerLeft+5, playerTop); if (element.classList.contains("sky") == false) { - player.style.left = (playerLeft + 10) + "px"; + player.style.left = (playerLeft + 5) + "px"; } player.className = "character walk right"; console.log("Right"); @@ -56,13 +58,38 @@ function horizontalMovement(keyCode) { } } -function move(event) { - verticalMovement(event.keyCode); - horizontalMovement(event.keyCode); +function move() { + if (currentKey == 0) { + verticalMovement(lastKey); + horizontalMovement(lastKey); + if (lastKey != 0) { + currentKey = lastKey; + } + } + else { + verticalMovement(currentKey); + horizontalMovement(currentKey); + } + +} + +function getKey(event) { + lastKey = currentKey; + currentKey = event.keyCode; } function stop(event) { - switch(event.keyCode) { + if (currentKey == lastKey) { + currentKey = 0; + lastKey = 0; + } + else if (event.keyCode == currentKey) { + currentKey = 0; + } + else if (event.keyCode == lastKey) { + lastKey = 0; + } + switch(event.keyCode) { case 38: /*Up*/ case 87: /*W*/ player.className = "character stand up"; @@ -81,5 +108,4 @@ function stop(event) { break; } -} - +} \ No newline at end of file diff --git a/scripts/launch.js b/scripts/launch.js index c27ddb8..26b1a1d 100644 --- a/scripts/launch.js +++ b/scripts/launch.js @@ -1,8 +1,9 @@ /*Add events to webpage*/ function loadScripts() { - document.addEventListener("keydown", move) + document.addEventListener("keydown", getKey) document.addEventListener("keyup", stop) + setInterval(move, 10); document.getElementById("start").addEventListener("click", startGame) }