User prompt
Gör så att plant fast ser utt som vilse fast
User prompt
Kan du göra så att man kan spela igen
User prompt
Kan du göra så att alla svårig heter har oendligt med waves
User prompt
Kan du göra så att varge peng man tar i medium är värd 1.0 pengar och vidare med +0.5
User prompt
Gör så att i medium är poäng =1.0 och i hard är poäng=1.5 och i extrem är peng =2.5
User prompt
Man ska inte kuna se shopen när man är i en mach
User prompt
Kan du göra så att alla mods har oendligt med waves
User prompt
Gör så att när man dör så sparas ens pengar och man kan anvenda dom till att köpa nya flygplan som är snabbare eller kan sluta missiler och mer ↪💡 Consider importing and using the following plugins: @upit/storage.v1, @upit/tween.v1
User prompt
Gör så att pengarna har bilden po
User prompt
Kan du Ada så att man också samlar pengar på vägen lät=0.5 pär peng och plus 0.5 för varge ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Kan you Ada EXTRIM MOD
User prompt
Ada wave complet nar man klarar av en wave ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Hard mod lite letar men svårare en medium
User prompt
På Hard modA-10 ett skot Pär sekund på wave 3 och SR-71 ska skuta en Misil Pär 3 sekund på wave 5 ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Enkel= Easy Medium=Medium svår=Hard
User prompt
Ada enkel medium och svår så att man kan välga svårighets Gard
User prompt
Radera Enemi 4
User prompt
Det ska finas oendligt med wave
User prompt
Alla fienden dödas med 1 skot förutom Enemi 2 som dödas med 2
User prompt
Enemi 3 för snab
User prompt
Enemi1 1 bomb Pär 2,5 sekund
User prompt
När man har klarat av en wave ska det koma en text där det står WAVE COMPLETED
User prompt
Enemi 2 ska skuta et skot Pär 1.5 sekunder och skotet ska göra 0,5 skada
User prompt
Mer liv
User prompt
Mer HP
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Bomb = Container.expand(function () {
var self = Container.call(this);
var bombGraphics = self.attachAsset('bullet', {
anchorX: 0.5,
anchorY: 0.5,
tint: 0x444444,
scaleX: 2,
scaleY: 2
});
self.speed = 4;
self.damage = 2;
self.update = function () {
self.y += self.speed;
};
return self;
});
var Bullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('bullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = -12;
self.damage = 1;
self.update = function () {
self.y += self.speed;
};
return self;
});
var Cloud = Container.expand(function () {
var self = Container.call(this);
var cloudType = ['cloud1', 'cloud2', 'cloud3'][Math.floor(Math.random() * 3)];
var cloudGraphics = self.attachAsset(cloudType, {
anchorX: 0.5,
anchorY: 0.5
});
cloudGraphics.alpha = 0.7;
self.speed = Math.random() * 2 + 1;
self.update = function () {
self.y += self.speed;
};
return self;
});
// Game variables
var Enemy1 = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemy1', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 3;
self.health = 1;
self.scoreValue = 10;
self.enemyType = 1;
self.update = function () {
self.y += self.speed;
// Adjust shooting frequency based on difficulty
var shootInterval = difficulty === 'easy' ? 450 : difficulty === 'medium' ? 300 : 200;
if (LK.ticks % shootInterval === 0) {
var enemyBullet = new EnemyBullet();
enemyBullet.x = self.x;
enemyBullet.y = self.y + 40;
enemyBullets.push(enemyBullet);
game.addChild(enemyBullet);
}
// Adjust bomb frequency based on difficulty
var bombInterval = difficulty === 'easy' ? 240 : difficulty === 'medium' ? 150 : 90;
if (LK.ticks % bombInterval === 0) {
var bomb = new Bomb();
bomb.x = self.x;
bomb.y = self.y + 40;
bombs.push(bomb);
game.addChild(bomb);
}
};
return self;
});
var Enemy2 = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemy2', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 4;
self.health = 2;
self.scoreValue = 20;
self.enemyType = 2;
self.nextBombTime = 0;
self.bombInterval = Math.random() * 1500 + 3000; // Random between 3-4.5 seconds
self.update = function () {
self.y += self.speed;
// Zigzag movement
self.x += Math.sin(LK.ticks * 0.1) * 2;
// Drop bombs based on difficulty
var bombTime = difficulty === 'easy' ? 5000 : difficulty === 'medium' ? 3000 : 2000;
if (LK.ticks * 16.67 >= self.nextBombTime) {
// Convert ticks to milliseconds (60fps = 16.67ms per tick)
var bomb = new Bomb();
bomb.x = self.x;
bomb.y = self.y + 40;
bombs.push(bomb);
game.addChild(bomb);
// Set next bomb time based on difficulty
var bombVariation = difficulty === 'easy' ? 2000 : difficulty === 'medium' ? 1500 : 1000;
self.bombInterval = Math.random() * bombVariation + bombTime;
self.nextBombTime = LK.ticks * 16.67 + self.bombInterval;
}
// Shoot bullets based on difficulty
var shootInterval = difficulty === 'easy' ? 150 : difficulty === 'medium' ? 90 : 60;
if (LK.ticks % shootInterval === 0) {
var enemyBullet = new EnemyBullet();
enemyBullet.x = self.x;
enemyBullet.y = self.y + 40;
enemyBullet.damage = difficulty === 'easy' ? 0.3 : difficulty === 'medium' ? 0.5 : 0.8;
enemyBullets.push(enemyBullet);
game.addChild(enemyBullet);
}
};
return self;
});
var Enemy3 = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemy3', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 3;
self.health = 1;
self.scoreValue = 15;
self.enemyType = 3;
self.hasSpottedPlayer = false; // Track if this Enemy3 has already spotted the player
self.update = function () {
self.y += self.speed;
// Scout behavior - scan for player when in range
var distanceToPlayer = Math.abs(self.x - player.x);
var verticalDistance = Math.abs(self.y - player.y);
// If Enemy3 is close enough to "spot" the player (within scanning range)
if (distanceToPlayer < 300 && verticalDistance < 400 && !self.hasSpottedPlayer) {
self.hasSpottedPlayer = true;
// Show warning text
warningTxt.alpha = 1;
tween(warningTxt, {
alpha: 0
}, {
duration: 3000
}); // Fade out warning over 3 seconds
// Trigger Enemy2 spawn after warning
LK.setTimeout(function () {
var enemy2 = new Enemy2();
enemy2.x = Math.random() * 1900 + 100;
enemy2.y = -50;
enemy2.speed += Math.floor(currentWave / 3);
enemies.push(enemy2);
game.addChild(enemy2);
}, 1000); // Spawn Enemy2 1 second after warning appears
}
};
return self;
});
var EnemyBullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('bullet', {
anchorX: 0.5,
anchorY: 0.5,
tint: 0xff0000
});
self.speed = 8;
self.damage = 1;
self.update = function () {
self.y += self.speed;
};
return self;
});
var Player = Container.expand(function () {
var self = Container.call(this);
var playerGraphics = self.attachAsset('player', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 8;
self.health = 5;
self.update = function () {
// Keep player in bounds - only allow movement along bottom edge
if (self.x < 40) self.x = 40;
if (self.x > 2008) self.x = 2008;
// Force player to stay at bottom of screen
self.y = 2400;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87CEEB
});
/****
* Game Code
****/
// Game variables
var player;
var enemies = [];
var bullets = [];
var enemyBullets = [];
var bombs = [];
var clouds = [];
var score = 0;
var totalKills = 0;
var enemySpawnTimer = 0;
var cloudSpawnTimer = 0;
var currentWave = 1;
var enemiesSpawnedThisWave = 0;
var enemiesKilledThisWave = 0;
var enemiesPerWave = 5;
var waveInProgress = false;
var waveStartDelay = 0;
var maxEnemySpawnRate = 60;
var difficulty = null; // null, 'easy', 'medium', 'hard'
var gameStarted = false;
// Difficulty selection menu
var difficultyTitle = new Text2('Välj Svårighetsgrad', {
size: 100,
fill: 0xFFFFFF
});
difficultyTitle.anchor.set(0.5, 0.5);
difficultyTitle.x = 1024;
difficultyTitle.y = 800;
game.addChild(difficultyTitle);
// Easy button
var easyButton = LK.getAsset('bullet', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 15,
scaleY: 8,
tint: 0x00FF00
});
easyButton.x = 1024;
easyButton.y = 1200;
game.addChild(easyButton);
var easyText = new Text2('ENKEL', {
size: 80,
fill: 0x000000
});
easyText.anchor.set(0.5, 0.5);
easyText.x = 1024;
easyText.y = 1200;
game.addChild(easyText);
// Medium button
var mediumButton = LK.getAsset('bullet', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 15,
scaleY: 8,
tint: 0xFFFF00
});
mediumButton.x = 1024;
mediumButton.y = 1400;
game.addChild(mediumButton);
var mediumText = new Text2('MEDIUM', {
size: 80,
fill: 0x000000
});
mediumText.anchor.set(0.5, 0.5);
mediumText.x = 1024;
mediumText.y = 1400;
game.addChild(mediumText);
// Hard button
var hardButton = LK.getAsset('bullet', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 15,
scaleY: 8,
tint: 0xFF0000
});
hardButton.x = 1024;
hardButton.y = 1600;
game.addChild(hardButton);
var hardText = new Text2('SVÅR', {
size: 80,
fill: 0x000000
});
hardText.anchor.set(0.5, 0.5);
hardText.x = 1024;
hardText.y = 1600;
game.addChild(hardText);
// Initialize background clouds
for (var i = 0; i < 8; i++) {
var cloud = new Cloud();
cloud.x = Math.random() * 2048;
cloud.y = Math.random() * 2732;
clouds.push(cloud);
game.addChild(cloud);
}
// Player will be created when game starts after difficulty selection
// Score display
var scoreTxt = new Text2('Score: ' + score, {
size: 60,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0, 0);
LK.gui.topLeft.addChild(scoreTxt);
scoreTxt.x = 120;
scoreTxt.y = 20;
// Wave display
var waveTxt = new Text2('Wave: ' + currentWave, {
size: 60,
fill: 0xFFFF00
});
waveTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(waveTxt);
waveTxt.y = 20;
// Health display
var healthTxt = new Text2('Health: 5', {
size: 60,
fill: 0xFF0000
});
healthTxt.anchor.set(1, 0);
LK.gui.topRight.addChild(healthTxt);
healthTxt.x = -20;
healthTxt.y = 20;
// Kills counter display
var killsTxt = new Text2('Kills: ' + totalKills, {
size: 60,
fill: 0x00FF00
});
killsTxt.anchor.set(1, 0);
LK.gui.topRight.addChild(killsTxt);
killsTxt.x = -20;
killsTxt.y = 90;
// Warning text (initially hidden)
var warningTxt = new Text2('WARNING', {
size: 120,
fill: 0xFF0000
});
warningTxt.anchor.set(0.5, 0.5);
LK.gui.center.addChild(warningTxt);
warningTxt.alpha = 0; // Initially hidden
// Touch input handling for difficulty selection and player movement
game.down = function (x, y, obj) {
if (!gameStarted) {
// Check if easy button was touched
if (x >= 900 && x <= 1148 && y >= 1136 && y <= 1264) {
difficulty = 'easy';
startGame();
}
// Check if medium button was touched
else if (x >= 900 && x <= 1148 && y >= 1336 && y <= 1464) {
difficulty = 'medium';
startGame();
}
// Check if hard button was touched
else if (x >= 900 && x <= 1148 && y >= 1536 && y <= 1664) {
difficulty = 'hard';
startGame();
}
} else {
// Move player to touch x position, keeping y at bottom
player.x = x;
}
};
game.move = function (x, y, obj) {
if (gameStarted) {
// Move player to touch x position while dragging
player.x = x;
}
};
// Function to start game with selected difficulty
function startGame() {
gameStarted = true;
// Remove difficulty selection menu
difficultyTitle.destroy();
easyButton.destroy();
easyText.destroy();
mediumButton.destroy();
mediumText.destroy();
hardButton.destroy();
hardText.destroy();
// Create player
player = game.addChild(new Player());
player.x = 1024;
player.y = 2400;
// Apply difficulty settings
if (difficulty === 'easy') {
player.health = 8;
maxEnemySpawnRate = 80;
enemiesPerWave = 3;
} else if (difficulty === 'medium') {
player.health = 5;
maxEnemySpawnRate = 60;
enemiesPerWave = 5;
} else if (difficulty === 'hard') {
player.health = 3;
maxEnemySpawnRate = 40;
enemiesPerWave = 7;
}
// Update health display
healthTxt.setText('Health: ' + player.health);
}
// Main game loop
game.update = function () {
if (!gameStarted) return;
// Spawn new clouds
cloudSpawnTimer++;
if (cloudSpawnTimer > 120) {
var cloud = new Cloud();
cloud.x = Math.random() * 2048;
cloud.y = -100;
clouds.push(cloud);
game.addChild(cloud);
cloudSpawnTimer = 0;
}
// Update clouds
for (var i = clouds.length - 1; i >= 0; i--) {
var cloud = clouds[i];
if (cloud.y > 2800) {
cloud.destroy();
clouds.splice(i, 1);
}
}
// Continuous shooting every 10 ticks - bullets spawn from player position
if (LK.ticks % 10 === 0) {
var bullet = new Bullet();
bullet.x = player.x; // Spawn bullet at player's exact x position
bullet.y = player.y - 60; // Spawn bullet slightly above player
bullets.push(bullet);
game.addChild(bullet);
LK.getSound('shoot').play();
}
// Wave system - spawn enemies based on current wave (infinite waves)
if (!waveInProgress && waveStartDelay <= 0) {
// Start new wave
waveInProgress = true;
enemiesSpawnedThisWave = 0;
enemiesKilledThisWave = 0;
enemiesPerWave = 5 + currentWave * 2; // Increase enemies per wave indefinitely
maxEnemySpawnRate = Math.max(15, 60 - currentWave * 2); // Faster spawning each wave, minimum 15 ticks
waveTxt.setText('Wave: ' + currentWave);
}
if (waveInProgress && enemiesSpawnedThisWave < enemiesPerWave) {
enemySpawnTimer++;
if (enemySpawnTimer > maxEnemySpawnRate) {
// Randomly choose enemy type
var enemyType = Math.floor(Math.random() * 3) + 1;
var enemy;
if (enemyType === 1) {
enemy = new Enemy1();
} else if (enemyType === 2) {
enemy = new Enemy2();
} else {
enemy = new Enemy3();
}
enemy.x = Math.random() * 1900 + 100;
enemy.y = -50;
// Make enemies faster in later waves
enemy.speed += Math.floor(currentWave / 3);
enemies.push(enemy);
game.addChild(enemy);
enemySpawnTimer = 0;
enemiesSpawnedThisWave++;
}
}
// Update bullets
for (var i = bullets.length - 1; i >= 0; i--) {
var bullet = bullets[i];
// Remove bullets that are off screen
if (bullet.y < -50) {
bullet.destroy();
bullets.splice(i, 1);
continue;
}
// Check bullet-enemy collisions
for (var j = enemies.length - 1; j >= 0; j--) {
var enemy = enemies[j];
if (bullet.intersects(enemy)) {
// Damage enemy
enemy.health -= bullet.damage;
bullet.destroy();
bullets.splice(i, 1);
// Check if enemy is destroyed
if (enemy.health <= 0) {
LK.getSound('explosion').play();
// Create explosion visual at enemy position
var explosion = LK.getAsset('Bomm', {
anchorX: 0.5,
anchorY: 0.5
});
explosion.x = enemy.x;
explosion.y = enemy.y;
game.addChild(explosion);
// Animate explosion - scale up and fade out
tween(explosion, {
scaleX: 3,
scaleY: 3,
alpha: 0
}, {
duration: 800,
easing: tween.easeOut,
onFinish: function onFinish() {
explosion.destroy();
}
});
enemy.destroy();
enemies.splice(j, 1);
// Update score based on enemy type and wave
score += enemy.scoreValue * currentWave;
LK.setScore(score);
scoreTxt.setText('Score: ' + score);
// Update kills counter
totalKills++;
killsTxt.setText('Kills: ' + totalKills);
enemiesKilledThisWave++;
// Check if wave is complete
if (waveInProgress && enemiesKilledThisWave >= enemiesPerWave) {
waveInProgress = false;
currentWave++;
waveStartDelay = 120; // 2 second delay between waves
LK.effects.flashScreen(0x00ff00, 500); // Green flash for wave complete
// Show wave completed text
var waveCompletedTxt = new Text2('WAVE COMPLETED', {
size: 120,
fill: 0x00FF00
});
waveCompletedTxt.anchor.set(0.5, 0.5);
LK.gui.center.addChild(waveCompletedTxt);
// Animate wave completed text - fade in then fade out
waveCompletedTxt.alpha = 0;
tween(waveCompletedTxt, {
alpha: 1
}, {
duration: 500,
onFinish: function onFinish() {
tween(waveCompletedTxt, {
alpha: 0
}, {
duration: 1500,
onFinish: function onFinish() {
waveCompletedTxt.destroy();
}
});
}
});
}
} else {
// Enemy damaged but not destroyed - flash red
LK.effects.flashObject(enemy, 0xff0000, 200);
}
break;
}
}
}
// Update enemies
for (var i = enemies.length - 1; i >= 0; i--) {
var enemy = enemies[i];
// Remove enemies that are off screen
if (enemy.y > 2800) {
enemy.destroy();
enemies.splice(i, 1);
continue;
}
// Check enemy-player collision
if (enemy.intersects(player)) {
player.health--;
healthTxt.setText('Health: ' + player.health);
if (player.health <= 0) {
LK.showGameOver();
} else {
LK.effects.flashObject(player, 0xff0000, 500);
}
enemy.destroy();
enemies.splice(i, 1);
}
}
// Update enemy bullets
for (var i = enemyBullets.length - 1; i >= 0; i--) {
var enemyBullet = enemyBullets[i];
// Remove bullets that are off screen
if (enemyBullet.y > 2800) {
enemyBullet.destroy();
enemyBullets.splice(i, 1);
continue;
}
// Check enemy bullet-player collision
if (enemyBullet.intersects(player)) {
player.health -= enemyBullet.damage;
healthTxt.setText('Health: ' + player.health);
enemyBullet.destroy();
enemyBullets.splice(i, 1);
if (player.health <= 0) {
LK.showGameOver();
} else {
LK.effects.flashObject(player, 0xff0000, 500);
}
}
}
// Update bombs
for (var i = bombs.length - 1; i >= 0; i--) {
var bomb = bombs[i];
// Remove bombs that are off screen
if (bomb.y > 2800) {
bomb.destroy();
bombs.splice(i, 1);
continue;
}
// Check bomb-player collision
if (bomb.intersects(player)) {
player.health -= bomb.damage;
healthTxt.setText('Health: ' + player.health);
bomb.destroy();
bombs.splice(i, 1);
if (player.health <= 0) {
LK.showGameOver();
} else {
LK.effects.flashObject(player, 0xff0000, 500);
}
}
}
// Handle wave start delay
if (waveStartDelay > 0) {
waveStartDelay--;
}
// Check if player failed to eliminate all enemies (game over condition)
// If enemies reach the bottom of the screen without being destroyed, it's game over
for (var i = enemies.length - 1; i >= 0; i--) {
var enemy = enemies[i];
if (enemy.y > 2600) {
// Enemy reached near bottom of screen
LK.showGameOver();
break;
}
}
}; ===================================================================
--- original.js
+++ change.js
@@ -61,18 +61,20 @@
self.scoreValue = 10;
self.enemyType = 1;
self.update = function () {
self.y += self.speed;
- // Shoot bullets every 300 ticks (5 seconds at 60fps)
- if (LK.ticks % 300 === 0) {
+ // Adjust shooting frequency based on difficulty
+ var shootInterval = difficulty === 'easy' ? 450 : difficulty === 'medium' ? 300 : 200;
+ if (LK.ticks % shootInterval === 0) {
var enemyBullet = new EnemyBullet();
enemyBullet.x = self.x;
enemyBullet.y = self.y + 40;
enemyBullets.push(enemyBullet);
game.addChild(enemyBullet);
}
- // Drop bombs every 150 ticks (2.5 seconds at 60fps)
- if (LK.ticks % 150 === 0) {
+ // Adjust bomb frequency based on difficulty
+ var bombInterval = difficulty === 'easy' ? 240 : difficulty === 'medium' ? 150 : 90;
+ if (LK.ticks % bombInterval === 0) {
var bomb = new Bomb();
bomb.x = self.x;
bomb.y = self.y + 40;
bombs.push(bomb);
@@ -96,26 +98,29 @@
self.update = function () {
self.y += self.speed;
// Zigzag movement
self.x += Math.sin(LK.ticks * 0.1) * 2;
- // Drop bombs every 3-4.5 seconds
+ // Drop bombs based on difficulty
+ var bombTime = difficulty === 'easy' ? 5000 : difficulty === 'medium' ? 3000 : 2000;
if (LK.ticks * 16.67 >= self.nextBombTime) {
// Convert ticks to milliseconds (60fps = 16.67ms per tick)
var bomb = new Bomb();
bomb.x = self.x;
bomb.y = self.y + 40;
bombs.push(bomb);
game.addChild(bomb);
- // Set next bomb time (3-4.5 seconds from now)
- self.bombInterval = Math.random() * 1500 + 3000;
+ // Set next bomb time based on difficulty
+ var bombVariation = difficulty === 'easy' ? 2000 : difficulty === 'medium' ? 1500 : 1000;
+ self.bombInterval = Math.random() * bombVariation + bombTime;
self.nextBombTime = LK.ticks * 16.67 + self.bombInterval;
}
- // Shoot bullets every 90 ticks (1.5 seconds at 60fps)
- if (LK.ticks % 90 === 0) {
+ // Shoot bullets based on difficulty
+ var shootInterval = difficulty === 'easy' ? 150 : difficulty === 'medium' ? 90 : 60;
+ if (LK.ticks % shootInterval === 0) {
var enemyBullet = new EnemyBullet();
enemyBullet.x = self.x;
enemyBullet.y = self.y + 40;
- enemyBullet.damage = 0.5; // Set damage to 0.5
+ enemyBullet.damage = difficulty === 'easy' ? 0.3 : difficulty === 'medium' ? 0.5 : 0.8;
enemyBullets.push(enemyBullet);
game.addChild(enemyBullet);
}
};
@@ -219,20 +224,85 @@
var enemiesPerWave = 5;
var waveInProgress = false;
var waveStartDelay = 0;
var maxEnemySpawnRate = 60;
+var difficulty = null; // null, 'easy', 'medium', 'hard'
+var gameStarted = false;
+// Difficulty selection menu
+var difficultyTitle = new Text2('Välj Svårighetsgrad', {
+ size: 100,
+ fill: 0xFFFFFF
+});
+difficultyTitle.anchor.set(0.5, 0.5);
+difficultyTitle.x = 1024;
+difficultyTitle.y = 800;
+game.addChild(difficultyTitle);
+// Easy button
+var easyButton = LK.getAsset('bullet', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ scaleX: 15,
+ scaleY: 8,
+ tint: 0x00FF00
+});
+easyButton.x = 1024;
+easyButton.y = 1200;
+game.addChild(easyButton);
+var easyText = new Text2('ENKEL', {
+ size: 80,
+ fill: 0x000000
+});
+easyText.anchor.set(0.5, 0.5);
+easyText.x = 1024;
+easyText.y = 1200;
+game.addChild(easyText);
+// Medium button
+var mediumButton = LK.getAsset('bullet', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ scaleX: 15,
+ scaleY: 8,
+ tint: 0xFFFF00
+});
+mediumButton.x = 1024;
+mediumButton.y = 1400;
+game.addChild(mediumButton);
+var mediumText = new Text2('MEDIUM', {
+ size: 80,
+ fill: 0x000000
+});
+mediumText.anchor.set(0.5, 0.5);
+mediumText.x = 1024;
+mediumText.y = 1400;
+game.addChild(mediumText);
+// Hard button
+var hardButton = LK.getAsset('bullet', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ scaleX: 15,
+ scaleY: 8,
+ tint: 0xFF0000
+});
+hardButton.x = 1024;
+hardButton.y = 1600;
+game.addChild(hardButton);
+var hardText = new Text2('SVÅR', {
+ size: 80,
+ fill: 0x000000
+});
+hardText.anchor.set(0.5, 0.5);
+hardText.x = 1024;
+hardText.y = 1600;
+game.addChild(hardText);
// Initialize background clouds
for (var i = 0; i < 8; i++) {
var cloud = new Cloud();
cloud.x = Math.random() * 2048;
cloud.y = Math.random() * 2732;
clouds.push(cloud);
game.addChild(cloud);
}
-// Create player
-player = game.addChild(new Player());
-player.x = 1024;
-player.y = 2400;
+// Player will be created when game starts after difficulty selection
// Score display
var scoreTxt = new Text2('Score: ' + score, {
size: 60,
fill: 0xFFFFFF
@@ -274,19 +344,72 @@
});
warningTxt.anchor.set(0.5, 0.5);
LK.gui.center.addChild(warningTxt);
warningTxt.alpha = 0; // Initially hidden
-// Touch input handling for player movement
+// Touch input handling for difficulty selection and player movement
game.down = function (x, y, obj) {
- // Move player to touch x position, keeping y at bottom
- player.x = x;
+ if (!gameStarted) {
+ // Check if easy button was touched
+ if (x >= 900 && x <= 1148 && y >= 1136 && y <= 1264) {
+ difficulty = 'easy';
+ startGame();
+ }
+ // Check if medium button was touched
+ else if (x >= 900 && x <= 1148 && y >= 1336 && y <= 1464) {
+ difficulty = 'medium';
+ startGame();
+ }
+ // Check if hard button was touched
+ else if (x >= 900 && x <= 1148 && y >= 1536 && y <= 1664) {
+ difficulty = 'hard';
+ startGame();
+ }
+ } else {
+ // Move player to touch x position, keeping y at bottom
+ player.x = x;
+ }
};
game.move = function (x, y, obj) {
- // Move player to touch x position while dragging
- player.x = x;
+ if (gameStarted) {
+ // Move player to touch x position while dragging
+ player.x = x;
+ }
};
+// Function to start game with selected difficulty
+function startGame() {
+ gameStarted = true;
+ // Remove difficulty selection menu
+ difficultyTitle.destroy();
+ easyButton.destroy();
+ easyText.destroy();
+ mediumButton.destroy();
+ mediumText.destroy();
+ hardButton.destroy();
+ hardText.destroy();
+ // Create player
+ player = game.addChild(new Player());
+ player.x = 1024;
+ player.y = 2400;
+ // Apply difficulty settings
+ if (difficulty === 'easy') {
+ player.health = 8;
+ maxEnemySpawnRate = 80;
+ enemiesPerWave = 3;
+ } else if (difficulty === 'medium') {
+ player.health = 5;
+ maxEnemySpawnRate = 60;
+ enemiesPerWave = 5;
+ } else if (difficulty === 'hard') {
+ player.health = 3;
+ maxEnemySpawnRate = 40;
+ enemiesPerWave = 7;
+ }
+ // Update health display
+ healthTxt.setText('Health: ' + player.health);
+}
// Main game loop
game.update = function () {
+ if (!gameStarted) return;
// Spawn new clouds
cloudSpawnTimer++;
if (cloudSpawnTimer > 120) {
var cloud = new Cloud();
Moln. In-Game asset. 2d. High contrast. No shadows
Moln. In-Game asset. 2d. High contrast. No shadows
Misil rikdad upp. In-Game asset. 2d. High contrast. No shadows
F-22 upp ifrån. In-Game asset. 2d. High contrast. No shadows
SR-71 uppifrån. In-Game asset. 2d. High contrast. No shadows
B-2 uppifrån. In-Game asset. 2d. High contrast. No shadows
Explosion. In-Game asset. 2d. High contrast. No shadows
A-10 uppifrån. In-Game asset. 2d. High contrast. No shadows