commit
1e88921226
|
|
@ -19,7 +19,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="start" id="start">
|
<div class="start" id="start">
|
||||||
Start
|
Click to Play
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="sky">
|
<div class="sky">
|
||||||
|
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
/* logic for enemy movement and firing */
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
/* player movement logic */
|
/* player movement logic */
|
||||||
currentKey = 0;
|
var currentKey = 0;
|
||||||
lastKey = 0;
|
var lastKey = 0;
|
||||||
|
var lives = 3;
|
||||||
|
|
||||||
function setVars() {
|
function setVars() {
|
||||||
let player = document.getElementById("player");
|
let player = document.getElementById("player");
|
||||||
|
|
@ -94,23 +95,26 @@ function stop(event) {
|
||||||
else if (event.keyCode == lastKey) {
|
else if (event.keyCode == lastKey) {
|
||||||
lastKey = 0;
|
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;
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -30,24 +30,20 @@ function spawnBomb() {
|
||||||
bomb.style.zIndex = "1";
|
bomb.style.zIndex = "1";
|
||||||
bomb.style.display = "absolute";
|
bomb.style.display = "absolute";
|
||||||
alien[0].appendChild(bomb);
|
alien[0].appendChild(bomb);
|
||||||
bombLogic = setInterval(fall, 100);
|
bombs.push(bomb);
|
||||||
bombs.push([bomb, bombLogic]);
|
|
||||||
console.log("Bomb Spawned")
|
console.log("Bomb Spawned")
|
||||||
}
|
}
|
||||||
|
|
||||||
/*Makes a random bomb fall a set amount and explodes if colliding with the floor*/
|
/*Makes a random bomb fall a set amount and explodes if colliding with the floor*/
|
||||||
function fall() {
|
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) {
|
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 (!closestElement.classList.contains("sky") && !closestElement.classList.contains("alien") && !closestElement.classList.contains("bomb") && !closestElement.classList.contains("explosion")) {
|
||||||
if(Math.floor(Math.random() * 2) == 1) {
|
if(Math.floor(Math.random() * 100) < 10 || element.bottom >= document.body.bottom || closestElement.classList.contains("character")) {
|
||||||
clearInterval(element[1]);
|
element.className = "explosion";
|
||||||
element[0].className = "explosion";
|
|
||||||
console.log("Explosion")
|
console.log("Explosion")
|
||||||
setTimeout(() => {element[0].remove()}, 3000);
|
setTimeout(() => {element.remove()}, 3000);
|
||||||
bombs.splice(bombs.indexOf(element),1);
|
bombs.splice(bombs.indexOf(element),1);
|
||||||
console.log("Bomb Despawned");
|
console.log("Bomb Despawned");
|
||||||
}
|
}
|
||||||
|
|
@ -60,8 +56,16 @@ function checkExplosion() {
|
||||||
for (let element of document.getElementsByClassName("explosion")) {
|
for (let element of document.getElementsByClassName("explosion")) {
|
||||||
var elemRect = element.getBoundingClientRect();
|
var elemRect = element.getBoundingClientRect();
|
||||||
var playerRect = document.getElementById("player").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").style.display = "none";
|
if (lives <= 1) {
|
||||||
|
document.getElementById("player").className = "character dead";
|
||||||
|
endGame();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
element.remove();
|
||||||
|
document.getElementsByTagName("li")[lives-1].style.display = "none";
|
||||||
|
lives -= 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
/*Add events to webpage*/
|
/*Add events to webpage*/
|
||||||
|
var intervals = []
|
||||||
|
|
||||||
function showDisplay(mode) {
|
function showDisplay(mode) {
|
||||||
for (let element of document.body.getElementsByTagName("*")) {
|
for (let element of document.body.getElementsByTagName("*")) {
|
||||||
|
|
@ -10,7 +11,6 @@ function showDisplay(mode) {
|
||||||
function load() {
|
function load() {
|
||||||
document.addEventListener("keydown", getKey)
|
document.addEventListener("keydown", getKey)
|
||||||
document.addEventListener("keyup", stop)
|
document.addEventListener("keyup", stop)
|
||||||
setInterval(move, 10);
|
|
||||||
document.getElementById("start").addEventListener("click", startGame)
|
document.getElementById("start").addEventListener("click", startGame)
|
||||||
|
|
||||||
showDisplay("none");
|
showDisplay("none");
|
||||||
|
|
@ -19,11 +19,42 @@ function load() {
|
||||||
|
|
||||||
/*Starts game functionality*/
|
/*Starts game functionality*/
|
||||||
function startGame() {
|
function startGame() {
|
||||||
|
document.getElementById("player").className = "character";
|
||||||
|
lives = 3;
|
||||||
showDisplay("block");
|
showDisplay("block");
|
||||||
document.getElementById("start").style.display = "none";
|
document.getElementById("start").style.display = "none";
|
||||||
document.getElementsByClassName("weapon")[0].style.display = "none";
|
document.getElementsByClassName("weapon")[0].style.display = "none";
|
||||||
setInterval(spawnEnemy, 2500);
|
intervals.push(setInterval(move, 10));
|
||||||
setInterval(checkExplosion, 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);
|
document.addEventListener("DOMContentLoaded", load);
|
||||||
|
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
/*Logic for player lives and firing ability */
|
|
||||||
|
|
@ -1,2 +0,0 @@
|
||||||
/* logic for bombs */
|
|
||||||
|
|
||||||
Loading…
Reference in New Issue