User prompt
level birde platformlar çok yakın olsun
User prompt
level 1 i kolaylaşır
User prompt
120.Distance level 1 bitsin level 2 başlasın
User prompt
distance 120 de oyun bitsin
User prompt
Distance bozuk görünüyor Fix it
User prompt
BIÇAKLAR hızlansın
User prompt
juicedrop platformların üstünde spawn olsun
User prompt
hayır oyunu ilk haline getir
User prompt
platformları birbirene yaklaştır
User prompt
başlangıçtaki boşluğuda kapat
User prompt
aralıkları yaklaştır
User prompt
aralıklar atlıyabilceğimiz kadar olsun
User prompt
platformları biraz yaklaştır
User prompt
animasyonları sil
User prompt
animasyon ekleme ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
fruite animasyon ekle ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Yere düşünce ölelim
User prompt
çift zıplama
User prompt
fruit başlangıç platformunun üstünde yer alsın
Code edit (1 edits merged)
Please save this source code
User prompt
Fruity Escape: Blender Factory Break
Initial prompt
Create a fun and addictive 2D mobile platformer game with simple controls (tap, swipe) and vibrant visuals. The main character is a bouncy fruit (like a watermelon or banana) escaping from a blender factory. Players must jump through moving platforms, dodge flying kitchen tools, and collect juice drops for points. Add funny sound effects, increasing speed as levels progress, boss chases (like a giant knife), and daily challenges. Include a shop to buy silly skins (pineapple suit, ketchup armor, etc.) with collected points.
/**** * Plugins ****/ var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ var Fruit = Container.expand(function () { var self = Container.call(this); var fruitGraphics = self.attachAsset('fruit', { anchorX: 0.5, anchorY: 0.5 }); self.velocityY = 0; self.gravity = 0.8; self.jumpPower = -18; self.isOnGround = false; self.lastY = 0; self.jumpCount = 0; self.maxJumps = 2; self.jump = function () { if (self.jumpCount < self.maxJumps) { self.velocityY = self.jumpPower; self.jumpCount++; if (self.jumpCount === 1) { self.isOnGround = false; } LK.getSound('jump').play(); } }; self.update = function () { self.lastY = self.y; self.velocityY += self.gravity; self.y += self.velocityY; // No ground collision safety - let fruit fall through }; return self; }); var JuiceDrop = Container.expand(function () { var self = Container.call(this); var dropGraphics = self.attachAsset('juiceDrop', { anchorX: 0.5, anchorY: 0.5 }); self.speed = -4; self.lastX = 0; self.lastIntersecting = false; self.update = function () { self.lastX = self.x; self.x += self.speed; }; return self; }); var Knife = Container.expand(function () { var self = Container.call(this); var knifeGraphics = self.attachAsset('knife', { anchorX: 0.5, anchorY: 0.5 }); self.speed = -8; self.lastX = 0; self.lastIntersecting = false; self.update = function () { self.lastX = self.x; self.x += self.speed; }; return self; }); var Platform = Container.expand(function () { var self = Container.call(this); var platformGraphics = self.attachAsset('platform', { anchorX: 0.5, anchorY: 0.5 }); self.speed = -3; self.lastX = 0; self.update = function () { self.lastX = self.x; self.x += self.speed; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB }); /**** * Game Code ****/ var bg = game.addChild(LK.getAsset('background', { anchorX: 0, anchorY: 0, x: 0, y: 0 })); var fruit = game.addChild(new Fruit()); fruit.x = 600; fruit.y = 2260; var platforms = []; var knives = []; var juiceDrops = []; var gameSpeed = 1; var distanceTraveled = 0; var isGameRunning = true; var currentLevel = 1; var levelDistance = 120; // UI Elements var scoreTxt = new Text2('Score: 0', { size: 60, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); var distanceTxt = new Text2('Distance: 0m', { size: 50, fill: 0xFFFFFF }); distanceTxt.anchor.set(0, 0); distanceTxt.x = 150; distanceTxt.y = 100; LK.gui.topLeft.addChild(distanceTxt); var levelTxt = new Text2('Level: 1', { size: 50, fill: 0xFFFFFF }); levelTxt.anchor.set(0, 0); levelTxt.x = 150; levelTxt.y = 50; LK.gui.topLeft.addChild(levelTxt); // Initialize some platforms function createPlatform(x, y) { var platform = new Platform(); platform.x = x; platform.y = y; platforms.push(platform); game.addChild(platform); return platform; } function createKnife(x, y) { var knife = new Knife(); knife.x = x; knife.y = y; knife.lastIntersecting = knife.intersects(fruit); knives.push(knife); game.addChild(knife); return knife; } function createJuiceDrop(x, y) { var drop = new JuiceDrop(); drop.x = x; drop.y = y; drop.lastIntersecting = drop.intersects(fruit); juiceDrops.push(drop); game.addChild(drop); return drop; } // Create initial platforms createPlatform(600, 2300); createPlatform(900, 2200); createPlatform(1200, 2100); createPlatform(1500, 2000); createPlatform(1800, 1900); // Touch controls game.down = function (x, y, obj) { if (isGameRunning) { fruit.jump(); } }; function checkPlatformCollisions() { for (var i = 0; i < platforms.length; i++) { var platform = platforms[i]; var fruitBottom = fruit.y + 40; var fruitTop = fruit.y - 40; var fruitLeft = fruit.x - 40; var fruitRight = fruit.x + 40; var platformTop = platform.y - 15; var platformBottom = platform.y + 15; var platformLeft = platform.x - 100; var platformRight = platform.x + 100; // Check if fruit is landing on platform from above if (fruit.velocityY > 0 && fruitBottom >= platformTop && fruitTop <= platformBottom && fruitRight >= platformLeft && fruitLeft <= platformRight) { fruit.y = platformTop - 40; fruit.velocityY = 0; fruit.isOnGround = true; fruit.jumpCount = 0; break; } } } function spawnObstacles() { // Spawn platforms - more frequent in level 1 var platformSpawnRate = currentLevel === 1 ? 25 : 60; // Much more frequent spawning in level 1 if (LK.ticks % Math.max(platformSpawnRate, 120 - Math.floor(distanceTraveled / 20)) == 0) { var platformY = 1500 + Math.random() * 800; createPlatform(2200, platformY); } // Spawn knives - easier in level 1 var knifeSpawnRate = currentLevel === 1 ? 180 : 90; // Much slower spawn in level 1 if (LK.ticks % Math.max(knifeSpawnRate, 150 - Math.floor(distanceTraveled / 5)) == 0) { var knifeY = 1400 + Math.random() * 1000; createKnife(2200, knifeY); } // Spawn juice drops on platforms if (LK.ticks % Math.max(120, 180 - Math.floor(distanceTraveled / 8)) == 0) { // Find a platform to spawn juice drop on if (platforms.length > 0) { var randomPlatform = platforms[Math.floor(Math.random() * platforms.length)]; var dropY = randomPlatform.y - 80; // Spawn above the platform createJuiceDrop(randomPlatform.x, dropY); } } } function updateGameSpeed() { gameSpeed = 1 + Math.floor(distanceTraveled / 50) * 0.2; // Update speeds for all moving objects for (var i = 0; i < platforms.length; i++) { platforms[i].speed = -3 * gameSpeed; } for (var i = 0; i < knives.length; i++) { var knifeSpeedMultiplier = currentLevel === 1 ? 0.6 : 1; // Slower knives in level 1 knives[i].speed = -8 * gameSpeed * knifeSpeedMultiplier; } for (var i = 0; i < juiceDrops.length; i++) { juiceDrops[i].speed = -4 * gameSpeed; } } game.update = function () { if (!isGameRunning) return; // Update distance distanceTraveled += 0.1 * gameSpeed; distanceTxt.setText('Distance: ' + Math.floor(distanceTraveled) + 'm'); // Update game speed updateGameSpeed(); // Check platform collisions checkPlatformCollisions(); // Spawn new obstacles spawnObstacles(); // Update and clean up platforms for (var i = platforms.length - 1; i >= 0; i--) { var platform = platforms[i]; if (platform.lastX >= -200 && platform.x < -200) { platform.destroy(); platforms.splice(i, 1); } } // Update and clean up knives for (var i = knives.length - 1; i >= 0; i--) { var knife = knives[i]; // Check collision with fruit var currentIntersecting = knife.intersects(fruit); if (!knife.lastIntersecting && currentIntersecting) { // Hit by knife - game over LK.getSound('hit').play(); LK.effects.flashScreen(0xff0000, 1000); isGameRunning = false; LK.showGameOver(); return; } knife.lastIntersecting = currentIntersecting; // Clean up off-screen knives if (knife.lastX >= -200 && knife.x < -200) { knife.destroy(); knives.splice(i, 1); } } // Update and clean up juice drops for (var i = juiceDrops.length - 1; i >= 0; i--) { var drop = juiceDrops[i]; // Check collection var currentIntersecting = drop.intersects(fruit); if (!drop.lastIntersecting && currentIntersecting) { // Collected juice drop LK.setScore(LK.getScore() + 10); scoreTxt.setText('Score: ' + LK.getScore()); LK.getSound('collect').play(); drop.destroy(); juiceDrops.splice(i, 1); continue; } drop.lastIntersecting = currentIntersecting; // Clean up off-screen drops if (drop.lastX >= -200 && drop.x < -200) { drop.destroy(); juiceDrops.splice(i, 1); } } // Check level progression - every 120 distance units if (distanceTraveled >= levelDistance * currentLevel) { currentLevel++; levelTxt.setText('Level: ' + currentLevel); // Flash screen to indicate level up LK.effects.flashScreen(0x00ff00, 500); } // Check if fruit fell to ground or off screen if (fruit.y > 2500) { isGameRunning = false; LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } // Add bonus points for distance if (LK.ticks % 60 == 0) { LK.setScore(LK.getScore() + Math.floor(gameSpeed)); scoreTxt.setText('Score: ' + LK.getScore()); } }; // Start background music LK.playMusic('bgmusic');
===================================================================
--- original.js
+++ change.js
@@ -193,9 +193,9 @@
}
}
function spawnObstacles() {
// Spawn platforms - more frequent in level 1
- var platformSpawnRate = currentLevel === 1 ? 45 : 60; // More frequent spawning in level 1
+ var platformSpawnRate = currentLevel === 1 ? 25 : 60; // Much more frequent spawning in level 1
if (LK.ticks % Math.max(platformSpawnRate, 120 - Math.floor(distanceTraveled / 20)) == 0) {
var platformY = 1500 + Math.random() * 800;
createPlatform(2200, platformY);
}
yürüyen insan portakal. In-Game asset. 2d. High contrast. No shadows
bıçak . No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
platform . No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
meyve suyu kutu. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
banana human. In-Game asset. 2d. High contrast. No shadows
kiwi human. In-Game asset. 2d. High contrast. No shadows
cucumber human. In-Game asset. 2d. High contrast. No shadows
Mr patates human. In-Game asset. 2d. High contrast. No shadows