User prompt
HAZ QUE TODAS LAS FRUTAS TENGAN LA MISMA POSIBILIDAD DE SPAWNEA. QUE ESTO NO AFECTE ALOS POWER UPS
User prompt
HAZ QUE UNA VEZ AL TOCAR EL BOTON DE DESACTIVAR LA MUSICA PUEDAS VOLVERLA A ACTIVAR PULSANDO EN ESE BOTON Y QUE LA MUSICA EMPIEZE AL INICIAR EL JUEGO NO CUANDO UNA FRUTA ES CORTADA
User prompt
HAZ QUE EL BOTON DE QUITAR MUSICA FUNCIONE Y. QUE DE VERDAD QUITE LA MUSICA QUE LA DESACTIVE Y QUE PUEDAS HACERLO CUANDO QUIERAS
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'var musicBtnPos = LK.gui.topRight.toLocal(obj.parent.toGlobal(obj.position));' Line Number: 443
User prompt
AÑADE MUSICA AMBIENTAL Y UN BOTON QUE DESACTIVE LA MUSICA
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'soundBtn.style.fill = soundEnabled ? 0x00FF00 : 0xFF0000;' Line Number: 296
User prompt
Botón para activar y desactivar música y efectos de sonido ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Cundo se activa el power ups de hielo el spawneo de cosas se detiene
User prompt
Haz que el contador de combos se actualize con cada fruta cortada también ambienta el juego en la Japón de los saludáis pls ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Haz que cuando se paréela tiempo el spawneo de frutas y power ups se pare
User prompt
Haz que de vez en cuando aparezcan un power yo que congela toda la pantalla y otro que crea una explosión y si estos power ups cen a la parte de abajo de la pantalla desaparezcan pero no te quiten vidas ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'activeTouch = obj.event.identifier || 0; // Track the specific touch' Line Number: 316
User prompt
Haz que solo detecte un dedo
User prompt
Que solo detecte un dedo
User prompt
Que en la parte de baja de la pantalla sí que las frutas puedan caer
User prompt
Haz que las frutas no puedan salir de la pantalla
User prompt
Haz que al tocar la parte de arriba de la pantalla caigan con gravedad y como lo haría una fruta que no lo toca ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Haz que la curva de dificultad por cada cien puntos sea menor
User prompt
Haz que las frutas al llegar a la parte de arriba de la pantalla caigan
User prompt
Haz que el sosteneos vaya aumentando cada cien puntos
User prompt
Menos spawn
User prompt
Que spawnen menos fruta
User prompt
que spawnen menos frutas y que vayan mas alto
User prompt
mas y que sean mas grande
User prompt
haz que suban mas
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Fruit = Container.expand(function (fruitType) {
var self = Container.call(this);
self.fruitType = fruitType || 'pineapple';
var fruitGraphics = self.attachAsset(self.fruitType, {
anchorX: 0.5,
anchorY: 0.5
});
self.speedX = 0;
self.speedY = 0;
self.gravity = 0.3;
self.sliced = false;
self.lastX = 0;
self.lastY = 0;
self.update = function () {
if (!self.sliced) {
self.lastX = self.x;
self.lastY = self.y;
self.x += self.speedX;
self.y += self.speedY;
// Check if fruit reached the top of the screen and apply natural falling physics
if (self.speedY < 0 && self.y <= 0) {
self.y = 0; // Keep fruit at top boundary
self.speedY = 0; // Reset velocity to start natural fall
// Add slight bounce effect with tween for more natural motion
tween(self, {
speedY: 2
}, {
duration: 100,
easing: tween.easeOut
});
}
self.speedY += self.gravity; // Apply gravity to make fruits fall
}
};
return self;
});
var FruitPiece = Container.expand(function (fruitType) {
var self = Container.call(this);
self.fruitType = fruitType || 'pineapple';
var pieceAsset = self.fruitType + 'Piece';
var pieceGraphics = self.attachAsset(pieceAsset, {
anchorX: 0.5,
anchorY: 0.5
});
self.speedX = 0;
self.speedY = 0;
self.gravity = 0.5;
self.life = 60;
self.update = function () {
self.x += self.speedX;
self.y += self.speedY;
self.speedY += self.gravity;
self.rotation += 0.1;
self.life--;
if (self.life <= 0) {
tween(self, {
alpha: 0
}, {
duration: 300,
onFinish: function onFinish() {
self.toDestroy = true;
}
});
}
};
return self;
});
var SwipeLine = Container.expand(function () {
var self = Container.call(this);
var lineGraphics = self.attachAsset('swipeLine', {
anchorX: 0.5,
anchorY: 0
});
self.life = 10;
self.update = function () {
self.life--;
self.alpha = self.life / 10;
if (self.life <= 0) {
self.toDestroy = true;
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87CEEB
});
/****
* Game Code
****/
// Game variables
var fruits = [];
var fruitPieces = [];
var swipeLines = [];
var lives = 3;
var combo = 0;
var multiplier = 1;
var spawnTimer = 0;
var spawnRate = 40;
var gameSpeed = 1;
var isGameOver = false;
var lastScoreCheckpoint = 0; // Track score milestones for increasing sustain
// Swiping variables
var isSwipeDown = false;
var lastSwipeX = 0;
var lastSwipeY = 0;
// UI
var scoreTxt = new Text2('Score: 0', {
size: 80,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
var livesTxt = new Text2('Lives: 3', {
size: 60,
fill: 0xFF6B6B
});
livesTxt.anchor.set(1, 0);
LK.gui.topRight.addChild(livesTxt);
var comboTxt = new Text2('', {
size: 50,
fill: 0xFFD700
});
comboTxt.anchor.set(0, 0);
LK.gui.topLeft.addChild(comboTxt);
function updateUI() {
scoreTxt.setText('Score: ' + LK.getScore());
livesTxt.setText('Lives: ' + lives);
if (combo > 1) {
comboTxt.setText('Combo x' + multiplier);
comboTxt.x = 120;
} else {
comboTxt.setText('');
}
}
function checkScoreProgression() {
var currentScore = LK.getScore();
// Check if we've reached a new 100-point milestone
if (Math.floor(currentScore / 100) > Math.floor(lastScoreCheckpoint / 100)) {
// Increase game sustain/difficulty with smaller increments
gameSpeed += 0.1; // Smaller increase to game speed
if (spawnRate > 15) {
spawnRate -= 1; // Smaller decrease to spawn rate (spawn fruits less frequently)
}
lastScoreCheckpoint = currentScore;
}
}
function spawnFruit() {
var fruitTypes = ['pineapple', 'apple', 'orange', 'watermelon'];
var randomType = fruitTypes[Math.floor(Math.random() * fruitTypes.length)];
var fruit = new Fruit(randomType);
// Spawn from bottom of screen
fruit.x = Math.random() * 2048;
fruit.y = 2732 + 75;
// Give upward velocity with some horizontal variation
var upwardSpeed = -(25 + Math.random() * 15) * gameSpeed; // Negative for upward movement - much higher velocity
var horizontalSpeed = (Math.random() - 0.5) * 4 * gameSpeed; // Small horizontal drift
fruit.speedY = upwardSpeed;
fruit.speedX = horizontalSpeed;
fruit.lastX = fruit.x;
fruit.lastY = fruit.y;
fruits.push(fruit);
game.addChild(fruit);
}
function createFruitPieces(x, y, fruitType) {
for (var i = 0; i < 4; i++) {
var piece = new FruitPiece(fruitType);
piece.x = x + (Math.random() - 0.5) * 40;
piece.y = y + (Math.random() - 0.5) * 40;
piece.speedX = (Math.random() - 0.5) * 8;
piece.speedY = (Math.random() - 0.5) * 6 - 2;
piece.rotation = Math.random() * Math.PI * 2;
fruitPieces.push(piece);
game.addChild(piece);
}
}
function createSwipeLine(x1, y1, x2, y2) {
var distance = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
var steps = Math.floor(distance / 20);
for (var i = 0; i <= steps; i++) {
var t = i / steps;
var x = x1 + (x2 - x1) * t;
var y = y1 + (y2 - y1) * t;
var line = new SwipeLine();
line.x = x;
line.y = y;
line.rotation = Math.atan2(y2 - y1, x2 - x1) + Math.PI / 2;
swipeLines.push(line);
game.addChild(line);
}
}
function checkSwipeIntersection(x1, y1, x2, y2, fruit) {
var px = fruit.x;
var py = fruit.y;
var radius = 90;
// Distance from point to line segment
var A = px - x1;
var B = py - y1;
var C = x2 - x1;
var D = y2 - y1;
var dot = A * C + B * D;
var lenSq = C * C + D * D;
var param = lenSq !== 0 ? dot / lenSq : -1;
var xx, yy;
if (param < 0) {
xx = x1;
yy = y1;
} else if (param > 1) {
xx = x2;
yy = y2;
} else {
xx = x1 + param * C;
yy = y1 + param * D;
}
var dx = px - xx;
var dy = py - yy;
var distance = Math.sqrt(dx * dx + dy * dy);
return distance <= radius;
}
function sliceFruit(fruit) {
if (!fruit.sliced) {
fruit.sliced = true;
// Award points with combo multiplier
var points = 10 * multiplier;
LK.setScore(LK.getScore() + points);
// Increase combo
combo++;
if (combo >= 5) {
multiplier = 3;
} else if (combo >= 3) {
multiplier = 2;
} else {
multiplier = 1;
}
// Create pieces
createFruitPieces(fruit.x, fruit.y, fruit.fruitType);
// Play sound
LK.getSound('slice').play();
// Flash effect
LK.effects.flashObject(fruit, 0xFFFFFF, 200);
// Mark for destruction
fruit.toDestroy = true;
}
}
function loseFruit() {
lives--;
combo = 0;
multiplier = 1;
LK.getSound('miss').play();
LK.effects.flashScreen(0xFF0000, 300);
if (lives <= 0) {
isGameOver = true;
LK.showGameOver();
}
}
// Event handlers
game.down = function (x, y, obj) {
if (isGameOver) return;
isSwipeDown = true;
lastSwipeX = x;
lastSwipeY = y;
};
game.move = function (x, y, obj) {
if (isGameOver || !isSwipeDown) return;
var distance = Math.sqrt((x - lastSwipeX) * (x - lastSwipeX) + (y - lastSwipeY) * (y - lastSwipeY));
if (distance > 20) {
createSwipeLine(lastSwipeX, lastSwipeY, x, y);
// Check for fruit intersections
for (var i = 0; i < fruits.length; i++) {
var fruit = fruits[i];
if (!fruit.sliced && checkSwipeIntersection(lastSwipeX, lastSwipeY, x, y, fruit)) {
sliceFruit(fruit);
}
}
lastSwipeX = x;
lastSwipeY = y;
}
};
game.up = function (x, y, obj) {
isSwipeDown = false;
};
// Main game loop
game.update = function () {
if (isGameOver) return;
// Spawn fruits
spawnTimer++;
if (spawnTimer >= spawnRate) {
// Spawn fewer fruits for better gameplay
var fruitsToSpawn = 1; // Spawn only 1 fruit
for (var s = 0; s < fruitsToSpawn; s++) {
spawnFruit();
}
spawnTimer = 0;
// Increase difficulty over time - faster spawning
if (spawnRate > 25) {
spawnRate -= 1;
}
if (gameSpeed < 3) {
gameSpeed += 0.02;
}
}
// Update and check fruits
for (var i = fruits.length - 1; i >= 0; i--) {
var fruit = fruits[i];
if (fruit.toDestroy) {
fruit.destroy();
fruits.splice(i, 1);
continue;
}
// Check if fruit went off screen
if (!fruit.sliced && (fruit.x < -100 || fruit.x > 2148 || fruit.y < -100 || fruit.y > 2832)) {
loseFruit();
fruit.destroy();
fruits.splice(i, 1);
}
}
// Update and clean up pieces
for (var i = fruitPieces.length - 1; i >= 0; i--) {
var piece = fruitPieces[i];
if (piece.toDestroy) {
piece.destroy();
fruitPieces.splice(i, 1);
}
}
// Update and clean up swipe lines
for (var i = swipeLines.length - 1; i >= 0; i--) {
var line = swipeLines[i];
if (line.toDestroy) {
line.destroy();
swipeLines.splice(i, 1);
}
}
updateUI();
checkScoreProgression(); // Check for score milestones and increase sustain
};
// Initialize UI
updateUI(); ===================================================================
--- original.js
+++ change.js
@@ -24,11 +24,19 @@
self.lastX = self.x;
self.lastY = self.y;
self.x += self.speedX;
self.y += self.speedY;
- // Check if fruit reached the top of the screen and reverse direction
+ // Check if fruit reached the top of the screen and apply natural falling physics
if (self.speedY < 0 && self.y <= 0) {
- self.speedY = Math.abs(self.speedY); // Make it positive to fall down
+ self.y = 0; // Keep fruit at top boundary
+ self.speedY = 0; // Reset velocity to start natural fall
+ // Add slight bounce effect with tween for more natural motion
+ tween(self, {
+ speedY: 2
+ }, {
+ duration: 100,
+ easing: tween.easeOut
+ });
}
self.speedY += self.gravity; // Apply gravity to make fruits fall
}
};
Naranja fruta. In-Game asset. 2d. High contrast. No shadows
Trozo de naranja fruta. In-Game asset. 2d. High contrast. No shadows
Apple. In-Game asset. 2d. High contrast. No shadows
Aple piece. In-Game asset. 2d. High contrast. No shadows
Bomba. In-Game asset. 2d. High contrast. No shadows
Cubito de hielo. In-Game asset. 2d. High contrast. No shadows
Pineaple. In-Game asset. 2d. High contrast. No shadows
Trozo piña. In-Game asset. 2d. High contrast. No shadows
Watermelon. In-Game asset. 2d. High contrast. No shadows
Una sandía individual. In-Game asset. 2d. High contrast. No shadows