var Hero = Container.expand(function () {
var self = Container.call(this);
var heroGraphics = self.createAsset('hero', 'Hero character', .5, .5);
heroGraphics.scale.set(1.5);
self.speed = 5;
self.move = function (touchStart, touchEnd) {
var dx = touchEnd.x - touchStart.x;
var dy = touchEnd.y - touchStart.y;
var distance = Math.sqrt(dx * dx + dy * dy);
self.x += dx / distance * self.speed;
self.y += dy / distance * self.speed;
};
});
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.createAsset('enemy', 'Enemy character', .5, .5);
enemyGraphics.scale.set(1.2);
self.speed = 3;
self.chase = function (hero) {
var dx = hero.x - self.x;
var dy = hero.y - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
self.x += dx / distance * self.speed;
self.y += dy / distance * self.speed;
};
});
var Game = Container.expand(function () {
var self = Container.call(this);
var hero = self.addChild(new Hero());
var enemies = [];
var isGameOver = false;
var lastSpeedIncrease = 0;
var score = 0;
var scoreTxt = new Text2('0', {
size: 150,
fill: '#ffffff'
});
scoreTxt.anchor.set(.5, 0);
LK.gui.topCenter.addChild(scoreTxt);
hero.x = 2048 / 2;
hero.y = 2732 / 2;
var spawnEnemy = function () {
var enemy = self.addChild(new Enemy());
enemy.x = Math.random() * 2048;
enemy.y = Math.random() * 2732;
enemies.push(enemy);
};
for (var i = 0; i < 5; i++) {
spawnEnemy();
}
var enemySpawnInterval = LK.setInterval(spawnEnemy, 8000);
var touchStart = {
x: 0,
y: 0
};
var touchEnd = {
x: 0,
y: 0
};
stage.on('down', function (obj) {
touchStart = obj.event.getLocalPosition(self);
hero.move(touchStart, touchStart);
});
stage.on('move', function (obj) {
touchEnd = obj.event.getLocalPosition(self);
hero.move(touchStart, touchEnd);
});
stage.on('up', function (obj) {
touchStart = obj.event.getLocalPosition(self);
hero.move(touchStart, touchStart);
});
LK.on('tick', function () {
if (LK.ticks - lastSpeedIncrease >= 300) {
for (var i = 0; i < enemies.length; i++) {
enemies[i].speed += 1;
}
hero.speed += 1;
lastSpeedIncrease = LK.ticks;
}
score += 1;
scoreTxt.setText(score);
for (var i = 0; i < enemies.length; i++) {
enemies[i].chase(hero);
if (enemies[i].intersects(hero)) {
isGameOver = true;
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
}
}
});
});