User prompt
Skoten ska bara koma från planet
User prompt
Spelaren ska bara kunna vara på buren av skärmen
User prompt
Blå bakgrund med moln
User prompt
Skur hela tiden
User prompt
Kan du göra så att det fins fienden och en spelare
User prompt
Radera spelet
User prompt
När man dubbelklickar så skuts misilen
User prompt
Gör så att nosen spånar på 25 dödade fiender
User prompt
Gör så att bara bossen har misilern
User prompt
Gör så att man kan duka misilerna
User prompt
Sakta ner misiler
User prompt
Kan du göra så att visa fienden har missiler
User prompt
Kan du göra så att man kan sluta misilerna
User prompt
Kan du göra så att efter man har fått dödat 10 fienden så kan får man en missil och vidare
Code edit (1 edits merged)
Please save this source code
User prompt
Air Combat Squadron
Initial prompt
Kan du göra ett spel där man är ett militär plan och ska ta synder fiende miltär flyg plan
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000
}); ===================================================================
--- original.js
+++ change.js
@@ -1,581 +1,6 @@
-/****
-* Plugins
-****/
-var tween = LK.import("@upit/tween.v1");
-
-/****
-* Classes
-****/
-var Boss = Container.expand(function () {
- var self = Container.call(this);
- var bossGraphics = self.attachAsset('enemyJet', {
- anchorX: 0.5,
- anchorY: 0.5,
- scaleX: 2,
- scaleY: 2
- });
- bossGraphics.rotation = Math.PI;
- self.speed = 1;
- self.health = 10;
- self.lastShot = 0;
- self.shootInterval = 60;
- self.update = function () {
- self.y += self.speed;
- // Boss shooting logic - only missiles
- self.lastShot++;
- if (self.lastShot >= self.shootInterval && self.y > 100 && self.y < 2500) {
- self.lastShot = 0;
- var newMissile = new EnemyMissile();
- newMissile.x = self.x;
- newMissile.y = self.y + 70;
- enemyMissiles.push(newMissile);
- game.addChild(newMissile);
- }
- };
- return self;
-});
-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 EnemyJet = Container.expand(function () {
- var self = Container.call(this);
- var jetGraphics = self.attachAsset('enemyJet', {
- anchorX: 0.5,
- anchorY: 0.5
- });
- jetGraphics.rotation = Math.PI;
- self.speed = 3;
- self.health = 1;
- self.lastShot = 0;
- self.shootInterval = 90;
- self.update = function () {
- self.y += self.speed;
- // Enemy shooting logic - only bullets
- self.lastShot++;
- if (self.lastShot >= self.shootInterval && self.y > 100 && self.y < 2500) {
- self.lastShot = 0;
- var newBullet = new EnemyBullet();
- newBullet.x = self.x;
- newBullet.y = self.y + 40;
- enemyBullets.push(newBullet);
- game.addChild(newBullet);
- }
- };
- return self;
-});
-var EnemyMissile = Container.expand(function () {
- var self = Container.call(this);
- var missileGraphics = self.attachAsset('enemyMissile', {
- anchorX: 0.5,
- anchorY: 0.5
- });
- self.speed = 3;
- self.homingStrength = 0.04;
- self.update = function () {
- // Homing behavior targeting player
- if (player && !player.destroyed) {
- var dx = player.x - self.x;
- var dy = player.y - self.y;
- self.x += dx * self.homingStrength;
- self.y += dy * self.homingStrength;
- }
- self.y += self.speed;
- };
- return self;
-});
-var Missile = Container.expand(function () {
- var self = Container.call(this);
- var missileGraphics = self.attachAsset('missile', {
- anchorX: 0.5,
- anchorY: 0.5
- });
- self.speed = -5;
- self.target = null;
- self.homingStrength = 0.06;
- self.update = function () {
- // Find closest enemy if no target or target is destroyed
- if (!self.target || self.target.destroyed) {
- var closestDistance = Infinity;
- self.target = null;
- for (var i = 0; i < enemies.length; i++) {
- var enemy = enemies[i];
- var distance = Math.sqrt(Math.pow(enemy.x - self.x, 2) + Math.pow(enemy.y - self.y, 2));
- if (distance < closestDistance) {
- closestDistance = distance;
- self.target = enemy;
- }
- }
- }
- // Homing behavior
- if (self.target && !self.target.destroyed) {
- var dx = self.target.x - self.x;
- var dy = self.target.y - self.y;
- self.x += dx * self.homingStrength;
- self.y += dy * self.homingStrength;
- }
- self.y += self.speed;
- };
- 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 PlayerJet = Container.expand(function () {
- var self = Container.call(this);
- var jetGraphics = self.attachAsset('playerJet', {
- anchorX: 0.5,
- anchorY: 0.5
- });
- self.health = 3;
- self.lastShot = 0;
- self.shootInterval = 15;
- self.update = function () {
- // Auto shooting
- self.lastShot++;
- if (self.lastShot >= self.shootInterval) {
- self.lastShot = 0;
- var newBullet = new PlayerBullet();
- newBullet.x = self.x;
- newBullet.y = self.y - 50;
- playerBullets.push(newBullet);
- game.addChild(newBullet);
- LK.getSound('shoot').play();
- }
- };
- return self;
-});
-
-/****
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x1a237e
-});
-
-/****
-* Game Code
-****/
-var player = game.addChild(new PlayerJet());
-player.x = 1024;
-player.y = 2400;
-var enemies = [];
-var bosses = [];
-var playerBullets = [];
-var enemyBullets = [];
-var enemyMissiles = [];
-var missiles = [];
-var enemySpawnTimer = 0;
-var bossSpawnTimer = 0;
-var waveLevel = 1;
-var dragNode = null;
-var enemiesKilled = 0;
-var missileCount = 0;
-var scoreTxt = new Text2('Score: 0', {
- size: 80,
- fill: 0xFFFFFF
-});
-scoreTxt.anchor.set(0.5, 0);
-LK.gui.top.addChild(scoreTxt);
-var healthTxt = new Text2('Health: 3', {
- size: 60,
- fill: 0xFF4444
-});
-healthTxt.anchor.set(1, 0);
-LK.gui.topRight.addChild(healthTxt);
-var missileTxt = new Text2('Missiles: 0', {
- size: 60,
- fill: 0xFF9500
-});
-missileTxt.anchor.set(0, 0);
-LK.gui.topLeft.addChild(missileTxt);
-missileTxt.x = 120;
-var dodgeTxt = new Text2('Dodge: Ready', {
- size: 60,
- fill: 0x00ff88
-});
-dodgeTxt.anchor.set(0, 1);
-LK.gui.bottomLeft.addChild(dodgeTxt);
-dodgeTxt.x = 120;
-function spawnEnemy() {
- var enemy = new EnemyJet();
- enemy.x = Math.random() * 1800 + 124;
- enemy.y = -100;
- enemy.speed = 2 + Math.random() * 3 + waveLevel * 0.5;
- enemy.shootInterval = Math.max(60, 120 - waveLevel * 5);
- enemies.push(enemy);
- game.addChild(enemy);
-}
-function spawnBoss() {
- var boss = new Boss();
- boss.x = Math.random() * 1600 + 224;
- boss.y = -200;
- boss.speed = 1 + waveLevel * 0.2;
- boss.shootInterval = Math.max(40, 80 - waveLevel * 3);
- bosses.push(boss);
- game.addChild(boss);
-}
-function handleMove(x, y, obj) {
- if (dragNode) {
- dragNode.x = Math.max(60, Math.min(1988, x));
- dragNode.y = Math.max(100, Math.min(2632, y));
- }
-}
-var lastTapTime = 0;
-var tapThreshold = 300;
-var isReloading = false;
-var reloadTime = 2000; // 2 seconds reload time
-var reloadStartTime = 0;
-var isDodging = false;
-var dodgeTime = 500; // 0.5 seconds dodge duration
-var dodgeStartTime = 0;
-var dodgeCooldown = 1500; // 1.5 seconds cooldown
-var lastDodgeTime = 0;
-game.move = handleMove;
-game.down = function (x, y, obj) {
- var currentTime = Date.now();
- if (currentTime - lastTapTime < tapThreshold) {
- // Double tap detected - fire missile
- if (missileCount > 0 && !isReloading) {
- // Fire missile
- var newMissile = new Missile();
- newMissile.x = player.x;
- newMissile.y = player.y - 50;
- missiles.push(newMissile);
- game.addChild(newMissile);
- missileCount--;
- missileTxt.setText('Missiles: ' + missileCount);
- LK.getSound('missileShoot').play();
- } else if (missileCount === 0 && !isReloading) {
- // Start reload
- isReloading = true;
- reloadStartTime = currentTime;
- missileTxt.setText('Missiles: Reloading...');
- LK.effects.flashScreen(0x0088ff, 300);
- }
- lastTapTime = 0;
- } else {
- // Single tap - check for dodge
- if (!isDodging && currentTime - lastDodgeTime >= dodgeCooldown) {
- // Activate dodge
- isDodging = true;
- dodgeStartTime = currentTime;
- lastDodgeTime = currentTime;
- dodgeTxt.setText('Dodge: Active');
- dodgeTxt.fill = 0xffff00;
- LK.effects.flashObject(player, 0x00ffff, dodgeTime);
- player.alpha = 0.5; // Make player semi-transparent during dodge
- }
- lastTapTime = currentTime;
- dragNode = player;
- handleMove(x, y, obj);
- }
-};
-game.up = function (x, y, obj) {
- dragNode = null;
-};
-game.update = function () {
- var currentTime = Date.now();
- // Handle missile reload
- if (isReloading) {
- if (currentTime - reloadStartTime >= reloadTime) {
- isReloading = false;
- missileCount = 1;
- missileTxt.setText('Missiles: ' + missileCount);
- LK.effects.flashScreen(0x00ff00, 300);
- }
- }
- // Handle dodge system
- if (isDodging) {
- if (currentTime - dodgeStartTime >= dodgeTime) {
- isDodging = false;
- player.alpha = 1.0; // Restore full opacity
- dodgeTxt.setText('Dodge: Cooldown');
- dodgeTxt.fill = 0xff4444;
- }
- } else if (currentTime - lastDodgeTime >= dodgeCooldown) {
- dodgeTxt.setText('Dodge: Ready');
- dodgeTxt.fill = 0x00ff88;
- }
- // Spawn enemies
- enemySpawnTimer++;
- var spawnRate = Math.max(30, 90 - waveLevel * 5);
- if (enemySpawnTimer >= spawnRate) {
- enemySpawnTimer = 0;
- spawnEnemy();
- // Increase difficulty every 10 enemies spawned
- if (LK.ticks % 600 === 0) {
- waveLevel++;
- }
- }
- // Spawn bosses when 25 enemies killed
- if (enemiesKilled >= 25 && bosses.length === 0) {
- spawnBoss();
- }
- // Update player bullets
- for (var i = playerBullets.length - 1; i >= 0; i--) {
- var bullet = playerBullets[i];
- if (bullet.lastY === undefined) bullet.lastY = bullet.y;
- // Remove bullets that go off screen
- if (bullet.y < -50) {
- bullet.destroy();
- playerBullets.splice(i, 1);
- continue;
- }
- // Check collision with enemies
- var hitEnemy = false;
- for (var j = enemies.length - 1; j >= 0; j--) {
- var enemy = enemies[j];
- if (bullet.intersects(enemy)) {
- // Enemy hit
- LK.setScore(LK.getScore() + 100);
- scoreTxt.setText('Score: ' + LK.getScore());
- LK.getSound('enemyHit').play();
- // Track enemy kills for missile unlock
- enemiesKilled++;
- if (enemiesKilled % 10 === 0) {
- missileCount++;
- missileTxt.setText('Missiles: ' + missileCount);
- LK.effects.flashScreen(0x00ff00, 500);
- }
- // Remove enemy and bullet
- enemy.destroy();
- enemies.splice(j, 1);
- bullet.destroy();
- playerBullets.splice(i, 1);
- hitEnemy = true;
- break;
- }
- }
- // Check collision with bosses
- if (!hitEnemy) {
- for (var j = bosses.length - 1; j >= 0; j--) {
- var boss = bosses[j];
- if (bullet.intersects(boss)) {
- // Boss hit
- boss.health--;
- LK.setScore(LK.getScore() + 50);
- scoreTxt.setText('Score: ' + LK.getScore());
- LK.getSound('enemyHit').play();
- LK.effects.flashObject(boss, 0xff0000, 200);
- bullet.destroy();
- playerBullets.splice(i, 1);
- hitEnemy = true;
- if (boss.health <= 0) {
- // Boss defeated
- LK.setScore(LK.getScore() + 1000);
- scoreTxt.setText('Score: ' + LK.getScore());
- enemiesKilled += 5;
- if (enemiesKilled % 10 === 0) {
- missileCount++;
- missileTxt.setText('Missiles: ' + missileCount);
- LK.effects.flashScreen(0x00ff00, 500);
- }
- boss.destroy();
- bosses.splice(j, 1);
- }
- break;
- }
- }
- }
- if (!hitEnemy) {
- bullet.lastY = bullet.y;
- }
- }
- // Update enemy bullets
- for (var i = enemyBullets.length - 1; i >= 0; i--) {
- var bullet = enemyBullets[i];
- if (bullet.lastY === undefined) bullet.lastY = bullet.y;
- // Remove bullets that go off screen
- if (bullet.y > 2800) {
- bullet.destroy();
- enemyBullets.splice(i, 1);
- continue;
- }
- // Check collision with player
- if (bullet.intersects(player)) {
- player.health--;
- healthTxt.setText('Health: ' + player.health);
- LK.getSound('explosion').play();
- LK.effects.flashObject(player, 0xff0000, 500);
- bullet.destroy();
- enemyBullets.splice(i, 1);
- if (player.health <= 0) {
- LK.showGameOver();
- return;
- }
- continue;
- }
- bullet.lastY = bullet.y;
- }
- // Update enemies
- for (var i = enemies.length - 1; i >= 0; i--) {
- var enemy = enemies[i];
- if (enemy.lastY === undefined) enemy.lastY = enemy.y;
- // Remove enemies that go off screen
- if (enemy.y > 2800) {
- enemy.destroy();
- enemies.splice(i, 1);
- continue;
- }
- // Check collision with player
- if (enemy.intersects(player)) {
- player.health--;
- healthTxt.setText('Health: ' + player.health);
- LK.getSound('explosion').play();
- LK.effects.flashObject(player, 0xff0000, 500);
- enemy.destroy();
- enemies.splice(i, 1);
- if (player.health <= 0) {
- LK.showGameOver();
- return;
- }
- continue;
- }
- enemy.lastY = enemy.y;
- }
- // Update bosses
- for (var i = bosses.length - 1; i >= 0; i--) {
- var boss = bosses[i];
- if (boss.lastY === undefined) boss.lastY = boss.y;
- // Remove bosses that go off screen
- if (boss.y > 2800) {
- boss.destroy();
- bosses.splice(i, 1);
- continue;
- }
- // Check collision with player
- if (boss.intersects(player)) {
- player.health -= 2; // Boss collision does more damage
- healthTxt.setText('Health: ' + player.health);
- LK.getSound('explosion').play();
- LK.effects.flashObject(player, 0xff0000, 500);
- boss.destroy();
- bosses.splice(i, 1);
- if (player.health <= 0) {
- LK.showGameOver();
- return;
- }
- continue;
- }
- boss.lastY = boss.y;
- }
- // Update enemy missiles
- for (var i = enemyMissiles.length - 1; i >= 0; i--) {
- var missile = enemyMissiles[i];
- if (missile.lastY === undefined) missile.lastY = missile.y;
- // Remove missiles that go off screen
- if (missile.y > 2800) {
- missile.destroy();
- enemyMissiles.splice(i, 1);
- continue;
- }
- // Check collision with player
- if (missile.intersects(player) && !isDodging) {
- player.health -= 2; // Enemy missiles do more damage
- healthTxt.setText('Health: ' + player.health);
- LK.getSound('explosion').play();
- LK.effects.flashObject(player, 0xff0000, 800);
- missile.destroy();
- enemyMissiles.splice(i, 1);
- if (player.health <= 0) {
- LK.showGameOver();
- return;
- }
- continue;
- } else if (missile.intersects(player) && isDodging) {
- // Missile passes through during dodge - destroy missile but no damage
- missile.destroy();
- enemyMissiles.splice(i, 1);
- continue;
- }
- missile.lastY = missile.y;
- }
- // Update missiles
- for (var i = missiles.length - 1; i >= 0; i--) {
- var missile = missiles[i];
- if (missile.lastY === undefined) missile.lastY = missile.y;
- // Remove missiles that go off screen
- if (missile.y < -50) {
- missile.destroy();
- missiles.splice(i, 1);
- continue;
- }
- // Check collision with enemies
- var hitEnemy = false;
- for (var j = enemies.length - 1; j >= 0; j--) {
- var enemy = enemies[j];
- if (missile.intersects(enemy)) {
- // Enemy hit by missile
- LK.setScore(LK.getScore() + 200);
- scoreTxt.setText('Score: ' + LK.getScore());
- LK.getSound('enemyHit').play();
- // Track enemy kills for missile unlock
- enemiesKilled++;
- if (enemiesKilled % 10 === 0) {
- missileCount++;
- missileTxt.setText('Missiles: ' + missileCount);
- LK.effects.flashScreen(0x00ff00, 500);
- }
- // Remove enemy and missile
- enemy.destroy();
- enemies.splice(j, 1);
- missile.destroy();
- missiles.splice(i, 1);
- hitEnemy = true;
- break;
- }
- }
- // Check collision with bosses
- if (!hitEnemy) {
- for (var j = bosses.length - 1; j >= 0; j--) {
- var boss = bosses[j];
- if (missile.intersects(boss)) {
- // Boss hit by missile
- boss.health -= 3; // Missiles do more damage to bosses
- LK.setScore(LK.getScore() + 150);
- scoreTxt.setText('Score: ' + LK.getScore());
- LK.getSound('enemyHit').play();
- LK.effects.flashObject(boss, 0xff0000, 300);
- missile.destroy();
- missiles.splice(i, 1);
- hitEnemy = true;
- if (boss.health <= 0) {
- // Boss defeated
- LK.setScore(LK.getScore() + 1000);
- scoreTxt.setText('Score: ' + LK.getScore());
- enemiesKilled += 5;
- if (enemiesKilled % 10 === 0) {
- missileCount++;
- missileTxt.setText('Missiles: ' + missileCount);
- LK.effects.flashScreen(0x00ff00, 500);
- }
- boss.destroy();
- bosses.splice(j, 1);
- }
- break;
- }
- }
- }
- if (!hitEnemy) {
- missile.lastY = missile.y;
- }
- }
-};
\ No newline at end of file
+ backgroundColor: 0x000000
+});
\ No newline at end of file
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