/****
* Classes
****/
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5
});
self._move_migrated = function () {
self.x += (Math.random() - 0.5) * 5;
self.y += (Math.random() - 0.5) * 5;
};
self.shoot = function () {
var enemyBullet = new EnemyBullet();
enemyBullet.x = self.x;
enemyBullet.y = self.y;
return enemyBullet;
};
});
var EnemyBullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('enemyBullet', {
anchorX: 0.5,
anchorY: 0.5
});
self._move_migrated = function () {
self.y += 10;
};
});
var Hero = Container.expand(function () {
var self = Container.call(this);
var heroGraphics = self.attachAsset('hero', {
anchorX: 0.5,
anchorY: 0.5
});
self.vx = 0;
self.vy = 0;
self.friction = 0.95;
self.speed = 10;
self.poweredUp = false;
self.powerUpDuration = 0;
self._move_migrated = function (x, y) {
var dx = x - self.x;
var dy = y - self.y;
var angle = Math.atan2(dy, dx);
self.vx = Math.cos(angle) * (self.poweredUp ? self.speed * 2 : self.speed);
self.vy = Math.sin(angle) * (self.poweredUp ? self.speed * 2 : self.speed);
};
self.shoot = function () {
var heroBullet = new HeroBullet();
heroBullet.x = self.x;
heroBullet.y = self.y;
return heroBullet;
};
self.spawnPowerUp = function () {
var powerUp = new PowerUp();
powerUp.x = self.x;
powerUp.y = self.y;
return powerUp;
};
});
var HeroBullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('heroBullet', {
anchorX: 0.5,
anchorY: 0.5
});
self._move_migrated = function () {
self.y -= 10;
};
});
var PowerUp = Container.expand(function () {
var self = Container.call(this);
var powerUpGraphics = self.attachAsset('powerUp', {
anchorX: 0.5,
anchorY: 0.5
});
self._move_migrated = function () {
self.y -= 5;
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
var hero = game.addChild(new Hero());
var enemies = [];
var heroBullets = [];
var enemyBullets = [];
hero.x = 2048 / 2;
hero.y = 2732 / 2;
for (var i = 0; i < 5; i++) {
var enemy = new Enemy();
enemy.x = Math.random() * 2048;
enemy.y = Math.random() * 2732;
enemies.push(enemy);
game.addChild(enemy);
}
LK.on('tick', function () {
game.on('move', function (x, y, obj) {
var pos = game.toLocal(obj.global);
hero._move_migrated(pos.x, pos.y);
});
hero.x += hero.vx;
hero.y += hero.vy;
hero.vx *= hero.friction;
hero.vy *= hero.friction;
enemies.forEach(function (enemy) {
enemy._move_migrated();
});
heroBullets.forEach(function (bullet) {
bullet._move_migrated();
});
enemyBullets.forEach(function (bullet) {
bullet._move_migrated();
});
if (LK.ticks % 60 == 0) {
var heroBullet = hero.shoot();
heroBullets.push(heroBullet);
game.addChild(heroBullet);
enemies.forEach(function (enemy) {
var enemyBullet = enemy.shoot();
enemyBullets.push(enemyBullet);
game.addChild(enemyBullet);
});
}
if (LK.ticks % 300 == 0) {
var powerUp = hero.spawnPowerUp();
game.addChild(powerUp);
}
if (hero.poweredUp) {
hero.powerUpDuration--;
if (hero.powerUpDuration <= 0) {
hero.poweredUp = false;
}
}
heroBullets.forEach(function (bullet) {
if (bullet.intersects(hero)) {
hero.poweredUp = true;
hero.powerUpDuration = 300;
bullet.destroy();
}
});
game.children.forEach(function (child) {
if (child instanceof PowerUp && child.intersects(hero)) {
hero.poweredUp = true;
hero.powerUpDuration = 300;
child.destroy();
}
});
}); /****
* Classes
****/
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5
});
self._move_migrated = function () {
self.x += (Math.random() - 0.5) * 5;
self.y += (Math.random() - 0.5) * 5;
};
self.shoot = function () {
var enemyBullet = new EnemyBullet();
enemyBullet.x = self.x;
enemyBullet.y = self.y;
return enemyBullet;
};
});
var EnemyBullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('enemyBullet', {
anchorX: 0.5,
anchorY: 0.5
});
self._move_migrated = function () {
self.y += 10;
};
});
var Hero = Container.expand(function () {
var self = Container.call(this);
var heroGraphics = self.attachAsset('hero', {
anchorX: 0.5,
anchorY: 0.5
});
self.vx = 0;
self.vy = 0;
self.friction = 0.95;
self.speed = 10;
self.poweredUp = false;
self.powerUpDuration = 0;
self._move_migrated = function (x, y) {
var dx = x - self.x;
var dy = y - self.y;
var angle = Math.atan2(dy, dx);
self.vx = Math.cos(angle) * (self.poweredUp ? self.speed * 2 : self.speed);
self.vy = Math.sin(angle) * (self.poweredUp ? self.speed * 2 : self.speed);
};
self.shoot = function () {
var heroBullet = new HeroBullet();
heroBullet.x = self.x;
heroBullet.y = self.y;
return heroBullet;
};
self.spawnPowerUp = function () {
var powerUp = new PowerUp();
powerUp.x = self.x;
powerUp.y = self.y;
return powerUp;
};
});
var HeroBullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('heroBullet', {
anchorX: 0.5,
anchorY: 0.5
});
self._move_migrated = function () {
self.y -= 10;
};
});
var PowerUp = Container.expand(function () {
var self = Container.call(this);
var powerUpGraphics = self.attachAsset('powerUp', {
anchorX: 0.5,
anchorY: 0.5
});
self._move_migrated = function () {
self.y -= 5;
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
var hero = game.addChild(new Hero());
var enemies = [];
var heroBullets = [];
var enemyBullets = [];
hero.x = 2048 / 2;
hero.y = 2732 / 2;
for (var i = 0; i < 5; i++) {
var enemy = new Enemy();
enemy.x = Math.random() * 2048;
enemy.y = Math.random() * 2732;
enemies.push(enemy);
game.addChild(enemy);
}
LK.on('tick', function () {
game.on('move', function (x, y, obj) {
var pos = game.toLocal(obj.global);
hero._move_migrated(pos.x, pos.y);
});
hero.x += hero.vx;
hero.y += hero.vy;
hero.vx *= hero.friction;
hero.vy *= hero.friction;
enemies.forEach(function (enemy) {
enemy._move_migrated();
});
heroBullets.forEach(function (bullet) {
bullet._move_migrated();
});
enemyBullets.forEach(function (bullet) {
bullet._move_migrated();
});
if (LK.ticks % 60 == 0) {
var heroBullet = hero.shoot();
heroBullets.push(heroBullet);
game.addChild(heroBullet);
enemies.forEach(function (enemy) {
var enemyBullet = enemy.shoot();
enemyBullets.push(enemyBullet);
game.addChild(enemyBullet);
});
}
if (LK.ticks % 300 == 0) {
var powerUp = hero.spawnPowerUp();
game.addChild(powerUp);
}
if (hero.poweredUp) {
hero.powerUpDuration--;
if (hero.powerUpDuration <= 0) {
hero.poweredUp = false;
}
}
heroBullets.forEach(function (bullet) {
if (bullet.intersects(hero)) {
hero.poweredUp = true;
hero.powerUpDuration = 300;
bullet.destroy();
}
});
game.children.forEach(function (child) {
if (child instanceof PowerUp && child.intersects(hero)) {
hero.poweredUp = true;
hero.powerUpDuration = 300;
child.destroy();
}
});
});