/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/****
* Classes
****/
var Alien = Container.expand(function () {
var self = Container.call(this);
var alienGraphics = self.attachAsset('alien', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 2;
self.lastY = 0;
self.points = 10;
self.update = function () {
self.y += self.speed;
};
return self;
});
var PlayerBullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('playerBullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = -15;
self.lastY = 0;
self.update = function () {
self.y += self.speed;
};
return self;
});
var Spaceship = Container.expand(function () {
var self = Container.call(this);
var shipGraphics = self.attachAsset('spaceship', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 0;
self.maxSpeed = 12;
self.update = function () {
self.x += self.speed;
if (self.x < 40) self.x = 40;
if (self.x > 2048 - 40) self.x = 2048 - 40;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
var spaceship = game.addChild(new Spaceship());
spaceship.x = 2048 / 2;
spaceship.y = 2732 - 120;
var playerBullets = [];
var aliens = [];
var waveCount = 0;
var alienSpeed = 3.5;
var spawnRate = 120;
var spawnCounter = 0;
var gameActive = true;
var scoreTxt = new Text2('0', {
size: 150,
fill: 0xFFFFFF
});
scoreTxt.setText(LK.getScore());
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
var waveDisplay = new Text2('Wave: 1', {
size: 100,
fill: 0xFFFF00
});
waveDisplay.anchor.set(1, 0);
LK.gui.topRight.addChild(waveDisplay);
var dragNode = null;
var dragStartX = 0;
game.down = function (x, y, obj) {
dragStartX = x;
dragNode = spaceship;
var bullet = game.addChild(new PlayerBullet());
bullet.x = spaceship.x;
bullet.y = spaceship.y - 50;
bullet.lastY = bullet.y;
playerBullets.push(bullet);
LK.getSound('shoot').play();
};
game.move = function (x, y, obj) {
if (dragNode) {
var deltaX = x - dragStartX;
spaceship.speed = deltaX / 10;
dragStartX = x;
}
};
game.up = function (x, y, obj) {
dragNode = null;
spaceship.speed = 0;
};
game.update = function () {
if (!gameActive) return;
spawnCounter++;
if (spawnCounter >= spawnRate) {
spawnCounter = 0;
var newAlien = game.addChild(new Alien());
newAlien.x = Math.random() * (2048 - 120) + 60;
newAlien.y = 50;
newAlien.speed = alienSpeed;
newAlien.lastY = newAlien.y;
aliens.push(newAlien);
}
for (var i = playerBullets.length - 1; i >= 0; i--) {
var bullet = playerBullets[i];
if (bullet.lastY >= -50 && bullet.y < -50) {
bullet.destroy();
playerBullets.splice(i, 1);
continue;
}
for (var j = aliens.length - 1; j >= 0; j--) {
var alien = aliens[j];
if (bullet.intersects(alien)) {
LK.getSound('explosion').play();
LK.setScore(LK.getScore() + alien.points);
scoreTxt.setText(LK.getScore());
bullet.destroy();
playerBullets.splice(i, 1);
alien.destroy();
aliens.splice(j, 1);
break;
}
}
if (i < playerBullets.length) {
bullet.lastY = bullet.y;
}
}
for (var a = aliens.length - 1; a >= 0; a--) {
var alien = aliens[a];
if (alien.lastY <= 2732 && alien.y > 2732) {
gameActive = false;
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
return;
}
if (alien.intersects(spaceship)) {
gameActive = false;
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
return;
}
alien.lastY = alien.y;
}
if (aliens.length === 0 && spawnCounter > spawnRate * 2) {
waveCount++;
alienSpeed += 0.75;
spawnRate = Math.max(60, spawnRate - 10);
waveDisplay.setText('Wave: ' + (waveCount + 1));
}
};
LK.playMusic('bgmusic', {
loop: true
}); /****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/****
* Classes
****/
var Alien = Container.expand(function () {
var self = Container.call(this);
var alienGraphics = self.attachAsset('alien', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 2;
self.lastY = 0;
self.points = 10;
self.update = function () {
self.y += self.speed;
};
return self;
});
var PlayerBullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('playerBullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = -15;
self.lastY = 0;
self.update = function () {
self.y += self.speed;
};
return self;
});
var Spaceship = Container.expand(function () {
var self = Container.call(this);
var shipGraphics = self.attachAsset('spaceship', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 0;
self.maxSpeed = 12;
self.update = function () {
self.x += self.speed;
if (self.x < 40) self.x = 40;
if (self.x > 2048 - 40) self.x = 2048 - 40;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
var spaceship = game.addChild(new Spaceship());
spaceship.x = 2048 / 2;
spaceship.y = 2732 - 120;
var playerBullets = [];
var aliens = [];
var waveCount = 0;
var alienSpeed = 3.5;
var spawnRate = 120;
var spawnCounter = 0;
var gameActive = true;
var scoreTxt = new Text2('0', {
size: 150,
fill: 0xFFFFFF
});
scoreTxt.setText(LK.getScore());
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
var waveDisplay = new Text2('Wave: 1', {
size: 100,
fill: 0xFFFF00
});
waveDisplay.anchor.set(1, 0);
LK.gui.topRight.addChild(waveDisplay);
var dragNode = null;
var dragStartX = 0;
game.down = function (x, y, obj) {
dragStartX = x;
dragNode = spaceship;
var bullet = game.addChild(new PlayerBullet());
bullet.x = spaceship.x;
bullet.y = spaceship.y - 50;
bullet.lastY = bullet.y;
playerBullets.push(bullet);
LK.getSound('shoot').play();
};
game.move = function (x, y, obj) {
if (dragNode) {
var deltaX = x - dragStartX;
spaceship.speed = deltaX / 10;
dragStartX = x;
}
};
game.up = function (x, y, obj) {
dragNode = null;
spaceship.speed = 0;
};
game.update = function () {
if (!gameActive) return;
spawnCounter++;
if (spawnCounter >= spawnRate) {
spawnCounter = 0;
var newAlien = game.addChild(new Alien());
newAlien.x = Math.random() * (2048 - 120) + 60;
newAlien.y = 50;
newAlien.speed = alienSpeed;
newAlien.lastY = newAlien.y;
aliens.push(newAlien);
}
for (var i = playerBullets.length - 1; i >= 0; i--) {
var bullet = playerBullets[i];
if (bullet.lastY >= -50 && bullet.y < -50) {
bullet.destroy();
playerBullets.splice(i, 1);
continue;
}
for (var j = aliens.length - 1; j >= 0; j--) {
var alien = aliens[j];
if (bullet.intersects(alien)) {
LK.getSound('explosion').play();
LK.setScore(LK.getScore() + alien.points);
scoreTxt.setText(LK.getScore());
bullet.destroy();
playerBullets.splice(i, 1);
alien.destroy();
aliens.splice(j, 1);
break;
}
}
if (i < playerBullets.length) {
bullet.lastY = bullet.y;
}
}
for (var a = aliens.length - 1; a >= 0; a--) {
var alien = aliens[a];
if (alien.lastY <= 2732 && alien.y > 2732) {
gameActive = false;
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
return;
}
if (alien.intersects(spaceship)) {
gameActive = false;
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
return;
}
alien.lastY = alien.y;
}
if (aliens.length === 0 && spawnCounter > spawnRate * 2) {
waveCount++;
alienSpeed += 0.75;
spawnRate = Math.max(60, spawnRate - 10);
waveDisplay.setText('Wave: ' + (waveCount + 1));
}
};
LK.playMusic('bgmusic', {
loop: true
});