User prompt
make the player have 10x as much health
User prompt
add bosses at every 1000 score
User prompt
make when the enimeys retch the other edge it instant killes the player
User prompt
make the player have a health bat
User prompt
make the enimeys shoot slower
User prompt
make healthy bars over etch enimey
User prompt
make the enimeys shoot faster
User prompt
make the enemys shoot at me
Code edit (1 edits merged)
Please save this source code
User prompt
Space Shooter
Initial prompt
sooter
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var EnemyBullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('enemyBullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 8; self.update = function () { self.y += self.speed; }; return self; }); var EnemyShip = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemyShip', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 3; self.movePattern = Math.random() < 0.5 ? 'straight' : 'zigzag'; self.zigzagTimer = 0; self.zigzagDirection = Math.random() < 0.5 ? -1 : 1; self.shootTimer = Math.random() * 60 + 60; // Random initial shoot delay self.maxHealth = 3; self.health = self.maxHealth; // Create health bar background var healthBarBg = self.attachAsset('healthBarBg', { anchorX: 0.5, anchorY: 0.5 }); healthBarBg.y = -50; // Create health bar fill var healthBarFill = self.attachAsset('healthBarFill', { anchorX: 0.5, anchorY: 0.5 }); healthBarFill.y = -50; self.healthBarFill = healthBarFill; // Method to update health bar self.updateHealthBar = function () { var healthPercent = self.health / self.maxHealth; self.healthBarFill.scaleX = healthPercent; if (healthPercent > 0.6) { self.healthBarFill.tint = 0x00ff00; // Green } else if (healthPercent > 0.3) { self.healthBarFill.tint = 0xffff00; // Yellow } else { self.healthBarFill.tint = 0xff0000; // Red } }; self.update = function () { self.y += self.speed; if (self.movePattern === 'zigzag') { self.zigzagTimer += 1; if (self.zigzagTimer % 60 === 0) { self.zigzagDirection *= -1; } self.x += self.zigzagDirection * 2; } // Keep enemy within screen bounds if (self.x < 50) self.x = 50; if (self.x > 1998) self.x = 1998; // Handle shooting self.shootTimer--; if (self.shootTimer <= 0) { self.shootTimer = Math.random() * 60 + 30; // Faster random shoot interval self.shouldShoot = true; } }; return self; }); var PlayerBullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('playerBullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = -12; self.update = function () { self.y += self.speed; }; return self; }); var PlayerShip = Container.expand(function () { var self = Container.call(this); var shipGraphics = self.attachAsset('playerShip', { anchorX: 0.5, anchorY: 0.5 }); return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000011 }); /**** * Game Code ****/ // Game variables var playerShip; var playerBullets = []; var enemyBullets = []; var enemyShips = []; var difficultyLevel = 1; var enemySpawnRate = 120; // frames between spawns var bulletFireRate = 15; // frames between shots var dragNode = null; // UI Elements var scoreTxt = new Text2('Score: 0', { size: 60, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Initialize player ship playerShip = game.addChild(new PlayerShip()); playerShip.x = 1024; // Center horizontally playerShip.y = 2400; // Near bottom of screen // Update score display function updateScore() { scoreTxt.setText('Score: ' + LK.getScore()); } // Handle movement function handleMove(x, y, obj) { if (dragNode) { dragNode.x = x; dragNode.y = y; // Keep player within screen bounds if (dragNode.x < 40) dragNode.x = 40; if (dragNode.x > 2008) dragNode.x = 2008; if (dragNode.y < 200) dragNode.y = 200; if (dragNode.y > 2600) dragNode.y = 2600; } } // Event handlers game.move = handleMove; game.down = function (x, y, obj) { dragNode = playerShip; handleMove(x, y, obj); }; game.up = function (x, y, obj) { dragNode = null; }; // Main game update loop game.update = function () { // Fire player bullets if (LK.ticks % bulletFireRate === 0) { var newBullet = new PlayerBullet(); newBullet.x = playerShip.x; newBullet.y = playerShip.y - 60; newBullet.lastY = newBullet.y; playerBullets.push(newBullet); game.addChild(newBullet); LK.getSound('shoot').play(); } // Spawn enemies if (LK.ticks % enemySpawnRate === 0) { var newEnemy = new EnemyShip(); newEnemy.x = Math.random() * 1800 + 124; // Random x position within bounds newEnemy.y = -50; newEnemy.lastY = newEnemy.y; newEnemy.lastIntersecting = false; enemyShips.push(newEnemy); game.addChild(newEnemy); } // Update and check player bullets for (var i = playerBullets.length - 1; i >= 0; i--) { var bullet = playerBullets[i]; // Remove bullets that go off screen if (bullet.lastY >= -25 && bullet.y < -25) { bullet.destroy(); playerBullets.splice(i, 1); continue; } // Check bullet-enemy collisions var bulletHit = false; for (var j = enemyShips.length - 1; j >= 0; j--) { var enemy = enemyShips[j]; if (bullet.intersects(enemy)) { // Damage enemy enemy.health--; enemy.updateHealthBar(); LK.setScore(LK.getScore() + 5); updateScore(); // Flash effect on enemy LK.effects.flashObject(enemy, 0xffffff, 200); bullet.destroy(); playerBullets.splice(i, 1); bulletHit = true; // Check if enemy is destroyed if (enemy.health <= 0) { LK.setScore(LK.getScore() + 5); // Bonus points for destroying enemy updateScore(); LK.getSound('enemyDestroy').play(); enemy.destroy(); enemyShips.splice(j, 1); } break; } } if (!bulletHit) { bullet.lastY = bullet.y; } } // Update and check enemies for (var k = enemyShips.length - 1; k >= 0; k--) { var enemy = enemyShips[k]; // Create enemy bullet if enemy should shoot if (enemy.shouldShoot) { var newEnemyBullet = new EnemyBullet(); newEnemyBullet.x = enemy.x; newEnemyBullet.y = enemy.y + 40; newEnemyBullet.lastY = newEnemyBullet.y; newEnemyBullet.lastIntersecting = false; enemyBullets.push(newEnemyBullet); game.addChild(newEnemyBullet); enemy.shouldShoot = false; } // Remove enemies that go off screen if (enemy.lastY <= 2780 && enemy.y > 2780) { enemy.destroy(); enemyShips.splice(k, 1); continue; } // Check player-enemy collision var currentIntersecting = enemy.intersects(playerShip); if (!enemy.lastIntersecting && currentIntersecting) { // Game over LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); return; } enemy.lastY = enemy.y; enemy.lastIntersecting = currentIntersecting; } // Update and check enemy bullets for (var m = enemyBullets.length - 1; m >= 0; m--) { var enemyBullet = enemyBullets[m]; // Remove bullets that go off screen if (enemyBullet.lastY <= 2780 && enemyBullet.y > 2780) { enemyBullet.destroy(); enemyBullets.splice(m, 1); continue; } // Check enemy bullet-player collision var bulletPlayerIntersecting = enemyBullet.intersects(playerShip); if (!enemyBullet.lastIntersecting && bulletPlayerIntersecting) { // Game over LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); return; } enemyBullet.lastY = enemyBullet.y; enemyBullet.lastIntersecting = bulletPlayerIntersecting; } // Increase difficulty over time if (LK.ticks % 1800 === 0) { // Every 30 seconds difficultyLevel++; if (enemySpawnRate > 30) { enemySpawnRate -= 10; } if (bulletFireRate > 8 && difficultyLevel % 3 === 0) { bulletFireRate -= 1; } } }; // Start background music LK.playMusic('gameMusic');
===================================================================
--- original.js
+++ change.js
@@ -28,8 +28,35 @@
self.movePattern = Math.random() < 0.5 ? 'straight' : 'zigzag';
self.zigzagTimer = 0;
self.zigzagDirection = Math.random() < 0.5 ? -1 : 1;
self.shootTimer = Math.random() * 60 + 60; // Random initial shoot delay
+ self.maxHealth = 3;
+ self.health = self.maxHealth;
+ // Create health bar background
+ var healthBarBg = self.attachAsset('healthBarBg', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ healthBarBg.y = -50;
+ // Create health bar fill
+ var healthBarFill = self.attachAsset('healthBarFill', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ healthBarFill.y = -50;
+ self.healthBarFill = healthBarFill;
+ // Method to update health bar
+ self.updateHealthBar = function () {
+ var healthPercent = self.health / self.maxHealth;
+ self.healthBarFill.scaleX = healthPercent;
+ if (healthPercent > 0.6) {
+ self.healthBarFill.tint = 0x00ff00; // Green
+ } else if (healthPercent > 0.3) {
+ self.healthBarFill.tint = 0xffff00; // Yellow
+ } else {
+ self.healthBarFill.tint = 0xff0000; // Red
+ }
+ };
self.update = function () {
self.y += self.speed;
if (self.movePattern === 'zigzag') {
self.zigzagTimer += 1;
@@ -161,19 +188,26 @@
var bulletHit = false;
for (var j = enemyShips.length - 1; j >= 0; j--) {
var enemy = enemyShips[j];
if (bullet.intersects(enemy)) {
- // Destroy both bullet and enemy
- LK.setScore(LK.getScore() + 10);
+ // Damage enemy
+ enemy.health--;
+ enemy.updateHealthBar();
+ LK.setScore(LK.getScore() + 5);
updateScore();
- LK.getSound('enemyDestroy').play();
// Flash effect on enemy
LK.effects.flashObject(enemy, 0xffffff, 200);
bullet.destroy();
playerBullets.splice(i, 1);
- enemy.destroy();
- enemyShips.splice(j, 1);
bulletHit = true;
+ // Check if enemy is destroyed
+ if (enemy.health <= 0) {
+ LK.setScore(LK.getScore() + 5); // Bonus points for destroying enemy
+ updateScore();
+ LK.getSound('enemyDestroy').play();
+ enemy.destroy();
+ enemyShips.splice(j, 1);
+ }
break;
}
}
if (!bulletHit) {
boss enimey space ship. In-Game asset. 2d. High contrast. No shadows
enimy space ship. In-Game asset. 2d. High contrast. No shadows
player space ship. In-Game asset. 2d. High contrast. No shadows
bullet. In-Game asset. 2d. High contrast. No shadows
shot gun. In-Game asset. 2d. High contrast. No shadows
first aid kit. In-Game asset. 2d. High contrast. No shadows