/****
* Classes
****/
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.update = function () {
self.y += self.speed;
};
});
// Enemy ship class
var EnemyShip = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemyShip', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = Math.random() * 10 + 2;
self.update = function () {
self.y += self.speed;
if (self.y > 2732) {
// Trigger game over if enemy reaches the bottom
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
}
// Shoot bullet every 60 frames
};
});
// Player bullet class
var PlayerBullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('playerBullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = -20;
self.update = function () {
self.y += self.speed;
};
});
// Player spaceship class
var PlayerShip = Container.expand(function () {
var self = Container.call(this);
var shipGraphics = self.attachAsset('playerShip', {
anchorX: 0.5,
anchorY: 0.5
});
self.move = function (x, y) {
self.x = x * 2;
self.y = y * 2;
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 // Init game with black background
});
/****
* Game Code
****/
// Initialize player spaceship asset
// Initialize enemy ship asset
// Initialize bullet asset for the player
var secondMessage = new Text2('and I like eating daktyla.', {
size: 50,
fill: '#ffffff'
});
secondMessage.anchor.set(0, 0);
secondMessage.x = 200;
secondMessage.y = 60;
LK.gui.left.addChild(secondMessage);
var welcomeMessage = new Text2('Hello everyone. My name is Shelo the turtle', {
size: 50,
fill: '#ffffff'
});
welcomeMessage.anchor.set(0, 0);
welcomeMessage.x = 200;
welcomeMessage.y = 0;
LK.gui.left.addChild(welcomeMessage);
LK.setTimeout(function () {}, 4000);
var enemiesReachedBottom = 0;
var scoreTxt = new Text2('0', {
size: 150,
fill: '#ffffff'
});
LK.gui.top.addChild(scoreTxt);
var playerShip = game.addChild(new PlayerShip());
playerShip.x = 1024; // Center horizontally
playerShip.y = 2400; // Position towards the bottom
var enemies = [];
var playerBullets = [];
var enemyBullets = [];
var score = 0;
// Create enemies
for (var i = 0; i < 5; i++) {
var enemy = new EnemyShip();
enemy.x = Math.random() * 2048;
enemy.y = -50; // Start from the top of the screen
enemies.push(enemy);
game.addChild(enemy);
}
// Touch event to move player ship
game.on('move', function (obj) {
var pos = obj.event.getLocalPosition(game);
playerShip.x = pos.x;
playerShip.y = pos.y;
});
// Shoot bullet on touch
game.on('up', function () {
var bullet = new PlayerBullet();
bullet.x = playerShip.x;
bullet.y = playerShip.y - 50;
playerBullets.push(bullet);
game.addChild(bullet);
});
// Game tick event
LK.on('tick', function () {
// Update player bullets
for (var b = playerBullets.length - 1; b >= 0; b--) {
playerBullets[b].update();
if (playerBullets[b].y < 0) {
playerBullets[b].destroy();
playerBullets.splice(b, 1);
}
}
// Update enemy bullets
for (var b = enemyBullets.length - 1; b >= 0; b--) {
enemyBullets[b].update();
if (enemyBullets[b].y > 2732) {
enemyBullets[b].destroy();
enemyBullets.splice(b, 1);
}
// Check collision with player
if (playerShip.intersects(enemyBullets[b])) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
}
}
// Update enemies
for (var e = enemies.length - 1; e >= 0; e--) {
enemies[e].update();
// Check collision with bullets
for (var b = playerBullets.length - 1; b >= 0; b--) {
if (enemies[e].intersects(playerBullets[b])) {
enemies[e].destroy();
enemies.splice(e, 1);
playerBullets[b].destroy();
playerBullets.splice(b, 1);
score += 1;
scoreTxt.setText(score);
break;
}
}
// Decrease lives and remove a heart if an enemy reaches the bottom
if (enemies[e] && enemies[e].y >= 2732) {
enemies[e].destroy();
enemies.splice(e, 1);
enemiesReachedBottom++;
if (enemiesReachedBottom >= 3) {
// Trigger game over if three enemies have reached the bottom
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
} else {
// Continue game if there are lives left
var enemy = new EnemyShip();
enemy.x = Math.random() * 2048;
enemy.y = Math.random() * -500; // Start off-screen
enemies.push(enemy);
game.addChild(enemy);
}
}
}
// Add more enemies if needed
if (enemies.length < 5) {
var enemy = new EnemyShip();
enemy.x = Math.random() * 2048;
enemy.y = Math.random() * -500; // Start off-screen
enemies.push(enemy);
game.addChild(enemy);
}
});