From cb570c4c5794231005ae7203ec4069a6ab70bf1f Mon Sep 17 00:00:00 2001 From: sfja Date: Mon, 8 Sep 2025 00:27:26 +0200 Subject: [PATCH] remove old reference --- space_invaders.js | 160 ---------------------------------------------- 1 file changed, 160 deletions(-) delete mode 100644 space_invaders.js diff --git a/space_invaders.js b/space_invaders.js deleted file mode 100644 index b606c4b..0000000 --- a/space_invaders.js +++ /dev/null @@ -1,160 +0,0 @@ -import * as lib from "./lib/lib.js" - -const playerSprite = await lib.texture.loadImage("assets/player.png", 64, 64); -const bulletSprite = await lib.texture.loadImage("assets/bullet1.png", 24, 24); -const enemySprite = await lib.texture.loadImage("assets/enemy1.png", 48, 48); - -const explosionSprites = [ - await lib.texture.loadImage(`assets/explosion1.png`, 64, 64), - await lib.texture.loadImage(`assets/explosion2.png`, 64, 64), - await lib.texture.loadImage(`assets/explosion3.png`, 64, 64), - await lib.texture.loadImage(`assets/explosion4.png`, 64, 64), -]; - -const enemyBullet = bulletSprite.copy(); - -playerSprite.adjustColor(1, 0.5, 0); -bulletSprite.rotate(Math.PI); -enemySprite.adjustColor(0.2, 0.2, 1); -enemyBullet.adjustColor(0, 1, 0); - -for (const texture of explosionSprites) { - texture.adjustColor(1, 0.75, 0); -} - -const playerSpeed = 300; -const bulletSpeed = 400; - -let playerX = 0; - -let bullets = []; -const bulletCoolDown = 0.5; -let bulletCooldownTimer = bulletCoolDown; - -let enemies = []; - -let explosions = []; -const explosionDuration = 0.5; - -function loop() { - tick(); - render(); -} - -function tick() { - bulletCooldownTimer += lib.frameDeltaT; - - if (enemies.length === 0) { - spawnEnemies(); - } - - updatePlayerMovement(); - updateBulletMovement(); - handleBulletCollisions(); - updateExplosions(); -} - -function updatePlayerMovement() { - const goLeft = lib.isPressed("ArrowLeft"); - const goRight = lib.isPressed("ArrowRight"); - - if (goLeft && !goRight) { - playerX -= playerSpeed * lib.frameDeltaT; - if (playerX < 0) { - playerX = 0; - } - } else if (goRight && !goLeft) { - playerX += playerSpeed * lib.frameDeltaT; - if (playerX >= lib.canvas.width - playerSprite.width) { - playerX = lib.canvas.width - playerSprite.width; - } - } -} - -function updateBulletMovement() { - for (const bullet of bullets) { - bullet.y -= bulletSpeed * lib.frameDeltaT; - } -} - -function handleBulletCollisions() { - let deadEnemies = [] - let deadBullets = [] - for (let enemyIdx = 0; enemyIdx < enemies.length; ++enemyIdx) { - - const enemy = enemies[enemyIdx]; - - for (let bulletIdx = 0; bulletIdx < bullets.length; ++bulletIdx) { - const bullet = bullets[bulletIdx]; - - if (bullet.x < enemy.x + 48 && bullet.x + 24 >= enemy.x - && bullet.y < enemy.y + 48 && bullet.y + 24 >= enemy.y) { - deadBullets.push(bulletIdx); - deadEnemies.push(enemyIdx); - explosions.push({ x: enemy.x + 24, y: enemy.y + 24, time: 0 }); - } - - } - } - for (const i of deadEnemies.toReversed()) { - enemies.splice(i, 1) - } - for (const i of deadBullets.toReversed()) { - bullets.splice(i, 1) - } -} - -function updateExplosions() { - let deadExplosions = [] - for (let i = 0; i < explosions.length; ++i) { - const explosion = explosions[i]; - explosion.time += lib.frameDeltaT; - if (explosion.time > explosionDuration) { - deadExplosions.push(i); - } - } - for (const i of deadExplosions.toReversed()) { - explosions.splice(i, 1) - } -} - -function spawnEnemies() { - for (let y = 0; y < 2; ++y) { - for (let x = 0; x < 5; ++x) { - enemies.push({ x: 10 + 100 * x, y: y * 80 }); - } - } -} - -function render() { - const cx = lib.canvas; - - cx.clear("black"); - - cx.putTexture(playerSprite, playerX, 300); - - for (const bullet of bullets) { - cx.putTexture(bulletSprite, bullet.x, bullet.y); - } - - for (const enemy of enemies) { - cx.putTexture(enemySprite, enemy.x, enemy.y); - } - - for (const explosion of explosions) { - const idx = Math.floor(explosionSprites.length * (explosion.time / explosionDuration)); - const texture = explosionSprites[idx]; - cx.putTexture(texture, explosion.x - 32, explosion.y - 32); - } -} - -lib.onPress(" ", () => { - if (bulletCooldownTimer < bulletCoolDown) - return; - bullets.push({ x: playerX + 20, y: 300 }); - bulletCooldownTimer = 0; -}) - -lib.startGame(loop); - -