/****
* Classes
****/
// Assets will be automatically created and loaded during gameplay
var Cube = Container.expand(function () {
var self = Container.call(this);
var cubeGraphics = self.attachAsset('cube', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
// No specific update logic for the cube
};
self.down = function (x, y, obj) {
// Increase score when the cube is clicked
LK.setScore(LK.getScore() + 1);
scoreTxt.setText(LK.getScore());
// Spawn mini '21' and make them fly in different directions
for (var i = 0; i < 5; i++) {
var mini21 = new Mini21();
mini21.x = self.x;
mini21.y = self.y;
game.addChild(mini21);
}
};
});
var EnemyCube = Container.expand(function () {
var self = Container.call(this);
var enemyCubeGraphics = self.attachAsset('enemyCube', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
// Move enemy cube towards the main cube
var dx = cube.x - self.x;
var dy = cube.y - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
var speed = 5; // Speed of the enemy cube
if (distance > 0) {
self.x += dx / distance * speed;
self.y += dy / distance * speed;
}
};
});
var Mini21 = Container.expand(function () {
var self = Container.call(this);
var mini21Graphics = self.attachAsset('mini21', {
anchorX: 0.5,
anchorY: 0.5
});
self.speedX = Math.random() * 10 - 5;
self.speedY = Math.random() * 10 - 5;
self.update = function () {
self.x += self.speedX;
self.y += self.speedY;
};
LK.setTimeout(function () {
self.destroy();
}, 3000);
});
/****
* Initialize Game
****/
// Update mini '21' positions
var game = new LK.Game({
backgroundColor: 0x000000 // Init game with black background
});
/****
* Game Code
****/
var background = LK.getAsset('background', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2
});
game.addChild(background);
var scoreTxt = new Text2('0', {
size: 150,
fill: "#ffffff"
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
var cube = game.addChild(new Cube());
game.enemyCubeSpawned = false;
var enemyCube = null;
cube.speedX = 10;
cube.speedY = 10;
cube.speedIncreased = false;
cube.speedIncreased200 = false;
cube.x = 2048 / 2;
cube.y = 2732 / 2;
game.update = function () {
if (LK.getScore() % 100 === 0 && LK.getScore() !== 0 && !game.enemyCubeSpawned) {
var enemyCube = new EnemyCube();
enemyCube.x = 2048 / 2;
enemyCube.y = 2732 / 2;
game.addChild(enemyCube);
game.enemyCubeSpawned = true;
} else if (LK.getScore() >= 1000) {
LK.showGameOver(true); // Show game over with a win state
cube.speedX *= 1.5;
cube.speedY *= 1.5;
cube.speedIncreased200 = true;
} else if (LK.getScore() >= 100 && !cube.speedIncreased) {
cube.speedX *= 1.5;
cube.speedY *= 1.5;
cube.speedIncreased = true;
} else if (LK.getScore() >= 50) {
// Move cube towards the edges of the map
if (cube.x < cube.width / 2 || cube.x > 2048 - cube.width / 2) {
cube.speedX = -cube.speedX;
}
if (cube.y < cube.height / 2 || cube.y > 2732 - cube.height / 2) {
cube.speedY = -cube.speedY;
}
cube.x += cube.speedX;
cube.y += cube.speedY;
}
// Update enemy cube position
if (game.enemyCubeSpawned && enemyCube) {
enemyCube.update();
game.enemyCubeSpawned = false;
}
// No duplicate cube movement logic
};
game.down = function (x, y, obj) {};
game.up = function (x, y, obj) {
// No specific logic for game up event
};
game.move = function (x, y, obj) {
// No specific logic for game move event
};
// Update mini '21' positions
for (var i = game.children.length - 1; i >= 0; i--) {
if (game.children[i] instanceof Mini21) {
game.children[i].update();
}
}