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 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.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;
};
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 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)) {
// Destroy both bullet and enemy
LK.setScore(LK.getScore() + 10);
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;
break;
}
}
if (!bulletHit) {
bullet.lastY = bullet.y;
}
}
// Update and check enemies
for (var k = enemyShips.length - 1; k >= 0; k--) {
var enemy = enemyShips[k];
// 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;
}
// 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
@@ -1,6 +1,196 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+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.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;
+ };
+ 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: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x000011
+});
+
+/****
+* Game Code
+****/
+// Game variables
+var playerShip;
+var playerBullets = [];
+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)) {
+ // Destroy both bullet and enemy
+ LK.setScore(LK.getScore() + 10);
+ 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;
+ break;
+ }
+ }
+ if (!bulletHit) {
+ bullet.lastY = bullet.y;
+ }
+ }
+ // Update and check enemies
+ for (var k = enemyShips.length - 1; k >= 0; k--) {
+ var enemy = enemyShips[k];
+ // 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;
+ }
+ // 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');
\ No newline at end of file
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