/**** * Classes ****/ // Bullet class for player var Bullet = Container.expand(function () { var self = Container.call(this); self.assetId = 'playerBullet'; var bulletGraphics = self.attachAsset(self.assetId, { anchorX: 0.5, anchorY: 0.5 }); // Bullet speed self.speed = -15; // Bullet update method self.update = function () { self.y += self.speed; }; }); // Enemy class var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemyShip', { anchorX: 0.5, anchorY: 0.5, width: 200, height: 200 }); // Enemy update method self.update = function () { // Enemies will slowly descend self.y += 0.5; // If enemy reaches the bottom of the screen if (self.y >= 2732) { // Destroy the enemy self.destroy(); } }; }); // New enemy class var EnemyPan = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemyPan', { anchorX: 0.5, anchorY: 0.5, width: 200, height: 200 }); // Enemy update method self.update = function () { // Enemies will slowly descend self.y += 0.5; // If enemy reaches the bottom of the screen if (self.y >= 2732) { // Destroy the enemy self.destroy(); } }; }); // Assets are automatically created and managed by the LK engine based on usage in the game code. // Player spaceship class var Player = Container.expand(function () { var self = Container.call(this); var playerGraphics = self.attachAsset('playerShip', { anchorX: 0.5, anchorY: 0.5 }); // Player movement speed self.speed = 10; // Update method for player movement self.update = function () { if (this.moveLeft) { this.x -= this.speed; } if (this.moveRight) { this.x += this.speed; } }; // Ensure player stays within game bounds self.limitBounds = function () { this.x = Math.max(this.x, 0); this.x = Math.min(this.x, 2048); }; }); // PowerUp class var PowerUp = Container.expand(function () { var self = Container.call(this); var powerUpGraphics = self.attachAsset('powerUp', { anchorX: 0.5, anchorY: 0.5 }); // PowerUp update method self.update = function () { // PowerUps will slowly descend self.y += 0.5; // If PowerUp reaches the bottom of the screen if (self.y >= 2732) { self.destroy(); } }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 // Initialize game with black background }); /**** * Game Code ****/ // Initialize background var background = game.addChild(LK.getAsset('background', { anchorX: 0.0, anchorY: 0.0, x: 0, y: 0, width: 2048, height: 2732 })); // Initialize player var player = game.addChild(new Player()); player.x = 1024; // Start in the middle of the game width player.y = 2500; // Start near the bottom of the game height // Initialize enemies var enemies = []; for (var i = 0; i < 5; i++) { for (var j = 0; j < 10; j++) { var enemy; // Replace one enemy with a power up if (i == 2 && j == 5) { enemy = new PowerUp(); } else { // Add the new enemy type to every second row if (i % 2 == 0) { enemy = new EnemyPan(); } else { enemy = new Enemy(); } } enemy.x = 100 + j * 325; // Increase horizontal spacing between enemies enemy.y = 100 + i * 325; // Increase vertical spacing between enemies game.addChild(enemy); enemies.push(enemy); } } // Initialize bullets array var bullets = []; // Touch controls for player movement game.down = function (x, y, obj) { if (x < 1024) { player.moveLeft = true; player.moveRight = false; } else { player.moveRight = true; player.moveLeft = false; } }; game.up = function (x, y, obj) { player.moveLeft = false; player.moveRight = false; }; // Fire bullet on touch game.move = function (x, y, obj) { var bullet = new Bullet(); bullet.x = player.x; bullet.y = player.y - 50; // Start bullet at the top of the player game.addChild(bullet); bullets.push(bullet); }; // Game update function game.update = function () { // Update player position and keep within bounds player.update(); player.limitBounds(); // Update all bullets for (var i = bullets.length - 1; i >= 0; i--) { bullets[i].update(); // Remove bullets that go off screen if (bullets[i].y < 0) { bullets[i].destroy(); bullets.splice(i, 1); } } // Update all enemies for (var i = 0; i < enemies.length; i++) { enemies[i].update(); } // Collision detection between bullets and enemies for (var i = bullets.length - 1; i >= 0; i--) { for (var j = enemies.length - 1; j >= 0; j--) { if (bullets[i].intersects(enemies[j])) { bullets[i].destroy(); bullets.splice(i, 1); if (!(enemies[j] instanceof PowerUp)) { enemies[j].destroy(); enemies.splice(j, 1); } break; // Exit the inner loop if a collision is detected } } } // Collision detection between player and enemies for (var j = 0; j < enemies.length; j++) { if (player.intersects(enemies[j])) { if (enemies[j] instanceof PowerUp) { // Handle power up enemies[j].destroy(); enemies.splice(j, 1); // Change the player's bullet asset to the power up's asset Bullet.prototype.assetId = 'powerUp'; } else { // Flash screen red for 1 second (1000ms) to show we are dead. LK.effects.flashScreen(0xff0000, 1000); // Show game over. The game will be automatically paused while game over is showing. LK.showGameOver(); // Calling this will destroy the 'Game' and reset entire game state. break; // Exit the loop if a collision is detected } } } };
/****
* Classes
****/
// Bullet class for player
var Bullet = Container.expand(function () {
var self = Container.call(this);
self.assetId = 'playerBullet';
var bulletGraphics = self.attachAsset(self.assetId, {
anchorX: 0.5,
anchorY: 0.5
});
// Bullet speed
self.speed = -15;
// Bullet update method
self.update = function () {
self.y += self.speed;
};
});
// Enemy class
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemyShip', {
anchorX: 0.5,
anchorY: 0.5,
width: 200,
height: 200
});
// Enemy update method
self.update = function () {
// Enemies will slowly descend
self.y += 0.5;
// If enemy reaches the bottom of the screen
if (self.y >= 2732) {
// Destroy the enemy
self.destroy();
}
};
});
// New enemy class
var EnemyPan = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemyPan', {
anchorX: 0.5,
anchorY: 0.5,
width: 200,
height: 200
});
// Enemy update method
self.update = function () {
// Enemies will slowly descend
self.y += 0.5;
// If enemy reaches the bottom of the screen
if (self.y >= 2732) {
// Destroy the enemy
self.destroy();
}
};
});
// Assets are automatically created and managed by the LK engine based on usage in the game code.
// Player spaceship class
var Player = Container.expand(function () {
var self = Container.call(this);
var playerGraphics = self.attachAsset('playerShip', {
anchorX: 0.5,
anchorY: 0.5
});
// Player movement speed
self.speed = 10;
// Update method for player movement
self.update = function () {
if (this.moveLeft) {
this.x -= this.speed;
}
if (this.moveRight) {
this.x += this.speed;
}
};
// Ensure player stays within game bounds
self.limitBounds = function () {
this.x = Math.max(this.x, 0);
this.x = Math.min(this.x, 2048);
};
});
// PowerUp class
var PowerUp = Container.expand(function () {
var self = Container.call(this);
var powerUpGraphics = self.attachAsset('powerUp', {
anchorX: 0.5,
anchorY: 0.5
});
// PowerUp update method
self.update = function () {
// PowerUps will slowly descend
self.y += 0.5;
// If PowerUp reaches the bottom of the screen
if (self.y >= 2732) {
self.destroy();
}
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 // Initialize game with black background
});
/****
* Game Code
****/
// Initialize background
var background = game.addChild(LK.getAsset('background', {
anchorX: 0.0,
anchorY: 0.0,
x: 0,
y: 0,
width: 2048,
height: 2732
}));
// Initialize player
var player = game.addChild(new Player());
player.x = 1024; // Start in the middle of the game width
player.y = 2500; // Start near the bottom of the game height
// Initialize enemies
var enemies = [];
for (var i = 0; i < 5; i++) {
for (var j = 0; j < 10; j++) {
var enemy;
// Replace one enemy with a power up
if (i == 2 && j == 5) {
enemy = new PowerUp();
} else {
// Add the new enemy type to every second row
if (i % 2 == 0) {
enemy = new EnemyPan();
} else {
enemy = new Enemy();
}
}
enemy.x = 100 + j * 325; // Increase horizontal spacing between enemies
enemy.y = 100 + i * 325; // Increase vertical spacing between enemies
game.addChild(enemy);
enemies.push(enemy);
}
}
// Initialize bullets array
var bullets = [];
// Touch controls for player movement
game.down = function (x, y, obj) {
if (x < 1024) {
player.moveLeft = true;
player.moveRight = false;
} else {
player.moveRight = true;
player.moveLeft = false;
}
};
game.up = function (x, y, obj) {
player.moveLeft = false;
player.moveRight = false;
};
// Fire bullet on touch
game.move = function (x, y, obj) {
var bullet = new Bullet();
bullet.x = player.x;
bullet.y = player.y - 50; // Start bullet at the top of the player
game.addChild(bullet);
bullets.push(bullet);
};
// Game update function
game.update = function () {
// Update player position and keep within bounds
player.update();
player.limitBounds();
// Update all bullets
for (var i = bullets.length - 1; i >= 0; i--) {
bullets[i].update();
// Remove bullets that go off screen
if (bullets[i].y < 0) {
bullets[i].destroy();
bullets.splice(i, 1);
}
}
// Update all enemies
for (var i = 0; i < enemies.length; i++) {
enemies[i].update();
}
// Collision detection between bullets and enemies
for (var i = bullets.length - 1; i >= 0; i--) {
for (var j = enemies.length - 1; j >= 0; j--) {
if (bullets[i].intersects(enemies[j])) {
bullets[i].destroy();
bullets.splice(i, 1);
if (!(enemies[j] instanceof PowerUp)) {
enemies[j].destroy();
enemies.splice(j, 1);
}
break; // Exit the inner loop if a collision is detected
}
}
}
// Collision detection between player and enemies
for (var j = 0; j < enemies.length; j++) {
if (player.intersects(enemies[j])) {
if (enemies[j] instanceof PowerUp) {
// Handle power up
enemies[j].destroy();
enemies.splice(j, 1);
// Change the player's bullet asset to the power up's asset
Bullet.prototype.assetId = 'powerUp';
} else {
// Flash screen red for 1 second (1000ms) to show we are dead.
LK.effects.flashScreen(0xff0000, 1000);
// Show game over. The game will be automatically paused while game over is showing.
LK.showGameOver(); // Calling this will destroy the 'Game' and reset entire game state.
break; // Exit the loop if a collision is detected
}
}
}
};
Intergalactic tub of congealed lard armed with integrated Gatling guns. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Blue Laser blast. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Mechanical hot dog spacecraft piloted by a cheeky, morbidly obese astronaut cat playing a fender stratocaster. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
weapon power up icon. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Epic clash of intergalactic tubs of lard and anthropomorphic skillets cooking bacon while brandishing a switchblade knife versus a morbidly obese astronaut cat with a funny expression shooting sonic blasts from the fender Stratocaster being played, cinematic, exciting, 16-bit pixel art. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Outterspace above, terra firma below. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Amorphous gelatinous blob of congealed lard. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.