var Sun = Container.expand(function () {
var self = Container.call(this);
var sunGraphics = self.createAsset('sun', 'Sun Graphics', 0.5, 0);
self.x = 0;
self.y = 50;
self.move = function () {
self.x += 0.1;
if (self.x > 2048) {
self.x = -sunGraphics.width;
}
};
});
var Missile = Container.expand(function () {
var self = Container.call(this);
var missileGraphics = self.createAsset('missile', 'Missile Graphics', .5, .5);
self.speed = 5;
self.missileSpeedModifier = 1.0;
self.setSpeedModifier = function (modifier) {
self.missileSpeedModifier = modifier;
};
self.move = function () {
self.y += self.speed * self.missileSpeedModifier;
};
});
var City = Container.expand(function () {
var self = Container.call(this);
var cityGraphics = self.createAsset('city', 'City Graphics', .5, .5);
var cityGraphics = self.createAsset('city', 'City Graphics', .5, .5);
});
var DefenseMissile = Container.expand(function () {
var self = Container.call(this);
var defenseMissileGraphics = self.createAsset('defenseMissile', 'Defense Missile Graphics', .5, .5);
self.speed = -5;
self.move = function () {
self.y += self.speed;
};
});
var ScoreBoard = Container.expand(function () {
var self = Container.call(this);
var score = 0;
var scoreText = new Text2(score.toString(), {
size: 150,
fill: "#ffffff"
});
scoreText.anchor.set(0.5, 0);
scoreText.x = 2048 / 2;
scoreText.y = 50;
self.addChild(scoreText);
self.updateScore = function (points) {
score += points;
scoreText.setText(score.toString());
};
});
var Game = Container.expand(function () {
var self = Container.call(this);
var scoreBoard = self.addChild(new ScoreBoard());
var sun = self.addChild(new Sun());
LK.stageContainer.setBackgroundColor(0x87CEEB);
var missiles = [];
var cities = [];
var defenseMissiles = [];
var isGameOver = false;
var tickOffset = 0;
for (var i = 0; i < 6; i++) {
var city = self.addChild(new City());
city.x = 2048 / 6 * i + 2048 / 12;
city.y = 2732 - city.height / 2;
cities.push(city);
}
LK.on('tick', function () {
for (var i = 0; i < missiles.length; i++) {
missiles[i].move();
if (missiles[i].y > 2732) {
missiles[i].destroy();
missiles.splice(i, 1);
i--;
missileSpeedModifier *= 1.005;
scoreBoard.updateScore(1);
}
}
for (var i = 0; i < defenseMissiles.length; i++) {
defenseMissiles[i].move();
for (var j = 0; j < missiles.length; j++) {
if (defenseMissiles[i].intersects(missiles[j])) {
defenseMissiles[i].destroy();
defenseMissiles.splice(i, 1);
missiles[j].destroy();
missiles.splice(j, 1);
missileSpawnRate = Math.max(20, missileSpawnRate - 1);
i--;
scoreBoard.updateScore(1);
break;
}
}
if (defenseMissiles[i] && defenseMissiles[i].y < 0) {
defenseMissiles[i].destroy();
defenseMissiles.splice(i, 1);
i--;
}
}
for (var i = 0; i < missiles.length; i++) {
for (var j = 0; j < cities.length; j++) {
if (missiles[i].intersects(cities[j])) {
missiles[i].destroy();
missiles.splice(i, 1);
i--;
cities[j].destroy();
cities.splice(j, 1);
j--;
break;
}
}
}
if (cities.length == 0) {
isGameOver = true;
}
if (isGameOver) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
}
var missileSpawnRate = 60;
var missileSpeedModifier = 1.0;
sun.move();
if (tickOffset++ % missileSpawnRate == 0) {
var newMissile = new Missile(missileSpeedModifier);
newMissile.x = Math.random() * 2048;
newMissile.y = 0;
missiles.push(newMissile);
self.addChild(newMissile);
}
});
stage.on('down', function (obj) {
var event = obj.event;
var pos = event.getLocalPosition(self);
var newDefenseMissile = new DefenseMissile();
newDefenseMissile.x = pos.x;
newDefenseMissile.y = 2732;
defenseMissiles.push(newDefenseMissile);
self.addChild(newDefenseMissile);
});
});
An 8-bit city skyline with towers. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
an 8-bit missile pointing downward. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
an 8-bit missile pointing upward. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
an 8-bit sun Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.