User prompt
Play enemy2 destroyed sound when bullet hits enemy in level 2
User prompt
Play enemy2 destroyed sound in level 2
User prompt
Play death sound when enemy hits player
User prompt
Play death sound at game over screen
User prompt
Play death sound when player dies
User prompt
Play enemy destroyed sound when bullet hits enemy
User prompt
Play enemy destroyed sound when bullet hits enemy
User prompt
Attach sound when enemy destroyed
User prompt
Change to enemy4 once 10 enemy3 is killed
User prompt
Switch from enemy3 to enemy4 once player reaches level 4
User prompt
Change to enemy4 at level 4
User prompt
Move player further left
User prompt
Move player further left
User prompt
Move player further left
User prompt
Move player to the left a bit
User prompt
Move player back a bit
User prompt
Create asset enemy4
User prompt
Create enemy4 and switch to enemy4 when 10 enemy3 are killed
User prompt
Change to enemy4 once 10 enemy3 are killed
User prompt
Move player up a bit
User prompt
Move player back a bit
User prompt
Keep enemies in the top half of the screen
User prompt
Make enemy3 fly up and down and in small circles
User prompt
Make enemy3 fly around in circles
User prompt
Make enemy fly up and down
/**** * Classes ****/ // Define a class for bullets var Bullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('bullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 10; self.update = function () { self.x += self.speedX; self.y += self.speedY; if (self.x > 2048 + 50 || self.y < -50) { self.destroy(); } }; }); // Define a class for enemies var Enemy = Container.expand(function () { var self = Container.call(this); var enemyAssetId = LK.getScore() >= 20 ? 'enemy3' : LK.getScore() >= 10 ? 'enemy2' : 'enemy'; var enemyGraphics = self.attachAsset(enemyAssetId, { anchorX: 0.5, anchorY: 0.5 }); self.speed = 5 + Math.floor(LK.getScore() / 20); self.update = function () { self.x -= self.speed; self.y += Math.sin(LK.ticks / 20) * 5; // Make enemy fly up and down if (enemyAssetId === 'enemy2') { self.y += Math.sin(LK.ticks / 10) * 10; // Make enemy2 fly in small circles self.x += Math.cos(LK.ticks / 10) * 10; // Add horizontal movement for circular path } if (self.x < -50) { self.destroy(); } }; }); // Define a class for a steady moving background var MovingBackground = Container.expand(function () { var self = Container.call(this); var bg1 = self.attachAsset('background', { anchorX: 0, anchorY: 0 }); var bg2 = self.attachAsset('background2', { anchorX: 0, anchorY: 0 }); bg1.x = 0; bg2.x = 2048; // Position the second background right after the first one self.speed = 4 + Math.floor(LK.getScore() / 50); self.update = function () { bg1.x -= self.speed; bg2.x -= self.speed; // Reset positions to create a continuous loop if (bg1.x <= -2048) { bg1.x = bg2.x + 2048; } if (bg2.x <= -2048) { bg2.x = bg1.x + 2048; } }; }); //<Assets used in the game will automatically appear here> // Define a class for the player character var Player = Container.expand(function () { var self = Container.call(this); var playerGraphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 5; self.jumpHeight = 40; self.update = function () {}; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB // Sky blue background }); /**** * Game Code ****/ var movingBackground = game.addChild(new MovingBackground()); // Initialize player var player = game.addChild(new Player()); player.x = 2048 / 2 - 100; // Move player back a little bit player.y = 2732 / 2; // Initialize enemies var enemies = []; var enemySpawnInterval = 100; var enemySpawnCounter = 0; // Create a new Text2 object to display the score var scoreText = new Text2('0', { size: 100, fill: 0xFFFFFF }); // Add the score text to the game GUI at the top center of the screen LK.gui.top.addChild(scoreText); scoreText.x = 2048 / 2; scoreText.y = 0; // Create a new Text2 object to display the level var levelText = new Text2('Level 1', { size: 100, fill: 0xFFFFFF }); // Add the level text to the game GUI at the top left of the screen LK.gui.topLeft.addChild(levelText); levelText.x = 20; levelText.y = 0; // Add the score text next to the level text scoreText.x = levelText.x + levelText.width + 20; scoreText.y = levelText.y; // Handle game updates game.update = function () { player.update(); movingBackground.update(); // Spawn enemies enemySpawnCounter++; if (enemySpawnCounter >= enemySpawnInterval) { // Add more enemies every 10 points if (LK.getScore() % 10 === 0 && LK.getScore() !== 0) { // Update level text var currentLevel = Math.floor(LK.getScore() / 10) + 1; levelText.setText('Level ' + currentLevel); for (var i = 0; i < 2; i++) { // Add two enemies var extraEnemy = new Enemy(); extraEnemy.x = 2048; extraEnemy.y = Math.random() * (2732 / 2); // Randomize Y position in the top half enemies.push(extraEnemy); game.addChild(extraEnemy); } } var enemy = new Enemy(); enemy.x = 2048; enemy.y = Math.random() * (2732 / 2); // Randomize Y position in the top half to allow flying enemies.push(enemy); game.addChild(enemy); // Randomize the spawn interval for the next enemy enemySpawnInterval = Math.floor(Math.random() * 150) + 50; enemySpawnCounter = 0; } // Update enemies for (var j = enemies.length - 1; j >= 0; j--) { enemies[j].update(); if (player.intersects(enemies[j])) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } // Check for bullet collision with enemies for (var i = game.children.length - 1; i >= 0; i--) { if (game.children[i] instanceof Bullet && game.children[i].intersects(enemies[j])) { // Create explosion effect var explosion = LK.getAsset('fire', { anchorX: 0.5, anchorY: 0.5, x: enemies[j].x, y: enemies[j].y }); game.addChild(explosion); // Remove explosion after a short delay LK.setTimeout(function () { explosion.destroy(); }, 500); game.children[i].destroy(); enemies[j].destroy(); if (enemies[j].attachAsset('enemy2')) { LK.getSound('enemy2_destroyed').play(); } else { LK.getSound('enemy_destroyed').play(); } LK.setScore(LK.getScore() + 1); // Add 1 point to score scoreText.setText(LK.getScore()); enemies.splice(j, 1); break; enemies.splice(j, 1); break; } } } }; // Handle player jump game.down = function (x, y, obj) { var newBullet = new Bullet(); var angle = Math.atan2(y - player.y, x - player.x); newBullet.x = player.x + player.width / 2; // Adjust the bullet's initial x position to the cannon's position newBullet.y = player.y; // Adjust the bullet's initial y position to the cannon's position newBullet.speedX = Math.cos(angle) * newBullet.speed; newBullet.speedY = Math.sin(angle) * newBullet.speed; game.addChild(newBullet); LK.getSound('shoot').play(); };
/****
* Classes
****/
// Define a class for bullets
var Bullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('bullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 10;
self.update = function () {
self.x += self.speedX;
self.y += self.speedY;
if (self.x > 2048 + 50 || self.y < -50) {
self.destroy();
}
};
});
// Define a class for enemies
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemyAssetId = LK.getScore() >= 20 ? 'enemy3' : LK.getScore() >= 10 ? 'enemy2' : 'enemy';
var enemyGraphics = self.attachAsset(enemyAssetId, {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 5 + Math.floor(LK.getScore() / 20);
self.update = function () {
self.x -= self.speed;
self.y += Math.sin(LK.ticks / 20) * 5; // Make enemy fly up and down
if (enemyAssetId === 'enemy2') {
self.y += Math.sin(LK.ticks / 10) * 10; // Make enemy2 fly in small circles
self.x += Math.cos(LK.ticks / 10) * 10; // Add horizontal movement for circular path
}
if (self.x < -50) {
self.destroy();
}
};
});
// Define a class for a steady moving background
var MovingBackground = Container.expand(function () {
var self = Container.call(this);
var bg1 = self.attachAsset('background', {
anchorX: 0,
anchorY: 0
});
var bg2 = self.attachAsset('background2', {
anchorX: 0,
anchorY: 0
});
bg1.x = 0;
bg2.x = 2048; // Position the second background right after the first one
self.speed = 4 + Math.floor(LK.getScore() / 50);
self.update = function () {
bg1.x -= self.speed;
bg2.x -= self.speed;
// Reset positions to create a continuous loop
if (bg1.x <= -2048) {
bg1.x = bg2.x + 2048;
}
if (bg2.x <= -2048) {
bg2.x = bg1.x + 2048;
}
};
});
//<Assets used in the game will automatically appear here>
// Define a class for the player character
var Player = Container.expand(function () {
var self = Container.call(this);
var playerGraphics = self.attachAsset('player', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 5;
self.jumpHeight = 40;
self.update = function () {};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87CEEB // Sky blue background
});
/****
* Game Code
****/
var movingBackground = game.addChild(new MovingBackground());
// Initialize player
var player = game.addChild(new Player());
player.x = 2048 / 2 - 100; // Move player back a little bit
player.y = 2732 / 2;
// Initialize enemies
var enemies = [];
var enemySpawnInterval = 100;
var enemySpawnCounter = 0;
// Create a new Text2 object to display the score
var scoreText = new Text2('0', {
size: 100,
fill: 0xFFFFFF
});
// Add the score text to the game GUI at the top center of the screen
LK.gui.top.addChild(scoreText);
scoreText.x = 2048 / 2;
scoreText.y = 0;
// Create a new Text2 object to display the level
var levelText = new Text2('Level 1', {
size: 100,
fill: 0xFFFFFF
});
// Add the level text to the game GUI at the top left of the screen
LK.gui.topLeft.addChild(levelText);
levelText.x = 20;
levelText.y = 0;
// Add the score text next to the level text
scoreText.x = levelText.x + levelText.width + 20;
scoreText.y = levelText.y;
// Handle game updates
game.update = function () {
player.update();
movingBackground.update();
// Spawn enemies
enemySpawnCounter++;
if (enemySpawnCounter >= enemySpawnInterval) {
// Add more enemies every 10 points
if (LK.getScore() % 10 === 0 && LK.getScore() !== 0) {
// Update level text
var currentLevel = Math.floor(LK.getScore() / 10) + 1;
levelText.setText('Level ' + currentLevel);
for (var i = 0; i < 2; i++) {
// Add two enemies
var extraEnemy = new Enemy();
extraEnemy.x = 2048;
extraEnemy.y = Math.random() * (2732 / 2); // Randomize Y position in the top half
enemies.push(extraEnemy);
game.addChild(extraEnemy);
}
}
var enemy = new Enemy();
enemy.x = 2048;
enemy.y = Math.random() * (2732 / 2); // Randomize Y position in the top half to allow flying
enemies.push(enemy);
game.addChild(enemy);
// Randomize the spawn interval for the next enemy
enemySpawnInterval = Math.floor(Math.random() * 150) + 50;
enemySpawnCounter = 0;
}
// Update enemies
for (var j = enemies.length - 1; j >= 0; j--) {
enemies[j].update();
if (player.intersects(enemies[j])) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
}
// Check for bullet collision with enemies
for (var i = game.children.length - 1; i >= 0; i--) {
if (game.children[i] instanceof Bullet && game.children[i].intersects(enemies[j])) {
// Create explosion effect
var explosion = LK.getAsset('fire', {
anchorX: 0.5,
anchorY: 0.5,
x: enemies[j].x,
y: enemies[j].y
});
game.addChild(explosion);
// Remove explosion after a short delay
LK.setTimeout(function () {
explosion.destroy();
}, 500);
game.children[i].destroy();
enemies[j].destroy();
if (enemies[j].attachAsset('enemy2')) {
LK.getSound('enemy2_destroyed').play();
} else {
LK.getSound('enemy_destroyed').play();
}
LK.setScore(LK.getScore() + 1); // Add 1 point to score
scoreText.setText(LK.getScore());
enemies.splice(j, 1);
break;
enemies.splice(j, 1);
break;
}
}
}
};
// Handle player jump
game.down = function (x, y, obj) {
var newBullet = new Bullet();
var angle = Math.atan2(y - player.y, x - player.x);
newBullet.x = player.x + player.width / 2; // Adjust the bullet's initial x position to the cannon's position
newBullet.y = player.y; // Adjust the bullet's initial y position to the cannon's position
newBullet.speedX = Math.cos(angle) * newBullet.speed;
newBullet.speedY = Math.sin(angle) * newBullet.speed;
game.addChild(newBullet);
LK.getSound('shoot').play();
};
🔥 fire. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Mario driving a tank. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Wario flying an aeroplane. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Waluigi flying a helicopter. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows