/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var MovingSquare = Container.expand(function () { var self = Container.call(this); var squareGraphics = self.attachAsset('movingSquare', { anchorX: 0.5, anchorY: 0.5 }); self.moveToRandomPosition = function () { var padding = 100; var newX = padding + Math.random() * (2048 - padding * 2); var newY = padding + Math.random() * (2732 - padding * 2); tween(self, { x: newX, y: newY }, { duration: 300, easing: tween.easeOut, onFinish: function onFinish() { LK.getSound('moveSound').play(); } }); }; self.down = function (x, y, obj) { currentScore++; LK.setScore(currentScore); scoreText.setText(currentScore); LK.getSound('tapSound').play(); // Flash effect on successful tap LK.effects.flashObject(self, 0xffffff, 200); // Move to new position immediately after tap self.moveToRandomPosition(); // Reset move timer if (moveTimer) { LK.clearInterval(moveTimer); } moveTimer = LK.setInterval(function () { self.moveToRandomPosition(); }, moveInterval); }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x2c3e50 }); /**** * Game Code ****/ var currentScore = 0; var gameTimeLeft = 60; var gameActive = false; var moveInterval = 2000; // Square moves every 2 seconds var moveTimer = null; var gameTimer = null; // Create score display var scoreText = new Text2('0', { size: 80, fill: '#ffffff' }); scoreText.anchor.set(0.5, 0); LK.gui.top.addChild(scoreText); // Create time display var timeText = new Text2('60', { size: 60, fill: '#e74c3c' }); timeText.anchor.set(1, 0); timeText.x = -20; timeText.y = 20; LK.gui.topRight.addChild(timeText); // Create the moving square var movingSquare = game.addChild(new MovingSquare()); movingSquare.x = 1024; movingSquare.y = 1366; // Start the game function startGame() { gameActive = true; currentScore = 0; gameTimeLeft = 60; LK.setScore(0); scoreText.setText('0'); timeText.setText('60'); // Position square at center initially movingSquare.x = 1024; movingSquare.y = 1366; // Start moving the square moveTimer = LK.setInterval(function () { if (gameActive) { movingSquare.moveToRandomPosition(); } }, moveInterval); // Start game timer gameTimer = LK.setInterval(function () { if (gameActive) { gameTimeLeft--; timeText.setText(gameTimeLeft.toString()); if (gameTimeLeft <= 0) { endGame(); } } }, 1000); // Move square to first random position after a short delay LK.setTimeout(function () { movingSquare.moveToRandomPosition(); }, 1000); } function endGame() { gameActive = false; if (moveTimer) { LK.clearInterval(moveTimer); moveTimer = null; } if (gameTimer) { LK.clearInterval(gameTimer); gameTimer = null; } // Stop all tweens on the square tween.stop(movingSquare); LK.showGameOver(); } // Start the game automatically startGame(); game.update = function () { // Main game loop - checking if game should continue if (!gameActive && gameTimeLeft > 0) { // Game might have been paused, resume if needed } };
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var MovingSquare = Container.expand(function () {
var self = Container.call(this);
var squareGraphics = self.attachAsset('movingSquare', {
anchorX: 0.5,
anchorY: 0.5
});
self.moveToRandomPosition = function () {
var padding = 100;
var newX = padding + Math.random() * (2048 - padding * 2);
var newY = padding + Math.random() * (2732 - padding * 2);
tween(self, {
x: newX,
y: newY
}, {
duration: 300,
easing: tween.easeOut,
onFinish: function onFinish() {
LK.getSound('moveSound').play();
}
});
};
self.down = function (x, y, obj) {
currentScore++;
LK.setScore(currentScore);
scoreText.setText(currentScore);
LK.getSound('tapSound').play();
// Flash effect on successful tap
LK.effects.flashObject(self, 0xffffff, 200);
// Move to new position immediately after tap
self.moveToRandomPosition();
// Reset move timer
if (moveTimer) {
LK.clearInterval(moveTimer);
}
moveTimer = LK.setInterval(function () {
self.moveToRandomPosition();
}, moveInterval);
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x2c3e50
});
/****
* Game Code
****/
var currentScore = 0;
var gameTimeLeft = 60;
var gameActive = false;
var moveInterval = 2000; // Square moves every 2 seconds
var moveTimer = null;
var gameTimer = null;
// Create score display
var scoreText = new Text2('0', {
size: 80,
fill: '#ffffff'
});
scoreText.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreText);
// Create time display
var timeText = new Text2('60', {
size: 60,
fill: '#e74c3c'
});
timeText.anchor.set(1, 0);
timeText.x = -20;
timeText.y = 20;
LK.gui.topRight.addChild(timeText);
// Create the moving square
var movingSquare = game.addChild(new MovingSquare());
movingSquare.x = 1024;
movingSquare.y = 1366;
// Start the game
function startGame() {
gameActive = true;
currentScore = 0;
gameTimeLeft = 60;
LK.setScore(0);
scoreText.setText('0');
timeText.setText('60');
// Position square at center initially
movingSquare.x = 1024;
movingSquare.y = 1366;
// Start moving the square
moveTimer = LK.setInterval(function () {
if (gameActive) {
movingSquare.moveToRandomPosition();
}
}, moveInterval);
// Start game timer
gameTimer = LK.setInterval(function () {
if (gameActive) {
gameTimeLeft--;
timeText.setText(gameTimeLeft.toString());
if (gameTimeLeft <= 0) {
endGame();
}
}
}, 1000);
// Move square to first random position after a short delay
LK.setTimeout(function () {
movingSquare.moveToRandomPosition();
}, 1000);
}
function endGame() {
gameActive = false;
if (moveTimer) {
LK.clearInterval(moveTimer);
moveTimer = null;
}
if (gameTimer) {
LK.clearInterval(gameTimer);
gameTimer = null;
}
// Stop all tweens on the square
tween.stop(movingSquare);
LK.showGameOver();
}
// Start the game automatically
startGame();
game.update = function () {
// Main game loop - checking if game should continue
if (!gameActive && gameTimeLeft > 0) {
// Game might have been paused, resume if needed
}
};