CSY1018-assignment-2/scripts/enemy.js

51 lines
1.7 KiB
JavaScript
Raw Normal View History

2022-04-28 19:56:09 +00:00
/* enemy spawning logic */
var aliens = [];
var bombs = [];
2022-04-28 19:56:09 +00:00
function spawnEnemy() {
var alien = document.createElement("div");
alien.className = "alien";
alien.id = "alien";
alien.style.zIndex = "2"
2022-04-28 19:56:09 +00:00
while (true) {
alien.style.left = Math.floor(Math.random() * document.body.offsetWidth) + "px";
if (document.elementFromPoint(alien.offsetLeft, alien.offsetTop).classList.contains("alien") == false) {
document.body.appendChild(alien);
aliens.push(alien);
2022-04-28 20:55:14 +00:00
console.log("Alien Spawned")
2022-04-28 19:56:09 +00:00
break;
}
}
}
function spawnBomb() {
var alien = aliens[Math.floor(Math.random() * aliens.length)];
2022-04-28 19:56:09 +00:00
var bomb = document.createElement("div");
bomb.className = "bomb";
bomb.style.left = "28px";
bomb.style.top = "70px";
bomb.style.zIndex = "1";
bomb.style.display = "absolute";
alien.appendChild(bomb);
bombLogic = setInterval(fall, 100);
bombs.push([bomb, bombLogic]);
2022-04-28 20:55:14 +00:00
console.log("Bomb Spawned")
2022-04-28 19:56:09 +00:00
}
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) {
if (document.elementFromPoint(element[0].offsetLeft, element[0].offsetTop).classList.contains("sky") != true) {
if(Math.floor(Math.random() * 4) == 3) {
clearInterval(element[1]);
element[0].className = "explosion";
2022-04-28 20:55:14 +00:00
console.log("Explosion" + bombs.length)
setTimeout(() => {element[0].remove()}, 3000);
bombs.splice(bombs.indexOf(element),1);
console.log("Bomb Despawned" + bombs.length);
}
}
}
}