From 4c744b826907f58d98b5162fa5cc85786f361452 Mon Sep 17 00:00:00 2001 From: Joshua Perry <45966243+jpez-development@users.noreply.github.com> Date: Fri, 29 Apr 2022 11:11:54 +0100 Subject: [PATCH 1/5] added sprite deletion at end game, deth animation --- scripts/agent.js | 1 - scripts/control.js | 37 ++++++++++++++++++++----------------- scripts/enemy.js | 3 ++- scripts/launch.js | 26 +++++++++++++++++++++++--- scripts/player.js | 1 - scripts/projectile.js | 2 -- 6 files changed, 45 insertions(+), 25 deletions(-) delete mode 100644 scripts/agent.js delete mode 100644 scripts/player.js delete mode 100644 scripts/projectile.js diff --git a/scripts/agent.js b/scripts/agent.js deleted file mode 100644 index 1c73809..0000000 --- a/scripts/agent.js +++ /dev/null @@ -1 +0,0 @@ -/* logic for enemy movement and firing */ \ No newline at end of file diff --git a/scripts/control.js b/scripts/control.js index dfdaf67..15e52c3 100644 --- a/scripts/control.js +++ b/scripts/control.js @@ -94,23 +94,26 @@ function stop(event) { else if (event.keyCode == lastKey) { lastKey = 0; } - switch(event.keyCode) { - case 38: /*Up*/ - case 87: /*W*/ - player.className = "character stand up"; - break; - case 40: /*Down*/ - case 83: /*S*/ - player.className = "character stand down"; - break; - case 37: /*Left*/ - case 65: /*A*/ - player.className = "character stand left"; - break; - case 39: /*Right*/ - case 68: /*D*/ - player.className = "character stand right"; - break; + if (!player.classList.contains("dead")) { + switch(event.keyCode) { + case 38: /*Up*/ + case 87: /*W*/ + player.className = "character stand up"; + break; + case 40: /*Down*/ + case 83: /*S*/ + player.className = "character stand down"; + break; + case 37: /*Left*/ + case 65: /*A*/ + player.className = "character stand left"; + break; + case 39: /*Right*/ + case 68: /*D*/ + player.className = "character stand right"; + break; + + } } } \ No newline at end of file diff --git a/scripts/enemy.js b/scripts/enemy.js index 599f758..3beb76f 100644 --- a/scripts/enemy.js +++ b/scripts/enemy.js @@ -61,7 +61,8 @@ function checkExplosion() { var elemRect = element.getBoundingClientRect(); var playerRect = document.getElementById("player").getBoundingClientRect(); if (elemRect.bottom >= playerRect.top && elemRect.right >= playerRect.left && elemRect.left <= playerRect.right && elemRect.top <= playerRect.bottom) { - document.getElementById("player").style.display = "none"; + document.getElementById("player").className = "character dead"; + endGame(); } } } \ No newline at end of file diff --git a/scripts/launch.js b/scripts/launch.js index 5908283..3369e07 100644 --- a/scripts/launch.js +++ b/scripts/launch.js @@ -1,4 +1,5 @@ /*Add events to webpage*/ +var intervals = [] function showDisplay(mode) { for (let element of document.body.getElementsByTagName("*")) { @@ -10,7 +11,7 @@ function showDisplay(mode) { function load() { document.addEventListener("keydown", getKey) document.addEventListener("keyup", stop) - setInterval(move, 10); + intervals.push(setInterval(move, 10)); document.getElementById("start").addEventListener("click", startGame) showDisplay("none"); @@ -22,8 +23,27 @@ function startGame() { showDisplay("block"); document.getElementById("start").style.display = "none"; document.getElementsByClassName("weapon")[0].style.display = "none"; - setInterval(spawnEnemy, 2500); - setInterval(checkExplosion, 10); + intervals.push(setInterval(spawnEnemy, 2500)); + intervals.push(setInterval(checkExplosion, 10)); +} + +function endGame() { + for (let item of intervals) { + clearInterval(item); + } + + for (let item of document.getElementsByClassName("bomb")) { + item.remove(); + } + + for (let item of document.getElementsByClassName("explosions")) { + item.remove(); + } + + for (let alien of aliens) { + clearInterval(alien[1]); + alien[0].remove(); + } } document.addEventListener("DOMContentLoaded", load); diff --git a/scripts/player.js b/scripts/player.js deleted file mode 100644 index 47eeaa5..0000000 --- a/scripts/player.js +++ /dev/null @@ -1 +0,0 @@ -/*Logic for player lives and firing ability */ \ No newline at end of file diff --git a/scripts/projectile.js b/scripts/projectile.js deleted file mode 100644 index 4a0d746..0000000 --- a/scripts/projectile.js +++ /dev/null @@ -1,2 +0,0 @@ -/* logic for bombs */ - From 729056c2007008f1742228295fe62b34d2ce9dd8 Mon Sep 17 00:00:00 2001 From: Joshua Perry <45966243+jpez-development@users.noreply.github.com> Date: Fri, 29 Apr 2022 11:44:48 +0100 Subject: [PATCH 2/5] random height to bombs, adjusted death trigger --- scripts/enemy.js | 20 ++++++++------------ scripts/launch.js | 3 ++- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/scripts/enemy.js b/scripts/enemy.js index 3beb76f..8759e1c 100644 --- a/scripts/enemy.js +++ b/scripts/enemy.js @@ -30,28 +30,24 @@ function spawnBomb() { bomb.style.zIndex = "1"; bomb.style.display = "absolute"; alien[0].appendChild(bomb); - bombLogic = setInterval(fall, 100); - bombs.push([bomb, bombLogic]); + bombs.push(bomb); console.log("Bomb Spawned") } /*Makes a random bomb fall a set amount and explodes if colliding with the floor*/ function fall() { - var bomb = bombs[Math.floor(Math.random() * bombs.length)]; - bomb[0].style.top = (bomb[0].offsetTop + 10) + "px"; - for (let element of bombs) { - var closestElement = document.elementFromPoint(element[0].offsetLeft, element[0].offsetTop+10); + element.style.top = (element.offsetTop + 10) + "px"; + var closestElement = document.elementFromPoint(element.offsetLeft, element.offsetTop+10); if (!closestElement.classList.contains("sky") && !closestElement.classList.contains("alien") && !closestElement.classList.contains("bomb") && !closestElement.classList.contains("explosion")) { - if(Math.floor(Math.random() * 2) == 1) { - clearInterval(element[1]); - element[0].className = "explosion"; + if(Math.floor(Math.random() * 100) < 10 || element.bottom >= document.body.bottom) { + element.className = "explosion"; console.log("Explosion") - setTimeout(() => {element[0].remove()}, 3000); + setTimeout(() => {element.remove()}, 3000); bombs.splice(bombs.indexOf(element),1); console.log("Bomb Despawned"); } - } + } } } @@ -60,7 +56,7 @@ function checkExplosion() { for (let element of document.getElementsByClassName("explosion")) { var elemRect = element.getBoundingClientRect(); var playerRect = document.getElementById("player").getBoundingClientRect(); - if (elemRect.bottom >= playerRect.top && elemRect.right >= playerRect.left && elemRect.left <= playerRect.right && elemRect.top <= playerRect.bottom) { + if (elemRect.bottom >= playerRect.top && elemRect.right >= playerRect.left && elemRect.left <= playerRect.right && elemRect.top-40 <= playerRect.bottom) { document.getElementById("player").className = "character dead"; endGame(); } diff --git a/scripts/launch.js b/scripts/launch.js index 3369e07..98ce956 100644 --- a/scripts/launch.js +++ b/scripts/launch.js @@ -24,7 +24,8 @@ function startGame() { document.getElementById("start").style.display = "none"; document.getElementsByClassName("weapon")[0].style.display = "none"; intervals.push(setInterval(spawnEnemy, 2500)); - intervals.push(setInterval(checkExplosion, 10)); + setTimeout(intervals.push(setInterval(fall, 50)), 2500); + intervals.push(setInterval(checkExplosion, 1)); } function endGame() { From f3e613810be63bf01187013c00cb3ce43098c5b7 Mon Sep 17 00:00:00 2001 From: Joshua Perry <45966243+jpez-development@users.noreply.github.com> Date: Fri, 29 Apr 2022 12:10:37 +0100 Subject: [PATCH 3/5] added restart functionality --- game.html | 2 +- scripts/enemy.js | 2 +- scripts/launch.js | 11 ++++++++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/game.html b/game.html index 78bafb6..0512622 100644 --- a/game.html +++ b/game.html @@ -19,7 +19,7 @@