User prompt
UFO level up when she dies
User prompt
No bullets when the spaceship dies
User prompt
spaceship emerges from ufon
User prompt
Adjust the game difficulty according to the level
User prompt
make the game harder
User prompt
UFOs, slow down bullet speeds
User prompt
Spaceship level up after 3 hits
User prompt
Spaceship level up after 10 hits
User prompt
have a background in the game
User prompt
UFOs come out of the spaceship ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
uav ufo delete from game
User prompt
Small UFOs should be separated from the big UFO.
User prompt
Let there be one big UFO, it can only move left and right, and it can level up in 30 hits.
User prompt
Let there be 1 large UFO
User prompt
UAV UFO moves left and right above the screen ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
UAV UFO appears on the screen
User prompt
UFO bullets should decrease
User prompt
Let me have control of the shooting
User prompt
My dears, I can change your picture.
User prompt
There should be 3 lives in the game and they should be pictured at the bottom left of the screen.
User prompt
Let the game be level 1 10
User prompt
Let the game be level 10
User prompt
have a background in the game
User prompt
Let me control the plane
User prompt
let there be music in the 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 = 6;
self.velocityX = 0;
self.velocityY = 0;
self.setVelocity = function (vx, vy) {
self.velocityX = vx;
self.velocityY = vy;
};
self.update = function () {
self.x += self.velocityX;
self.y += self.velocityY;
};
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 PlayerTank = Container.expand(function () {
var self = Container.call(this);
var tankGraphics = self.attachAsset('playerTank', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 8;
self.fireRate = 8; // Faster firing for level 10
self.fireTimer = 0;
self.update = function () {
if (self.fireTimer > 0) {
self.fireTimer--;
}
};
self.canFire = function () {
return self.fireTimer <= 0;
};
self.fire = function () {
if (self.canFire()) {
self.fireTimer = self.fireRate;
return true;
}
return false;
};
return self;
});
var Spaceship = Container.expand(function () {
var self = Container.call(this);
var spaceshipGraphics = self.attachAsset('spaceship', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 4; // Faster movement for level 10
self.direction = 1;
self.deployTimer = 0;
self.deployRate = 120; // Deploy UAVs more frequently for level 10
self.movePattern = Math.random() < 0.5 ? 'horizontal' : 'diagonal';
self.update = function () {
if (self.movePattern === 'horizontal') {
self.x += self.speed * self.direction;
if (self.x > 1900 || self.x < 148) {
self.direction *= -1;
}
} else {
self.x += self.speed * self.direction;
self.y += self.speed * 0.5;
if (self.x > 1900 || self.x < 148) {
self.direction *= -1;
}
}
self.deployTimer++;
if (self.deployTimer >= self.deployRate) {
self.deployTimer = 0;
return true;
}
return false;
};
return self;
});
var UAV = Container.expand(function () {
var self = Container.call(this);
var uavGraphics = self.attachAsset('uav', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 6; // Faster UAV movement for level 10
self.targetX = 0;
self.targetY = 0;
self.setTarget = function (x, y) {
self.targetX = x;
self.targetY = y;
};
self.update = function () {
var dx = self.targetX - self.x;
var dy = self.targetY - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > 0) {
self.x += dx / distance * self.speed;
self.y += dy / distance * self.speed;
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000033
});
/****
* Game Code
****/
var background = LK.getAsset('background', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 0
});
game.addChild(background);
var player = new PlayerTank();
player.x = 1024;
player.y = 2600;
game.addChild(player);
var playerBullets = [];
var spaceships = [];
var uavs = [];
var enemyBullets = [];
var spawnTimer = 0;
var spawnRate = 30; // Much faster spawning for level 10
var difficultyTimer = 0;
var enemyFireTimer = 0;
var enemyFireRate = 20; // Much faster enemy firing for level 10
var scoreTxt = new Text2('Score: 0', {
size: 60,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
function updateScore() {
scoreTxt.setText('Score: ' + LK.getScore());
}
function spawnSpaceship() {
var spaceship = new Spaceship();
spaceship.x = Math.random() * 1800 + 124;
spaceship.y = -50;
spaceships.push(spaceship);
game.addChild(spaceship);
}
function deployUAV(fromX, fromY) {
var uav = new UAV();
uav.x = fromX;
uav.y = fromY;
uav.setTarget(player.x, player.y);
uavs.push(uav);
game.addChild(uav);
LK.getSound('uavDeploy').play();
}
function fireEnemyBullet(fromX, fromY) {
var bullet = new EnemyBullet();
bullet.x = fromX;
bullet.y = fromY;
bullet.setVelocity(0, 6);
enemyBullets.push(bullet);
game.addChild(bullet);
}
game.down = function (x, y, obj) {
// Move player to touch position
player.x = x;
// Keep player within screen boundaries
if (player.x > 1988) {
player.x = 1988;
}
if (player.x < 60) {
player.x = 60;
}
// Fire bullet when touching screen
if (player.fire()) {
var bullet = new PlayerBullet();
bullet.x = player.x;
bullet.y = player.y - 40;
playerBullets.push(bullet);
game.addChild(bullet);
LK.getSound('playerShoot').play();
}
};
game.move = function (x, y, obj) {
// Move player horizontally based on touch/mouse position
player.x = x;
// Keep player within screen boundaries
if (player.x > 1988) {
player.x = 1988;
}
if (player.x < 60) {
player.x = 60;
}
};
game.up = function (x, y, obj) {};
game.update = function () {
// Player movement is now handled by touch/mouse controls
// Spawn spaceships - Level 10: spawn multiple at once
spawnTimer++;
if (spawnTimer >= spawnRate) {
spawnTimer = 0;
spawnSpaceship();
// Level 10: spawn additional spaceships
if (Math.random() < 0.7) {
spawnSpaceship();
}
if (Math.random() < 0.4) {
spawnSpaceship();
}
}
// Level 10: No difficulty progression needed - already at max difficulty
difficultyTimer++;
if (difficultyTimer >= 1800) {
// Every 30 seconds - Level 10: spawn bonus UAVs
difficultyTimer = 0;
if (spaceships.length > 0) {
var bonusSpaceship = spaceships[Math.floor(Math.random() * spaceships.length)];
deployUAV(bonusSpaceship.x, bonusSpaceship.y);
}
}
// Player auto-fire
if (player.fire()) {
var bullet = new PlayerBullet();
bullet.x = player.x;
bullet.y = player.y - 40;
playerBullets.push(bullet);
game.addChild(bullet);
LK.getSound('playerShoot').play();
}
// Enemy firing - Level 10: multiple spaceships fire at once
enemyFireTimer++;
if (enemyFireTimer >= enemyFireRate) {
enemyFireTimer = 0;
if (spaceships.length > 0) {
// Level 10: up to 3 spaceships fire simultaneously
var firersCount = Math.min(3, spaceships.length);
for (var fireIdx = 0; fireIdx < firersCount; fireIdx++) {
var randomSpaceship = spaceships[Math.floor(Math.random() * spaceships.length)];
fireEnemyBullet(randomSpaceship.x, randomSpaceship.y);
// Level 10: some spaceships fire spread bullets
if (Math.random() < 0.5) {
var spreadBullet1 = new EnemyBullet();
spreadBullet1.x = randomSpaceship.x;
spreadBullet1.y = randomSpaceship.y;
spreadBullet1.setVelocity(-3, 6);
enemyBullets.push(spreadBullet1);
game.addChild(spreadBullet1);
var spreadBullet2 = new EnemyBullet();
spreadBullet2.x = randomSpaceship.x;
spreadBullet2.y = randomSpaceship.y;
spreadBullet2.setVelocity(3, 6);
enemyBullets.push(spreadBullet2);
game.addChild(spreadBullet2);
}
}
}
}
// Update player bullets
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;
}
// Update spaceships
for (var j = spaceships.length - 1; j >= 0; j--) {
var spaceship = spaceships[j];
if (spaceship.lastY === undefined) spaceship.lastY = spaceship.y;
var shouldDeploy = spaceship.update();
if (shouldDeploy) {
deployUAV(spaceship.x, spaceship.y);
}
if (spaceship.lastY < 2732 && spaceship.y >= 2732) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
return;
}
spaceship.lastY = spaceship.y;
}
// Update UAVs
for (var k = uavs.length - 1; k >= 0; k--) {
var uav = uavs[k];
if (uav.lastY === undefined) uav.lastY = uav.y;
if (uav.lastY < 2732 && uav.y >= 2732) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
return;
}
uav.lastY = uav.y;
}
// Update enemy bullets
for (var l = enemyBullets.length - 1; l >= 0; l--) {
var enemyBullet = enemyBullets[l];
if (enemyBullet.lastY === undefined) enemyBullet.lastY = enemyBullet.y;
if (enemyBullet.lastX === undefined) enemyBullet.lastX = enemyBullet.x;
// Destroy bullet if it goes off-screen (top)
if (enemyBullet.lastY >= -20 && enemyBullet.y < -20) {
enemyBullet.destroy();
enemyBullets.splice(l, 1);
continue;
}
// Destroy bullet if it goes off-screen (bottom)
if (enemyBullet.lastY < 2732 && enemyBullet.y >= 2732) {
enemyBullet.destroy();
enemyBullets.splice(l, 1);
continue;
}
// Destroy bullet if it goes off-screen (left side)
if (enemyBullet.lastX >= 0 && enemyBullet.x < 0) {
enemyBullet.destroy();
enemyBullets.splice(l, 1);
continue;
}
// Destroy bullet if it goes off-screen (right side)
if (enemyBullet.lastX <= 2048 && enemyBullet.x > 2048) {
enemyBullet.destroy();
enemyBullets.splice(l, 1);
continue;
}
enemyBullet.lastY = enemyBullet.y;
enemyBullet.lastX = enemyBullet.x;
}
// Collision detection - Player bullets vs Spaceships
for (var m = playerBullets.length - 1; m >= 0; m--) {
var pBullet = playerBullets[m];
for (var n = spaceships.length - 1; n >= 0; n--) {
var ship = spaceships[n];
if (pBullet.intersects(ship)) {
// Fire multiple bullets when spaceship is destroyed
for (var fireCount = 0; fireCount < 3; fireCount++) {
var bullet = new EnemyBullet();
bullet.x = ship.x + (fireCount - 1) * 20;
bullet.y = ship.y;
bullet.setVelocity((fireCount - 1) * 2, 6);
enemyBullets.push(bullet);
game.addChild(bullet);
}
LK.setScore(LK.getScore() + 100);
updateScore();
LK.getSound('enemyDestroy').play();
// Create explosion effect
tween(ship, {
scaleX: 2,
scaleY: 2,
alpha: 0,
tint: 0xff4400
}, {
duration: 500,
easing: tween.easeOut,
onFinish: function onFinish() {
ship.destroy();
}
});
pBullet.destroy();
playerBullets.splice(m, 1);
spaceships.splice(n, 1);
break;
}
}
}
// Collision detection - Player bullets vs UAVs
for (var o = playerBullets.length - 1; o >= 0; o--) {
var pBullet2 = playerBullets[o];
for (var p = uavs.length - 1; p >= 0; p--) {
var uav2 = uavs[p];
if (pBullet2.intersects(uav2)) {
// Fire a bullet when UAV is destroyed
var bullet = new EnemyBullet();
bullet.x = uav2.x;
bullet.y = uav2.y;
bullet.setVelocity(0, 6);
enemyBullets.push(bullet);
game.addChild(bullet);
LK.setScore(LK.getScore() + 50);
updateScore();
LK.getSound('enemyDestroy').play();
// Create explosion effect
tween(uav2, {
scaleX: 1.5,
scaleY: 1.5,
alpha: 0,
tint: 0xff4400
}, {
duration: 400,
easing: tween.easeOut,
onFinish: function onFinish() {
uav2.destroy();
}
});
pBullet2.destroy();
playerBullets.splice(o, 1);
uavs.splice(p, 1);
break;
}
}
}
// Collision detection - Enemy bullets vs Player
for (var q = enemyBullets.length - 1; q >= 0; q--) {
var eBullet = enemyBullets[q];
if (eBullet.intersects(player)) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
return;
}
}
// Collision detection - UAVs vs Player
for (var r = uavs.length - 1; r >= 0; r--) {
var uav3 = uavs[r];
if (uav3.intersects(player)) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
return;
}
}
// Collision detection - Spaceships vs Player
for (var s = spaceships.length - 1; s >= 0; s--) {
var ship2 = spaceships[s];
if (ship2.intersects(player)) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
return;
}
}
};
LK.playMusic('battleMusic'); ===================================================================
--- original.js
+++ change.js
@@ -43,9 +43,9 @@
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 8;
- self.fireRate = 15;
+ self.fireRate = 8; // Faster firing for level 10
self.fireTimer = 0;
self.update = function () {
if (self.fireTimer > 0) {
self.fireTimer--;
@@ -68,12 +68,12 @@
var spaceshipGraphics = self.attachAsset('spaceship', {
anchorX: 0.5,
anchorY: 0.5
});
- self.speed = 2;
+ self.speed = 4; // Faster movement for level 10
self.direction = 1;
self.deployTimer = 0;
- self.deployRate = 180;
+ self.deployRate = 120; // Deploy UAVs more frequently for level 10
self.movePattern = Math.random() < 0.5 ? 'horizontal' : 'diagonal';
self.update = function () {
if (self.movePattern === 'horizontal') {
self.x += self.speed * self.direction;
@@ -101,9 +101,9 @@
var uavGraphics = self.attachAsset('uav', {
anchorX: 0.5,
anchorY: 0.5
});
- self.speed = 4;
+ self.speed = 6; // Faster UAV movement for level 10
self.targetX = 0;
self.targetY = 0;
self.setTarget = function (x, y) {
self.targetX = x;
@@ -146,12 +146,12 @@
var spaceships = [];
var uavs = [];
var enemyBullets = [];
var spawnTimer = 0;
-var spawnRate = 120;
+var spawnRate = 30; // Much faster spawning for level 10
var difficultyTimer = 0;
var enemyFireTimer = 0;
-var enemyFireRate = 90;
+var enemyFireRate = 20; // Much faster enemy firing for level 10
var scoreTxt = new Text2('Score: 0', {
size: 60,
fill: 0xFFFFFF
});
@@ -217,25 +217,30 @@
};
game.up = function (x, y, obj) {};
game.update = function () {
// Player movement is now handled by touch/mouse controls
- // Spawn spaceships
+ // Spawn spaceships - Level 10: spawn multiple at once
spawnTimer++;
if (spawnTimer >= spawnRate) {
spawnTimer = 0;
spawnSpaceship();
+ // Level 10: spawn additional spaceships
+ if (Math.random() < 0.7) {
+ spawnSpaceship();
+ }
+ if (Math.random() < 0.4) {
+ spawnSpaceship();
+ }
}
- // Increase difficulty over time
+ // Level 10: No difficulty progression needed - already at max difficulty
difficultyTimer++;
if (difficultyTimer >= 1800) {
- // Every 30 seconds
+ // Every 30 seconds - Level 10: spawn bonus UAVs
difficultyTimer = 0;
- if (spawnRate > 60) {
- spawnRate -= 10;
+ if (spaceships.length > 0) {
+ var bonusSpaceship = spaceships[Math.floor(Math.random() * spaceships.length)];
+ deployUAV(bonusSpaceship.x, bonusSpaceship.y);
}
- if (enemyFireRate > 45) {
- enemyFireRate -= 5;
- }
}
// Player auto-fire
if (player.fire()) {
var bullet = new PlayerBullet();
@@ -244,15 +249,34 @@
playerBullets.push(bullet);
game.addChild(bullet);
LK.getSound('playerShoot').play();
}
- // Enemy firing
+ // Enemy firing - Level 10: multiple spaceships fire at once
enemyFireTimer++;
if (enemyFireTimer >= enemyFireRate) {
enemyFireTimer = 0;
if (spaceships.length > 0) {
- var randomSpaceship = spaceships[Math.floor(Math.random() * spaceships.length)];
- fireEnemyBullet(randomSpaceship.x, randomSpaceship.y);
+ // Level 10: up to 3 spaceships fire simultaneously
+ var firersCount = Math.min(3, spaceships.length);
+ for (var fireIdx = 0; fireIdx < firersCount; fireIdx++) {
+ var randomSpaceship = spaceships[Math.floor(Math.random() * spaceships.length)];
+ fireEnemyBullet(randomSpaceship.x, randomSpaceship.y);
+ // Level 10: some spaceships fire spread bullets
+ if (Math.random() < 0.5) {
+ var spreadBullet1 = new EnemyBullet();
+ spreadBullet1.x = randomSpaceship.x;
+ spreadBullet1.y = randomSpaceship.y;
+ spreadBullet1.setVelocity(-3, 6);
+ enemyBullets.push(spreadBullet1);
+ game.addChild(spreadBullet1);
+ var spreadBullet2 = new EnemyBullet();
+ spreadBullet2.x = randomSpaceship.x;
+ spreadBullet2.y = randomSpaceship.y;
+ spreadBullet2.setVelocity(3, 6);
+ enemyBullets.push(spreadBullet2);
+ game.addChild(spreadBullet2);
+ }
+ }
}
}
// Update player bullets
for (var i = playerBullets.length - 1; i >= 0; i--) {