User prompt
Kazanmadan önce 2 saniye Devamı gelecekde ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
fruit 2 3 4 5 200M de karşılaşalım
User prompt
mr patatesi göremiyoruz yanımıza gelip desin sonra 200m fruit 2 3 4 5 kurtaralım
User prompt
mr patatesle boss figth yapmayalım önümüze çıkıp kardeşlerin elimde diyip aşağı atlasın
User prompt
ve Mr patatesle savaşırken altında platform olsun
User prompt
Mr Patatesle kavga ederken karakter sabit dursun
User prompt
düşünce balonunu sil
User prompt
düşünce balonu assetsini ilk haline getir
User prompt
düşüünce balonuyla yazıyı ortala
User prompt
123 de karşımıza Mr.Patates çıksın onla dövüşelim ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
distance 90 da Onları MR.Patatese vermiyecektim yzsın
User prompt
distance 30 da düşünce baloncuğu içinde -Kardeşlerimi Bulacağım
User prompt
hepsinin altında düz platform olsun
User prompt
fruit 2 3 4 5 sıralı bir şekilde bizi beklisin yan yana
User prompt
az önce verdiğim komudu sil
User prompt
fruit 2 3 4 5 alınablir olmasın onların yanına gelince oyun bitsin
User prompt
menüyü sil
User prompt
play bottonunu assets e ekle
User prompt
Menü ekle
User prompt
fruitlerin hepsinin assetsleri olsun yanalırna gelince oyun bitsin
User prompt
Distance 145 de bitişe gelelim bitişte bizi Fruit 2 3 4 5 olsun
User prompt
3 zıplama
User prompt
level mantığını kaldır
User prompt
level 2 background farklı olsun
/**** 
* Plugins
****/ 
var storage = LK.import("@upit/storage.v1");
var tween = LK.import("@upit/tween.v1");
/**** 
* Classes
****/ 
var FinishFruit = Container.expand(function () {
	var self = Container.call(this);
	self.speed = -3;
	self.lastX = 0;
	self.lastIntersecting = false;
	self.number = 2; // Will be set when created
	self.fruitGraphics = null; // Will be set based on number
	self.setNumber = function (num) {
		self.number = num;
		// Remove existing graphics if any
		if (self.fruitGraphics) {
			self.removeChild(self.fruitGraphics);
		}
		// Add appropriate fruit asset based on number
		var assetName = 'fruit' + num;
		self.fruitGraphics = self.attachAsset(assetName, {
			anchorX: 0.5,
			anchorY: 0.5
		});
	};
	self.update = function () {
		self.lastX = self.x;
		self.x += self.speed;
	};
	return self;
});
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 = 3;
	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 MrPatates = Container.expand(function () {
	var self = Container.call(this);
	var patatesGraphics = self.attachAsset('mrPatates', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.speed = -2;
	self.lastX = 0;
	self.lastIntersecting = false;
	self.isDead = false;
	self.velocityY = 0;
	self.update = function () {
		if (self.isDead) return;
		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 finishFruits = [];
var finishFruitsSpawned = false;
var mrPatates = null;
var mrPatatesSpawned = false;
var bossMode = false;
// 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);
// 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;
}
function spawnFinishFruits() {
	// Create fruits with numbers 2, 3, 4, 5 in sequential order side by side
	var fruitNumbers = [2, 3, 4, 5];
	var startX = 2200;
	var yPosition = 1800; // Same Y position for all fruits to be side by side
	var platformY = yPosition + 120; // Platform below the fruits
	for (var i = 0; i < fruitNumbers.length; i++) {
		var finishFruit = new FinishFruit();
		finishFruit.setNumber(fruitNumbers[i]);
		finishFruit.x = startX + i * 180; // Slightly more spacing for better visibility
		finishFruit.y = yPosition;
		finishFruit.lastIntersecting = finishFruit.intersects(fruit);
		finishFruits.push(finishFruit);
		game.addChild(finishFruit);
		// Create platform beneath each finish fruit
		createPlatform(startX + i * 180, platformY);
	}
}
// 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() {
	// Don't spawn obstacles during boss fight
	if (bossMode) return;
	// Spawn platforms
	if (LK.ticks % Math.max(60, 120 - Math.floor(distanceTraveled / 20)) == 0) {
		var platformY = 1500 + Math.random() * 800;
		createPlatform(2200, platformY);
	}
	// Spawn knives
	var knifeSpawnRate = 90;
	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++) {
		knives[i].speed = -8 * gameSpeed;
	}
	for (var i = 0; i < juiceDrops.length; i++) {
		juiceDrops[i].speed = -4 * gameSpeed;
	}
	for (var i = 0; i < finishFruits.length; i++) {
		finishFruits[i].speed = -3 * 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);
		}
	}
	// Update and clean up finish fruits
	for (var i = finishFruits.length - 1; i >= 0; i--) {
		var finishFruit = finishFruits[i];
		// Check collection
		var currentIntersecting = finishFruit.intersects(fruit);
		if (!finishFruit.lastIntersecting && currentIntersecting) {
			// Collected finish fruit
			LK.setScore(LK.getScore() + 50);
			scoreTxt.setText('Score: ' + LK.getScore());
			LK.getSound('collect').play();
			finishFruit.destroy();
			finishFruits.splice(i, 1);
			continue;
		}
		finishFruit.lastIntersecting = currentIntersecting;
		// Clean up off-screen finish fruits
		if (finishFruit.lastX >= -200 && finishFruit.x < -200) {
			finishFruit.destroy();
			finishFruits.splice(i, 1);
		}
	}
	// Check win condition - all finish fruits collected
	if (finishFruitsSpawned && finishFruits.length === 0) {
		isGameRunning = false;
		// Show "Devamı gelecek" message for 2 seconds before win
		var continueText = new Text2('Devamı gelecek', {
			size: 120,
			fill: 0xFFFFFF
		});
		continueText.anchor.set(0.5, 0.5);
		continueText.x = 1024; // Center of screen
		continueText.y = 1366; // Center of screen
		game.addChild(continueText);
		// Use tween to create 2-second delay, then show win
		tween({}, {}, {
			duration: 2000,
			onFinish: function onFinish() {
				continueText.destroy();
				LK.showYouWin();
			}
		});
		return;
	}
	// Spawn Mr.Patates at distance 123
	if (distanceTraveled >= 123 && !mrPatatesSpawned) {
		mrPatates = new MrPatates();
		mrPatates.x = fruit.x + 300; // Spawn closer to character, visible on screen
		mrPatates.y = fruit.y; // Same Y position as character to be visible
		mrPatates.lastIntersecting = mrPatates.intersects(fruit);
		game.addChild(mrPatates);
		mrPatatesSpawned = true;
		// Create speech text
		var speechText = new Text2('Kardeşlerin elimde!', {
			size: 80,
			fill: 0xff0000
		});
		speechText.anchor.set(0.5, 0.5);
		speechText.x = mrPatates.x;
		speechText.y = mrPatates.y - 150;
		game.addChild(speechText);
		// Start Mr.Patates jumping down sequence after 2 seconds
		LK.setTimeout(function () {
			// Remove speech text
			speechText.destroy();
			// Make Mr.Patates jump down
			mrPatates.velocityY = 5;
			mrPatates.speed = 0; // Stop horizontal movement
		}, 2000);
	}
	// Mr.Patates falling logic
	if (mrPatates && !mrPatates.isDead) {
		// Make Mr.Patates fall down
		if (mrPatates.velocityY) {
			mrPatates.y += mrPatates.velocityY;
			mrPatates.velocityY += 0.8; // Gravity
		}
		// Clean up Mr.Patates when he falls off screen
		if (mrPatates.y > 2800) {
			mrPatates.destroy();
			mrPatates = null;
		}
	}
	// Check win condition at distance 200 (if no boss fight or boss defeated)
	if (distanceTraveled >= 200 && !finishFruitsSpawned) {
		spawnFinishFruits();
		finishFruitsSpawned = true;
	}
	// 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
@@ -373,9 +373,25 @@
 	}
 	// Check win condition - all finish fruits collected
 	if (finishFruitsSpawned && finishFruits.length === 0) {
 		isGameRunning = false;
-		LK.showYouWin();
+		// Show "Devamı gelecek" message for 2 seconds before win
+		var continueText = new Text2('Devamı gelecek', {
+			size: 120,
+			fill: 0xFFFFFF
+		});
+		continueText.anchor.set(0.5, 0.5);
+		continueText.x = 1024; // Center of screen
+		continueText.y = 1366; // Center of screen
+		game.addChild(continueText);
+		// Use tween to create 2-second delay, then show win
+		tween({}, {}, {
+			duration: 2000,
+			onFinish: function onFinish() {
+				continueText.destroy();
+				LK.showYouWin();
+			}
+		});
 		return;
 	}
 	// Spawn Mr.Patates at distance 123
 	if (distanceTraveled >= 123 && !mrPatatesSpawned) {
 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