User prompt
make enemy_4 shoot bullets up and down the screen randomly
User prompt
the player should die when touching enemy_4
User prompt
add collisions for enemy_4
User prompt
add another enemy that goes from one side of the screen to the other. once it has gone across once, remove it. randomise the direction, add a new image for enemy_4
User prompt
add another enemy that comes from one side of the screen to the other
Code edit (1 edits merged)
Please save this source code
User prompt
when playing the end game sound, wait for a while before showing the game over
Code edit (1 edits merged)
Please save this source code
User prompt
add exlosion sound when the player dies
User prompt
add background_music
Code edit (1 edits merged)
Please save this source code
User prompt
add the bullet_hit sound when a bullet hits an enemy
Code edit (1 edits merged)
Please save this source code
User prompt
add a the player_shoot sound when the player shoots
User prompt
the bullets collisions are not being detectd
User prompt
make the colllision detection more accurate
Code edit (2 edits merged)
Please save this source code
User prompt
if the player touches an enemy, end the game asd display final score
Code edit (1 edits merged)
Please save this source code
User prompt
give that second explosion a new image
User prompt
add an explosion when an enemy is defeated
User prompt
add a breaf graphic when a bullet colides with an enemy
User prompt
there is still no flash
Code edit (21 edits merged)
Please save this source code
User prompt
there is still o visual flash
/**** * Classes ****/ // Bullet class var Bullet = Container.expand(function () { var self = Container.call(this); //var bulletGraphics = self.attachAsset('bullet', { // anchorX: 0.5, // anchorY: 0.5 //}); self.direction = 0; self.speed_y = -10; self.speed_x = 0; self.power = 2; self.update = function () { self.x += self.speed_x; self.y += self.speed_y; }; }); // Player class var Player = Container.expand(function () { var self = Container.call(this); var playerGraphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); self.shoot = function () { forward_lazer(); split_shot(); }; }); // PowerUp class var PowerUp = Container.expand(function () { var self = Container.call(this); var powerUpGraphics = self.attachAsset('powerUp', { anchorX: 0.5, anchorY: 0.5 }); self.update = function () { self.y += 1; }; }); // Function to spawn power-ups //<Assets used in the game will automatically appear here> //<Write imports for supported plugins here> // enemy_1 class var enemy_1 = Container.expand(function () { var self = Container.call(this); self.n = 0; self.xpos = 0.0; var enemy_1Graphics = self.attachAsset('enemy_1', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 3; self.update = function () { self.y += self.speed; self.x = self.xpos + Math.sin(self.y / 100) * enemy_1_movemwnt_amplitude; // Make enemy_1 move in a sine wave //self.x = self.xpos + Math.floor(self.y); }; }); // enemy_2 class var enemy_2 = Container.expand(function () { var self = Container.call(this); self.n = 0; self.xpos = 0.0; self.lives = 5; var enemy_2Graphics = self.attachAsset('enemy_2', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 3; self.update = function () { self.y += self.speed; self.x = self.xpos + Math.sin(self.y / 100) * enemy_2_movemwnt_amplitude; // Make enemy_2 move in a sine wave }; }); // enemy_3 class var enemy_3 = Container.expand(function () { var self = Container.call(this); self.n = 0; self.xpos = 0.0; self.lives = 10; self.odd = 0; var enemy_3Graphics = self.attachAsset('enemy_3', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 4; self.update = function () { self.y += self.speed; self.x = self.xpos + self.odd * Math.sin(self.y / 200) * enemy_1_movemwnt_amplitude; // Make enemy_3 move in a sine wave }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 //Init game with black background }); /**** * Game Code ****/ function createExplosion(x, y) { var explosion = LK.getAsset('explosion', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChild(explosion); LK.effects.flashObject(explosion, 0xFFFFFF, 100); LK.setTimeout(function () { explosion.destroy(); }, 100); } function forward_lazer() { var bullet = new Bullet(); bullet.x = player.x; bullet.y = player.y - 50; bullet.power = 2; bullet.attachAsset('bullet', { anchorX: 0.5, anchorY: 0.5 }); bullets.push(bullet); game.addChild(bullet); LK.getSound('Player_shoot').play(); } function split_shot() { var bullet1 = new Bullet(); bullet1.x = player.x - 80; bullet1.y = player.y - 50; bullet1.power = 1; bullet1.speed_x = -0.9; bullet1.attachAsset('bullet2', { anchorX: 0.5, anchorY: 0.5 }); var bullet2 = new Bullet(); bullet2.x = player.x + 80; bullet2.y = player.y - 50; bullet2.power = 1; bullet2.speed_x = 0.9; bullet2.attachAsset('bullet2', { anchorX: 0.5, anchorY: 0.5 }); bullets.push(bullet1); bullets.push(bullet2); game.addChild(bullet1); game.addChild(bullet2); } var background = LK.getAsset('background', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 }); game.addChild(background); LK.playMusic('background_music', { loop: true }); function spawnPowerUp() { var powerUp = new PowerUp(); powerUp.x = Math.random() * 2048; powerUp.y = -50; powerUps.push(powerUp); game.addChild(powerUp); } // Function to spawn enemy_1s function spawnEnemy_1() { if (enemy_1s.length > 1 * enemy_1_wave_length) { return; } var groupX = Math.random() * (2048 - enemy_1_movemwnt_amplitude * 2) + enemy_1_movemwnt_amplitude; // Generate a random x position for the group for (var i = 0.0; i < enemy_1_wave_length; i++) { var enemy = new enemy_1(); enemy.n = i; enemy.y = -50 - i * 110; // Assign a slightly different y position to each enemy enemy.xpos = groupX; // Assign the group x position to the enemy enemy.group = enemy_1GroupCount; // Assign the group number to the enemy enemy_1s.push(enemy); game.addChild(enemy); } // Increment enemy_1 group counter enemy_1GroupCount += 1; } // Function to spawn enemy_1s function spawnEnemy_2() { if (enemy_2s.length > 2 * enemy_2_wave_length) { return; } if (LK.getScore() > 200) { var groupX = Math.random() * (2048 - enemy_2_movemwnt_amplitude * 2) + enemy_2_movemwnt_amplitude; // Generate a random x position for the group for (var i = 0.0; i < enemy_2_wave_length; i++) { var groupX = Math.random() * (2048 - enemy_2_movemwnt_amplitude * 2) + enemy_2_movemwnt_amplitude; // Generate a random x position var enemy = new enemy_2(); enemy.n = i; enemy.y = -50 - i * 110; // Assign a slightly different y position to each enemy enemy.xpos = groupX; // Assign the group x position to the enemy enemy.group = enemy_2GroupCount; // Assign the group number to the enemy enemy_2s.push(enemy); game.addChild(enemy); } } // Increment enemy_1 group counter enemy_2GroupCount += 1; } // Function to spawn enemy_3s function spawnEnemy_3() { if (enemy_3s.length > 2 * enemy_3_wave_length) { return; } if (LK.getScore() > 1000) { var groupX = Math.random() * (2048 - enemy_3_movemwnt_amplitude * 2) + enemy_3_movemwnt_amplitude; // Generate a random x position for the group odd = -1; for (var i = 0.0; i < enemy_3_wave_length; i++) { var enemy = new enemy_3(); enemy.n = i; enemy.odd = odd; enemy.y = -50 - i / 2 * 50; // Assign a slightly different y position to each enemy enemy.xpos = groupX; // Assign the group x position to the enemy enemy.group = enemy_3GroupCount; // Assign the group number to the enemy enemy_3s.push(enemy); game.addChild(enemy); odd *= -1; } // Increment enemy_1 group counter enemy_3GroupCount += 1; } } var powerUpLevelText = new Text2('Power-Up Level: 0', { size: 100, fill: 0xFFFFFF }); powerUpLevelText.anchor.set(0, 0); LK.gui.topLeft.addChild(powerUpLevelText); // Function to update the power-up level display function updatePowerUpLevelDisplay() { powerUpLevelText.setText('Power-Up Level: ' + poweruplevel); } // Example: Update power-up level when player collects a power-up function onPowerUpCollected() { poweruplevel += 1; updatePowerUpLevelDisplay(); } var scoreText = new Text2('Score: 0', { size: 100, fill: 0xFFFFFF }); scoreText.anchor.set(1, 0); LK.gui.topRight.addChild(scoreText); // Function to update the score display function updateScoreDisplay() { scoreText.setText('Score: ' + LK.getScore()); } // Update the score display whenever the score changes LK.on('scoreChange', updateScoreDisplay); /**** * Variables ****/ // Initialize player var enemy_1_movemwnt_amplitude = 200; var enemy_2_movemwnt_amplitude = 20; var enemy_3_movemwnt_amplitude = 40; var poweruplevel = 0; var player = game.addChild(new Player()); player.x = 2048 / 2; player.y = 2500; // Initialize arrays var bullets = []; var powerUps = []; // Initialize arrays for enemy_1 instances var enemy_1s = []; // Initialize arrays for enemy_2 instances var enemy_2s = []; // Initialize arrays for enemy_3 instances var enemy_3s = []; // Initialize enemy_1 group counter var enemy_1GroupCount = 0; var enemy_2GroupCount = 0; var enemy_3GroupCount = 0; var enemy_1_wave_length = 5; var enemy_2_wave_length = 5; var enemy_3_wave_length = 14; // Game update function game.update = function () { // Update enemy_1s for (var i = enemy_1s.length - 1; i >= 0; i--) { var enemy_1 = enemy_1s[i]; //enemy_1.update(); if (enemy_1.y > 2732) { enemy_1.destroy(); enemy_1s.splice(i, 1); } } // Update enemy_2s for (var i = enemy_2s.length - 1; i >= 0; i--) { var enemy_2 = enemy_2s[i]; //enemy_2.update(); if (enemy_2.y > 2732) { enemy_2.destroy(); enemy_2s.splice(i, 1); } } // Update enemy_3s for (var i = enemy_3s.length - 1; i >= 0; i--) { var enemy_3 = enemy_3s[i]; //enemy_3.update(); if (enemy_3.y > 2732) { enemy_3.destroy(); enemy_3s.splice(i, 1); } } // Update bullets for (var j = bullets.length - 1; j >= 0; j--) { var bullet = bullets[j]; bullet.update(); if (bullet.y < 0) { bullet.destroy(); bullets.splice(j, 1); } } // Update power-ups for (var k = powerUps.length - 1; k >= 0; k--) { var powerUp = powerUps[k]; powerUp.update(); if (powerUp.y > 2732) { powerUp.destroy(); powerUps.splice(k, 1); } } // Check for collisions checkCollisions(); }; // Function to check for collisions function checkCollisions() { // Check bullet and enemy_1 collisions for (var i = bullets.length - 1; i >= 0; i--) { var bullet = bullets[i]; for (var j = enemy_1s.length - 1; j >= 0; j--) { var enemy_1 = enemy_1s[j]; if (bullet.intersects(enemy_1)) { LK.getSound('bullet_hit').play(); LK.effects.flashObject(enemy_1, 0xFFFFFF, 100); // Flash enemy_1 white for 100ms createExplosion(bullet.x, bullet.y); bullet.destroy(); createExplosion(enemy_1.x, enemy_1.y); enemy_1.destroy(); bullets.splice(i, 1); enemy_1s.splice(j, 1); LK.getSound('enemy_eplode').play(); LK.setScore(LK.getScore() + 10); // Increase score by 10 for enemy_1 updateScoreDisplay(); // Update the score display // Check if all enemies in the defeated enemy's group are also defeated if (!enemy_1s.some(function (e) { return e.group === enemy_1.group; })) { // If true, spawn a powerup spawnPowerUp(); } break; } } } // Check bullet and enemy_2 collisions for (var i = bullets.length - 1; i >= 0; i--) { var bullet = bullets[i]; for (var j = enemy_2s.length - 1; j >= 0; j--) { var enemy_2 = enemy_2s[j]; if (bullet.intersects(enemy_2)) { LK.getSound('bullet_hit').play(); LK.effects.flashObject(enemy_2, 0xFFFFFF, 100); // Flash enemy_2 white for 100ms createExplosion(bullet.x, bullet.y); bullet.destroy(); enemy_2.lives -= bullet.power; if (enemy_2.lives < 0) { var explosion2 = LK.getAsset('explosion2', { anchorX: 0.5, anchorY: 0.5, x: enemy_2.x, y: enemy_2.y }); game.addChild(explosion2); LK.effects.flashObject(explosion2, 0xFFFFFF, 100); LK.setTimeout(function () { explosion2.destroy(); }, 100); enemy_2.destroy(); enemy_2s.splice(j, 1); LK.getSound('enemy_eplode').play(); LK.setScore(LK.getScore() + 20 * bullet.power); // Increase score by 20 for enemy_2 updateScoreDisplay(); // Update the score display if (!enemy_2s.some(function (e) { return e.group === enemy_2.group; })) { // If true, spawn a powerup spawnPowerUp(); } } else { bullets.splice(i, 1); } break; } } } // Check bullet and enemy_3 collisions for (var i = bullets.length - 1; i >= 0; i--) { var bullet = bullets[i]; for (var j = enemy_3s.length - 1; j >= 0; j--) { var enemy_3 = enemy_3s[j]; if (bullet.intersects(enemy_3)) { LK.getSound('bullet_hit').play(); LK.effects.flashObject(enemy_3, 0xFFFFFF, 100); // Flash enemy_3 white for 100ms createExplosion(bullet.x, bullet.y); bullet.destroy(); enemy_3.lives -= bullet.power; if (enemy_3.lives < 0) { var explosion2 = LK.getAsset('explosion2', { anchorX: 0.5, anchorY: 0.5, x: enemy_3.x, y: enemy_3.y }); game.addChild(explosion2); LK.effects.flashObject(explosion2, 0xFFFFFF, 100); LK.setTimeout(function () { explosion2.destroy(); }, 100); createExplosion(enemy_3.x, enemy_3.y); enemy_3.destroy(); enemy_3s.splice(j, 1); LK.getSound('enemy_eplode').play(); LK.setScore(LK.getScore() + 50 * bullet.power); // Increase score by 20 for enemy_2 updateScoreDisplay(); // Update the score display if (!enemy_3s.some(function (e) { return e.group === enemy_3.group; })) { // If true, spawn a powerup spawnPowerUp(); } } else { bullets.splice(i, 1); } break; } } } // Check player and power-up collisions for (var k = powerUps.length - 1; k >= 0; k--) { var powerUp = powerUps[k]; if (player.intersects(powerUp)) { powerUp.destroy(); powerUps.splice(k, 1); onPowerUpCollected(); } } // Check player and enemy collisions for (var i = enemy_1s.length - 1; i >= 0; i--) { var enemy_1 = enemy_1s[i]; if (player.intersects(enemy_1)) { var explosion2 = LK.getAsset('explosion2', { anchorX: 0.5, anchorY: 0.5, x: player.x, y: player.y }); game.addChild(explosion2); LK.effects.flashObject(explosion2, 0xFFFFFF, 100); LK.setTimeout(function () { explosion2.destroy(); }, 200); player.destroy(); LK.showGameOver(); return; } } for (var i = enemy_2s.length - 1; i >= 0; i--) { var enemy_2 = enemy_2s[i]; if (player.intersects(enemy_2)) { LK.showGameOver(); return; } } for (var i = enemy_3s.length - 1; i >= 0; i--) { var enemy_3 = enemy_3s[i]; if (player.intersects(enemy_3)) { LK.showGameOver(); return; } } } // Set intervals for spawning LK.setInterval(spawnEnemy_1, 4000); LK.setInterval(spawnEnemy_2, 5200); LK.setInterval(spawnEnemy_3, 6400); // Player controls game.down = function (x, y, obj) { player.x = x; player.y = y; }; game.move = function (x, y, obj) { player.x = x; player.y = y; }; game.up = function (x, y, obj) { player.shoot(); };
===================================================================
--- original.js
+++ change.js
@@ -159,9 +159,11 @@
x: 2048 / 2,
y: 2732 / 2
});
game.addChild(background);
-// Function to spawn power-ups
+LK.playMusic('background_music', {
+ loop: true
+});
function spawnPowerUp() {
var powerUp = new PowerUp();
powerUp.x = Math.random() * 2048;
powerUp.y = -50;
spaceship, retro game, 2d. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
yellow ball. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
game flying saucer. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
star field. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
neon circle with a 'p'. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
fire explosion. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
double sided space ship. symetrical. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows, color, neon
hot stone, red. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
large rock. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows