diff --git a/game.html b/game.html
index 78bafb6..0512622 100644
--- a/game.html
+++ b/game.html
@@ -19,7 +19,7 @@
- Start
+ Click to Play
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..d4db50f 100644
--- a/scripts/control.js
+++ b/scripts/control.js
@@ -1,6 +1,7 @@
/* player movement logic */
-currentKey = 0;
-lastKey = 0;
+var currentKey = 0;
+var lastKey = 0;
+var lives = 3;
function setVars() {
let player = document.getElementById("player");
@@ -94,23 +95,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..11a7094 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 || closestElement.classList.contains("character")) {
+ 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,8 +56,16 @@ 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) {
- document.getElementById("player").style.display = "none";
+ if (elemRect.bottom >= playerRect.top && elemRect.right >= playerRect.left && elemRect.left <= playerRect.right && elemRect.top-40 <= playerRect.bottom) {
+ if (lives <= 1) {
+ document.getElementById("player").className = "character dead";
+ endGame();
+ }
+ else {
+ element.remove();
+ document.getElementsByTagName("li")[lives-1].style.display = "none";
+ lives -= 1;
+ }
}
}
}
\ No newline at end of file
diff --git a/scripts/launch.js b/scripts/launch.js
index 5908283..e69e55e 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,6 @@ function showDisplay(mode) {
function load() {
document.addEventListener("keydown", getKey)
document.addEventListener("keyup", stop)
- setInterval(move, 10);
document.getElementById("start").addEventListener("click", startGame)
showDisplay("none");
@@ -19,11 +19,42 @@ function load() {
/*Starts game functionality*/
function startGame() {
+ document.getElementById("player").className = "character";
+ lives = 3;
showDisplay("block");
document.getElementById("start").style.display = "none";
document.getElementsByClassName("weapon")[0].style.display = "none";
- setInterval(spawnEnemy, 2500);
- setInterval(checkExplosion, 10);
+ intervals.push(setInterval(move, 10));
+ intervals.push(setInterval(spawnEnemy, 2500));
+ setTimeout(intervals.push(setInterval(fall, 50)), 2500);
+ intervals.push(setInterval(checkExplosion, 1));
+}
+
+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();
+ }
+
+ var button = document.getElementById("start");
+ var text = document.createElement("p");
+ text.innerHTML = "GAME OVER";
+ button.appendChild(text);
+ showDisplay("none");
+ button.style.display = "block";
+ text.style.display = "block";
}
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 */
-