/**** * Classes ****/ //<Assets used in the game will automatically appear here> //<Write imports for supported plugins here> // Arrow class for shooting arrows in 360 degrees var Arrow = Container.expand(function () { var self = Container.call(this); var arrowGraphics = self.attachAsset('arrow', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 10; self.direction = 0; // Direction in radians self.update = function () { // Update the position of the arrow every frame self.x += self.speed * Math.cos(self.direction); self.y += self.speed * Math.sin(self.direction); }; }); // Slime class for enemy slimes var Slime = Container.expand(function () { var self = Container.call(this); var slimeGraphics = self.attachAsset('slime', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 1; self.update = function () { 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; }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 //Init game with black background }); /**** * Game Code ****/ var hero = game.addChild(new Container()); var heroGraphics = hero.attachAsset('hero', { anchorX: 0.5, anchorY: 0.5 }); hero.x = 2048 / 2; hero.y = 2732 / 2; var arrows = []; var slimes = []; var score = 0; var scoreTxt = new Text2('0', { size: 150, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); function spawnSlimes() { for (var i = 0; i < 5; i++) { var slime = new Slime(); slime.x = Math.random() * 2048; slime.y = Math.random() * 2732; slimes.push(slime); game.addChild(slime); } } game.down = function (x, y, obj) { for (var angle = 0; angle < Math.PI * 2; angle += Math.PI / 4) { var arrow = new Arrow(); arrow.x = hero.x; arrow.y = hero.y; arrow.direction = angle; arrows.push(arrow); game.addChild(arrow); } }; game.update = function () { for (var i = arrows.length - 1; i >= 0; i--) { var arrow = arrows[i]; arrow.update(); if (arrow.x < 0 || arrow.x > 2048 || arrow.y < 0 || arrow.y > 2732) { arrow.destroy(); arrows.splice(i, 1); } } for (var i = slimes.length - 1; i >= 0; i--) { var slime = slimes[i]; slime.update(); if (hero.intersects(slime)) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); return; } for (var j = arrows.length - 1; j >= 0; j--) { var arrow = arrows[j]; if (arrow.intersects(slime)) { arrow.destroy(); arrows.splice(j, 1); slime.destroy(); slimes.splice(i, 1); break; } } } if (slimes.length === 0) { score++; scoreTxt.setText(score); spawnSlimes(); } }; spawnSlimes();
/****
* Classes
****/
//<Assets used in the game will automatically appear here>
//<Write imports for supported plugins here>
// Arrow class for shooting arrows in 360 degrees
var Arrow = Container.expand(function () {
var self = Container.call(this);
var arrowGraphics = self.attachAsset('arrow', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 10;
self.direction = 0; // Direction in radians
self.update = function () {
// Update the position of the arrow every frame
self.x += self.speed * Math.cos(self.direction);
self.y += self.speed * Math.sin(self.direction);
};
});
// Slime class for enemy slimes
var Slime = Container.expand(function () {
var self = Container.call(this);
var slimeGraphics = self.attachAsset('slime', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 1;
self.update = function () {
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;
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 //Init game with black background
});
/****
* Game Code
****/
var hero = game.addChild(new Container());
var heroGraphics = hero.attachAsset('hero', {
anchorX: 0.5,
anchorY: 0.5
});
hero.x = 2048 / 2;
hero.y = 2732 / 2;
var arrows = [];
var slimes = [];
var score = 0;
var scoreTxt = new Text2('0', {
size: 150,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
function spawnSlimes() {
for (var i = 0; i < 5; i++) {
var slime = new Slime();
slime.x = Math.random() * 2048;
slime.y = Math.random() * 2732;
slimes.push(slime);
game.addChild(slime);
}
}
game.down = function (x, y, obj) {
for (var angle = 0; angle < Math.PI * 2; angle += Math.PI / 4) {
var arrow = new Arrow();
arrow.x = hero.x;
arrow.y = hero.y;
arrow.direction = angle;
arrows.push(arrow);
game.addChild(arrow);
}
};
game.update = function () {
for (var i = arrows.length - 1; i >= 0; i--) {
var arrow = arrows[i];
arrow.update();
if (arrow.x < 0 || arrow.x > 2048 || arrow.y < 0 || arrow.y > 2732) {
arrow.destroy();
arrows.splice(i, 1);
}
}
for (var i = slimes.length - 1; i >= 0; i--) {
var slime = slimes[i];
slime.update();
if (hero.intersects(slime)) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
return;
}
for (var j = arrows.length - 1; j >= 0; j--) {
var arrow = arrows[j];
if (arrow.intersects(slime)) {
arrow.destroy();
arrows.splice(j, 1);
slime.destroy();
slimes.splice(i, 1);
break;
}
}
}
if (slimes.length === 0) {
score++;
scoreTxt.setText(score);
spawnSlimes();
}
};
spawnSlimes();