User prompt
Poner bola de pinchos
User prompt
Al comenzar empezar en el menú
User prompt
Un botón de menú
User prompt
Que haya otro modo que sea resta y comienza con 20
User prompt
Que el texto desaparezca en 15 segundos ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Pon un texto que tienes que sumar números
User prompt
Que los números sean más visibles
Code edit (1 edits merged)
Please save this source code
User prompt
Number Drop
Initial prompt
123
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var FallingNumber = Container.expand(function (value) {
var self = Container.call(this);
self.value = value;
self.speed = 3 + Math.random() * 2;
self.collected = false;
var numberGraphics = self.attachAsset('number' + value, {
anchorX: 0.5,
anchorY: 0.5
});
var numberText = new Text2(value.toString(), {
size: 60,
fill: '#ffffff'
});
numberText.anchor.set(0.5, 0.5);
self.addChild(numberText);
self.update = function () {
if (!self.collected) {
self.y += self.speed;
}
};
return self;
});
var Player = Container.expand(function () {
var self = Container.call(this);
self.move = function (targetX) {
self.x = Math.max(60, Math.min(2048 - 60, targetX));
};
var playerGraphics = self.attachAsset('player', {
anchorX: 0.5,
anchorY: 0.5
});
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x1a1a2e
});
/****
* Game Code
****/
var player = game.addChild(new Player());
player.x = 2048 / 2;
player.y = 2732 - 100;
var fallingNumbers = [];
var collectedNumbers = [];
var targetSum = 0;
var currentSum = 0;
var lives = 3;
var gameSpeed = 1;
var spawnTimer = 0;
var spawnRate = 90;
// UI Elements
var targetSumText = new Text2('Target: 0', {
size: 60,
fill: '#ffffff'
});
targetSumText.anchor.set(0.5, 0);
LK.gui.top.addChild(targetSumText);
targetSumText.y = 80;
var currentSumText = new Text2('Current: 0', {
size: 50,
fill: '#ffeb3b'
});
currentSumText.anchor.set(0.5, 0);
LK.gui.top.addChild(currentSumText);
currentSumText.y = 160;
var livesText = new Text2('Lives: 3', {
size: 50,
fill: '#f44336'
});
livesText.anchor.set(1, 0);
LK.gui.topRight.addChild(livesText);
livesText.x = -20;
livesText.y = 20;
var scoreText = new Text2('Score: 0', {
size: 50,
fill: '#ffffff'
});
scoreText.anchor.set(0, 0);
LK.gui.topLeft.addChild(scoreText);
scoreText.x = 120;
scoreText.y = 20;
var instructionText = new Text2('Arrastra para atrapar números\ny sumarlos al objetivo', {
size: 40,
fill: '#ffffff'
});
instructionText.anchor.set(0.5, 0.5);
LK.gui.center.addChild(instructionText);
instructionText.y = -200;
function generateTargetSum() {
targetSum = Math.floor(Math.random() * 20) + 5;
targetSumText.setText('Target: ' + targetSum);
}
function updateCurrentSum() {
currentSum = 0;
for (var i = 0; i < collectedNumbers.length; i++) {
currentSum += collectedNumbers[i];
}
currentSumText.setText('Current: ' + currentSum);
}
function checkSum() {
if (currentSum === targetSum) {
LK.setScore(LK.getScore() + targetSum * 10);
LK.getSound('correct').play();
collectedNumbers = [];
generateTargetSum();
gameSpeed += 0.1;
spawnRate = Math.max(30, spawnRate - 2);
// Flash effect
tween(game, {}, {
duration: 200,
onFinish: function onFinish() {
LK.effects.flashScreen(0x00ff00, 300);
}
});
} else if (currentSum > targetSum) {
lives--;
LK.getSound('wrong').play();
collectedNumbers = [];
generateTargetSum();
if (lives <= 0) {
LK.showGameOver();
}
// Flash effect
LK.effects.flashScreen(0xff0000, 500);
}
}
function spawnNumber() {
var value = Math.floor(Math.random() * 10);
var number = new FallingNumber(value);
number.x = Math.random() * (2048 - 240) + 120;
number.y = -50;
number.speed *= gameSpeed;
fallingNumbers.push(number);
game.addChild(number);
}
var dragNode = null;
function handleMove(x, y, obj) {
if (dragNode) {
dragNode.move(x);
}
}
game.move = handleMove;
game.down = function (x, y, obj) {
dragNode = player;
handleMove(x, y, obj);
};
game.up = function (x, y, obj) {
dragNode = null;
};
game.update = function () {
spawnTimer++;
if (spawnTimer >= spawnRate) {
spawnNumber();
spawnTimer = 0;
}
// Update falling numbers
for (var i = fallingNumbers.length - 1; i >= 0; i--) {
var number = fallingNumbers[i];
if (number.lastY === undefined) number.lastY = number.y;
if (number.lastIntersecting === undefined) number.lastIntersecting = false;
// Check if off screen
if (number.lastY < 2732 + 50 && number.y >= 2732 + 50) {
number.destroy();
fallingNumbers.splice(i, 1);
continue;
}
// Check collision with player
var currentIntersecting = number.intersects(player);
if (!number.lastIntersecting && currentIntersecting && !number.collected) {
number.collected = true;
collectedNumbers.push(number.value);
LK.getSound('collect').play();
// Animate collected number
tween(number, {
alpha: 0,
scaleX: 0.5,
scaleY: 0.5
}, {
duration: 300,
onFinish: function onFinish() {
number.destroy();
}
});
fallingNumbers.splice(i, 1);
updateCurrentSum();
checkSum();
continue;
}
number.lastY = number.y;
number.lastIntersecting = currentIntersecting;
}
// Update UI
scoreText.setText('Score: ' + LK.getScore());
livesText.setText('Lives: ' + lives);
};
// Initialize first target
generateTargetSum(); ===================================================================
--- original.js
+++ change.js
@@ -91,8 +91,15 @@
scoreText.anchor.set(0, 0);
LK.gui.topLeft.addChild(scoreText);
scoreText.x = 120;
scoreText.y = 20;
+var instructionText = new Text2('Arrastra para atrapar números\ny sumarlos al objetivo', {
+ size: 40,
+ fill: '#ffffff'
+});
+instructionText.anchor.set(0.5, 0.5);
+LK.gui.center.addChild(instructionText);
+instructionText.y = -200;
function generateTargetSum() {
targetSum = Math.floor(Math.random() * 20) + 5;
targetSumText.setText('Target: ' + targetSum);
}