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); }); });
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.