User prompt
add if the player touches the enemy then cancel the powerup
User prompt
add a way to cancel the powerup effect
User prompt
make the powerups spawn more easily and decrease the spawn rate of the danger
User prompt
Make player move freely but still cannot go out of the bounds.
User prompt
move the player with the mouse pointer
Code edit (1 edits merged)
Please save this source code
User prompt
Stellar Blaster
Initial prompt
a space shooter game
/****
* 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 = 4;
self.update = function () {
self.y += self.speed;
};
return self;
});
var EnemyShip = Container.expand(function () {
var self = Container.call(this);
var shipGraphics = self.attachAsset('enemyShip', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 2;
self.fireRate = 120;
self.fireTimer = Math.random() * 120;
self.movePattern = 0;
self.timeAlive = 0;
self.update = function () {
self.timeAlive++;
if (self.movePattern === 0) {
self.y += self.speed;
} else if (self.movePattern === 1) {
self.y += self.speed;
self.x += Math.sin(self.timeAlive * 0.05) * 2;
}
if (self.fireTimer > 0) {
self.fireTimer--;
} else {
self.fire();
self.fireTimer = self.fireRate;
}
};
self.fire = function () {
var bullet = new EnemyBullet();
bullet.x = self.x;
bullet.y = self.y;
enemyBullets.push(bullet);
game.addChild(bullet);
};
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
});
self.speed = 8;
self.fireRate = 15;
self.fireTimer = 0;
self.shield = false;
self.multiShot = false;
self.powerUpTimer = 0;
self.update = function () {
if (self.fireTimer > 0) {
self.fireTimer--;
}
if (self.powerUpTimer > 0) {
self.powerUpTimer--;
if (self.powerUpTimer <= 0) {
self.multiShot = false;
self.shield = false;
shipGraphics.tint = 0xffffff;
}
}
if (self.shield) {
shipGraphics.tint = 0x00ffff;
} else if (self.multiShot) {
shipGraphics.tint = 0xffff00;
}
};
self.fire = function () {
if (self.fireTimer <= 0) {
if (self.multiShot) {
var bullet1 = new PlayerBullet();
bullet1.x = self.x - 20;
bullet1.y = self.y;
playerBullets.push(bullet1);
game.addChild(bullet1);
var bullet2 = new PlayerBullet();
bullet2.x = self.x;
bullet2.y = self.y;
playerBullets.push(bullet2);
game.addChild(bullet2);
var bullet3 = new PlayerBullet();
bullet3.x = self.x + 20;
bullet3.y = self.y;
playerBullets.push(bullet3);
game.addChild(bullet3);
} else {
var bullet = new PlayerBullet();
bullet.x = self.x;
bullet.y = self.y;
playerBullets.push(bullet);
game.addChild(bullet);
}
LK.getSound('shoot').play();
self.fireTimer = self.fireRate;
}
};
return self;
});
var PowerUp = Container.expand(function () {
var self = Container.call(this);
var powerUpGraphics = self.attachAsset('powerUp', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 2;
self.type = 'shield';
self.rotationSpeed = 0.1;
self.update = function () {
self.y += self.speed;
powerUpGraphics.rotation += self.rotationSpeed;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000011
});
/****
* Game Code
****/
var player = null;
var playerBullets = [];
var enemyShips = [];
var enemyBullets = [];
var powerUps = [];
var enemySpawnTimer = 0;
var powerUpSpawnTimer = 0;
var waveTimer = 0;
var difficulty = 1;
var dragNode = null;
var scoreText = new Text2('0', {
size: 60,
fill: 0xFFFFFF
});
scoreText.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreText);
var waveText = new Text2('Wave 1', {
size: 40,
fill: 0xFFFF00
});
waveText.anchor.set(0, 0);
waveText.x = 50;
waveText.y = 50;
LK.gui.topLeft.addChild(waveText);
player = game.addChild(new PlayerShip());
player.x = 1024;
player.y = 2500;
LK.playMusic('bgMusic');
function spawnEnemy() {
var enemy = new EnemyShip();
enemy.x = Math.random() * (2048 - 120) + 60;
enemy.y = -30;
enemy.speed = 2 + difficulty * 0.5;
enemy.movePattern = Math.random() < 0.3 ? 1 : 0;
enemyShips.push(enemy);
game.addChild(enemy);
}
function spawnPowerUp() {
var powerUp = new PowerUp();
powerUp.x = Math.random() * (2048 - 80) + 40;
powerUp.y = -20;
powerUp.type = Math.random() < 0.5 ? 'shield' : 'multiShot';
if (powerUp.type === 'multiShot') {
powerUp.getChildAt(0).tint = 0xffff00;
}
powerUps.push(powerUp);
game.addChild(powerUp);
}
function handleMove(x, y, obj) {
player.x = Math.max(40, Math.min(2008, x));
player.y = Math.max(40, Math.min(2692, y));
}
game.move = handleMove;
game.update = function () {
waveTimer++;
if (waveTimer % 1800 === 0) {
difficulty++;
waveText.setText('Wave ' + difficulty);
}
enemySpawnTimer++;
var spawnRate = Math.max(30, 90 - difficulty * 5);
if (enemySpawnTimer >= spawnRate) {
spawnEnemy();
enemySpawnTimer = 0;
}
powerUpSpawnTimer++;
if (powerUpSpawnTimer >= 900) {
if (Math.random() < 0.3) {
spawnPowerUp();
}
powerUpSpawnTimer = 0;
}
player.fire();
for (var i = playerBullets.length - 1; i >= 0; i--) {
var bullet = playerBullets[i];
if (bullet.lastY === undefined) bullet.lastY = bullet.y;
if (bullet.lastY >= -20 && bullet.y < -20) {
bullet.destroy();
playerBullets.splice(i, 1);
continue;
}
bullet.lastY = bullet.y;
}
for (var i = enemyBullets.length - 1; i >= 0; i--) {
var bullet = enemyBullets[i];
if (bullet.lastY === undefined) bullet.lastY = bullet.y;
if (bullet.lastY <= 2732 && bullet.y > 2732) {
bullet.destroy();
enemyBullets.splice(i, 1);
continue;
}
if (bullet.lastIntersecting === undefined) bullet.lastIntersecting = false;
var currentIntersecting = bullet.intersects(player);
if (!bullet.lastIntersecting && currentIntersecting) {
if (!player.shield) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
return;
} else {
bullet.destroy();
enemyBullets.splice(i, 1);
continue;
}
}
bullet.lastY = bullet.y;
bullet.lastIntersecting = currentIntersecting;
}
for (var i = enemyShips.length - 1; i >= 0; i--) {
var enemy = enemyShips[i];
if (enemy.lastY === undefined) enemy.lastY = enemy.y;
if (enemy.lastY <= 2732 && enemy.y > 2732) {
enemy.destroy();
enemyShips.splice(i, 1);
continue;
}
if (enemy.lastIntersecting === undefined) enemy.lastIntersecting = false;
var currentIntersecting = enemy.intersects(player);
if (!enemy.lastIntersecting && currentIntersecting) {
if (!player.shield) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
return;
} else {
enemy.destroy();
enemyShips.splice(i, 1);
LK.setScore(LK.getScore() + 10);
scoreText.setText(LK.getScore());
continue;
}
}
for (var j = playerBullets.length - 1; j >= 0; j--) {
var bullet = playerBullets[j];
if (bullet.lastEnemyIntersecting === undefined) bullet.lastEnemyIntersecting = [];
if (bullet.lastEnemyIntersecting[i] === undefined) bullet.lastEnemyIntersecting[i] = false;
var bulletEnemyIntersecting = bullet.intersects(enemy);
if (!bullet.lastEnemyIntersecting[i] && bulletEnemyIntersecting) {
LK.getSound('enemyDestroy').play();
enemy.destroy();
enemyShips.splice(i, 1);
bullet.destroy();
playerBullets.splice(j, 1);
LK.setScore(LK.getScore() + 10);
scoreText.setText(LK.getScore());
break;
}
bullet.lastEnemyIntersecting[i] = bulletEnemyIntersecting;
}
if (i < enemyShips.length) {
enemy.lastY = enemy.y;
enemy.lastIntersecting = currentIntersecting;
}
}
for (var i = powerUps.length - 1; i >= 0; i--) {
var powerUp = powerUps[i];
if (powerUp.lastY === undefined) powerUp.lastY = powerUp.y;
if (powerUp.lastY <= 2732 && powerUp.y > 2732) {
powerUp.destroy();
powerUps.splice(i, 1);
continue;
}
if (powerUp.lastIntersecting === undefined) powerUp.lastIntersecting = false;
var currentIntersecting = powerUp.intersects(player);
if (!powerUp.lastIntersecting && currentIntersecting) {
LK.getSound('powerUpCollect').play();
if (powerUp.type === 'shield') {
player.shield = true;
} else if (powerUp.type === 'multiShot') {
player.multiShot = true;
}
player.powerUpTimer = 600;
powerUp.destroy();
powerUps.splice(i, 1);
continue;
}
powerUp.lastY = powerUp.y;
powerUp.lastIntersecting = currentIntersecting;
}
}; ===================================================================
--- original.js
+++ change.js
@@ -201,9 +201,9 @@
game.addChild(powerUp);
}
function handleMove(x, y, obj) {
player.x = Math.max(40, Math.min(2008, x));
- player.y = Math.max(2200, Math.min(2650, y));
+ player.y = Math.max(40, Math.min(2692, y));
}
game.move = handleMove;
game.update = function () {
waveTimer++;
A space ship. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
a bullet for the space ship player . No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
a alien ship for the space shooter game. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
clipart
a powerup for the player that looks like a battery. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat