Merge pull request #4 from jpez-development/player

Player
This commit is contained in:
Joshua Perry 2022-05-06 09:26:03 +01:00 committed by GitHub
commit 1e88921226
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 75 additions and 40 deletions

View File

@ -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">

View File

@ -1 +0,0 @@
/* logic for enemy movement and firing */

View File

@ -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;
}
} }
} }

View File

@ -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;
}
} }
} }
} }

View File

@ -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);

View File

@ -1 +0,0 @@
/*Logic for player lives and firing ability */

View File

@ -1,2 +0,0 @@
/* logic for bombs */