User prompt
Do it
User prompt
You should add enemy2 asset as a different enemy not onto the enemy asset
User prompt
Add enemy2 asset to the game and in arrowselector from the wave: 10
User prompt
Half the wave counter size
User prompt
Move the Wave: text next to the pause button.
User prompt
Move the Wave: text closer to the pause button.
User prompt
Move the Wave: text next to the pause button.
User prompt
Move the Wave: text to the topright corner of the map
User prompt
Place the Wave: text to the left bottom corner of the map
User prompt
Remove block from the game
User prompt
Remove boss enemy from the game
User prompt
Ensure hero is not shoot from the center of the asset but from the left and right edge of the asset
User prompt
Migrate to the latest version of LK
Remix started
Copy Air Force War (UPDATE 3.5)
/**** * Classes ****/ // Define the Enemy class var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); // Initialize health for enemy to take 2 hits self.health = 2; // Initialize direction and speed for structured movement self.directionX = Math.random() < 0.5 ? -1 : 1; self.directionY = Math.random() < 0.5 ? -1 : 1; self.speed = 5; self._update_migrated = function () { self.x += self.directionX * self.speed; self.y += self.directionY * self.speed; // Reverse direction when hitting the screen boundaries if (self.x <= 100 || self.x >= 1948) { self.directionX *= -1; } if (self.y <= 100 || self.y >= 2732 / 2 - 100) { self.directionY *= -1; } }; }); // Define the EnemyBullet class var EnemyBullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('enemyBullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 10; self._move_migrated = function () { self.y += self.speed; }; }); // Define the Hero class var Hero = Container.expand(function () { var self = Container.call(this); var heroGraphics = self.attachAsset('hero', { anchorX: 0.5, anchorY: 0.5 }); self.health = 5; // Player must be hit 5 times before dying self.shootInterval = 27; // 0.45 seconds at 60FPS self.lastShotTick = 0; self._update_migrated = function () { if (LK.ticks - self.lastShotTick >= self.shootInterval) { this.shoot(); self.lastShotTick = LK.ticks; } self.setColor = function (color) { heroGraphics.tint = color; // Change the tint of the hero }; // Hero update logic }; self.shoot = function () { // Shoot bullet from the left edge var leftBullet = new HeroBullet(); leftBullet.x = this.x - heroGraphics.width / 2; leftBullet.y = this.y - 50; heroBullets.push(leftBullet); game.addChild(leftBullet); // Shoot bullet from the right edge var rightBullet = new HeroBullet(); rightBullet.x = this.x + heroGraphics.width / 2; rightBullet.y = this.y - 50; heroBullets.push(rightBullet); game.addChild(rightBullet); }; }); // Define the HeroBullet class var HeroBullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('heroBullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = -10; self._move_migrated = function () { self.y += self.speed; }; }); var Star = Container.expand(function () { var self = Container.call(this); var starGraphics = self.attachAsset('whiteStar', { anchorX: 0.5, anchorY: 0.5 }); // Set a random scale for the star to vary its size var scale = Math.random() * 0.5 + 0.5; self.scaleX = scale; self.scaleY = scale; // Set a random alpha for the star to vary its brightness self.alpha = Math.random() * 0.5 + 0.5; // Set a random speed for the star to move downwards self.speed = Math.random() * 1 + 0.5; self._move_migrated = function () { self.y += self.speed; // Reset star position if it moves off screen if (self.y > 2732) { self.y = -10; self.x = Math.random() * 2048; } }; }); var WaveManager = Container.expand(function () { var self = Container.call(this); self.waveCount = 0; self.enemiesPerWave = 5; self.enemies = []; self.createWave = function () { { // Other waves: Spawn regular enemies for (var i = 0; i < self.enemiesPerWave; i++) { var enemy = game.addChild(new Enemy()); enemy.x = Math.random() * (2048 - 100) + 50; enemy.y = Math.random() * (2732 / 2 - 200) + 100; self.enemies.push(enemy); } } self.waveCount++; waveCounterTxt.setText('Wave: ' + (self.waveCount + 1)); }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 // Init game with black background }); /**** * Game Code ****/ var stars = []; for (var i = 0; i < 100; i++) { var star = new Star(); star.x = Math.random() * 2048; star.y = Math.random() * 2732; stars.push(star); game.addChild(star); } // Update the stars in the game tick event LK.on('tick', function () { for (var i = 0; i < stars.length; i++) { stars[i]._move_migrated(); } // Existing game tick code... }); function playExplosionEffect(x, y) { // Play explosion sound LK.getSound('explosion').play(); // Display explosion animation at (x, y) var explosion = LK.getAsset('explosion', { anchorX: 0.5, anchorY: 0.5 }); explosion.x = x; explosion.y = y; game.addChild(explosion); // Optionally, remove the explosion after some time LK.setTimeout(function () { explosion.destroy(); }, 500); // Adjust the time as needed } var waveManager = game.addChild(new WaveManager()); var waveCounterTxt = new Text2('Wave: 0', { size: 50, fill: 0xFFFFFF }); waveCounterTxt.x = -100; // Adjust the x position to move it closer to the pause button LK.gui.top.addChild(waveCounterTxt); waveManager.createWave(); // Define assets for the game // Initialize game elements var hero = game.addChild(new Hero()); hero.x = 2048 / 2; hero.y = 2732 - 150; var enemies = []; var heroBullets = []; var enemyBullets = []; var blocks = []; // Game tick event LK.on('tick', function () { // Update hero hero._update_migrated(); // Update enemies for (var i = 0; i < waveManager.enemies.length; i++) { waveManager.enemies[i]._update_migrated(); } // Move hero bullets and check for collisions with enemies for (var i = heroBullets.length - 1; i >= 0; i--) { var bullet = heroBullets[i]; bullet._move_migrated(); // Check for bullet collision with enemies or off-screen for (var j = waveManager.enemies.length - 1; j >= 0; j--) { if (bullet.intersects(waveManager.enemies[j])) { // Decrease enemy health and check if it should be destroyed waveManager.enemies[j].health--; LK.effects.flashObject(waveManager.enemies[j], 0xff0000, 500); if (waveManager.enemies[j].health <= 0) { waveManager.enemies[j].destroy(); playExplosionEffect(waveManager.enemies[j].x, waveManager.enemies[j].y); waveManager.enemies.splice(j, 1); } bullet.destroy(); heroBullets.splice(i, 1); break; } } if (bullet.y < 0) { bullet.destroy(); heroBullets.splice(i, 1); } } // Check if all enemies are defeated to create a new wave if (waveManager.enemies.length === 0) { waveManager.createWave(); } // Enemy shooting logic if (LK.ticks % 120 == 0) { waveManager.enemies.forEach(function (enemy) { var bullet = new EnemyBullet(); bullet.x = enemy.x; bullet.y = enemy.y; enemyBullets.push(bullet); game.addChild(bullet); }); } // Move enemy bullets and check for collisions for (var i = enemyBullets.length - 1; i >= 0; i--) { var bullet = enemyBullets[i]; bullet._move_migrated(); // Check for bullet collision with hero or off-screen if (bullet.intersects(hero)) { hero.health -= 1; // Decrease hero's health by one LK.effects.flashObject(hero, 0xff0000, 500); bullet.destroy(); enemyBullets.splice(i, 1); if (hero.health <= 0) { // Game over logic LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } } if (bullet.y > 2732) { bullet.destroy(); enemyBullets.splice(i, 1); } } }); // Touch event handling for hero movement and shooting game.on('down', function (x, y, obj) { var pos = game.toLocal(obj.global); hero.x = pos.x; }); var heroColorText = new Text2('', { size: 50, fill: 0xFFFFFF, x: 2048 / 2, y: 2732 - 100 }); LK.gui.bottom.addChild(heroColorText); function updateHeroColorText(color) { var colorName = { 0x4fd54a: 'Green', 0xff0000: 'Red', 0x0000ff: 'Blue', 0xffff00: 'Yellow' }; heroColorText.setText('Hero Color: ' + colorName[color]); } // Create a hero bullet when the hero shoots Hero.prototype.shoot = function () { var bullet = new HeroBullet(); bullet.x = this.x; bullet.y = this.y - 50; // Adjust bullet start position heroBullets.push(bullet); game.addChild(bullet); }; // Update the hero's position based on touch movement game.on('move', function (x, y, obj) { var pos = game.toLocal(obj.global); hero.x = pos.x; }); // Ensure the hero stays within the game boundaries Hero.prototype._update_migrated = function () { this.x = Math.max(50, Math.min(this.x, 2048 - 50)); };
===================================================================
--- original.js
+++ change.js
@@ -25,33 +25,8 @@
self.directionY *= -1;
}
};
});
-// Define the Enemy2 class
-var Enemy2 = Container.expand(function () {
- var self = Container.call(this);
- var enemyGraphics = self.attachAsset('enemy2', {
- anchorX: 0.5,
- anchorY: 0.5
- });
- // Initialize health for enemy2 to take 3 hits
- self.health = 3;
- // Initialize direction and speed for structured movement
- self.directionX = Math.random() < 0.5 ? -1 : 1;
- self.directionY = Math.random() < 0.5 ? -1 : 1;
- self.speed = 4;
- self._update_migrated = function () {
- self.x += self.directionX * self.speed;
- self.y += self.directionY * self.speed;
- // Reverse direction when hitting the screen boundaries
- if (self.x <= 100 || self.x >= 1948) {
- self.directionX *= -1;
- }
- if (self.y <= 100 || self.y >= 2732 / 2 - 100) {
- self.directionY *= -1;
- }
- };
-});
// Define the EnemyBullet class
var EnemyBullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('enemyBullet', {
@@ -138,17 +113,9 @@
self.waveCount = 0;
self.enemiesPerWave = 5;
self.enemies = [];
self.createWave = function () {
- if (self.waveCount >= 10) {
- // From wave 10, spawn enemy2
- for (var i = 0; i < self.enemiesPerWave; i++) {
- var enemy2 = game.addChild(new Enemy2());
- enemy2.x = Math.random() * (2048 - 100) + 50;
- enemy2.y = Math.random() * (2732 / 2 - 200) + 100;
- self.enemies.push(enemy2);
- }
- } else {
+ {
// Other waves: Spawn regular enemies
for (var i = 0; i < self.enemiesPerWave; i++) {
var enemy = game.addChild(new Enemy());
enemy.x = Math.random() * (2048 - 100) + 50;
@@ -185,8 +152,24 @@
stars[i]._move_migrated();
}
// Existing game tick code...
});
+function playExplosionEffect(x, y) {
+ // Play explosion sound
+ LK.getSound('explosion').play();
+ // Display explosion animation at (x, y)
+ var explosion = LK.getAsset('explosion', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ explosion.x = x;
+ explosion.y = y;
+ game.addChild(explosion);
+ // Optionally, remove the explosion after some time
+ LK.setTimeout(function () {
+ explosion.destroy();
+ }, 500); // Adjust the time as needed
+}
var waveManager = game.addChild(new WaveManager());
var waveCounterTxt = new Text2('Wave: 0', {
size: 50,
fill: 0xFFFFFF
@@ -222,8 +205,9 @@
waveManager.enemies[j].health--;
LK.effects.flashObject(waveManager.enemies[j], 0xff0000, 500);
if (waveManager.enemies[j].health <= 0) {
waveManager.enemies[j].destroy();
+ playExplosionEffect(waveManager.enemies[j].x, waveManager.enemies[j].y);
waveManager.enemies.splice(j, 1);
}
bullet.destroy();
heroBullets.splice(i, 1);