User prompt
Karakter 2 kat büyüdüğünde hoplama özelliği olmasın
User prompt
Zıplama sesini karakter tam zıplamaya başladığında başlat
User prompt
Tebrikler ekranı çıktığında başka bir müzik olsun
User prompt
Zıplamak sesini karakter her zıpladığında kullan
User prompt
Müziği arka plan olarak kullan
User prompt
Karakter düşmanı yediğinde hiçbir şey belirmesin sadece düşman parçalansın ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Karakter düşmanı yediğinde arka planda yeni karakterler belirsin
User prompt
Arka planda beliren karakterler düşmandan ve normal karakterlerden farklı olsun
User prompt
Arka planda beliren karakterler farklı farklı olsun
User prompt
Karakter her düşman yediğinde arka planda yeni karakterler bilirsin
User prompt
Please fix the bug: 'TypeError: countdownText.setFill is not a function' in or related to this line: 'countdownText.setFill(0xFF9900); // Orange for normal countdown' Line Number: 320
User prompt
Karakter büyüdükten sonra geri 5 ten 0 a geri sayaç başlasın
User prompt
Karakter 2 kat büyüdükten sonra küçüleceği vakti belirtmek için geri sayım olsun ekranda görünecek şekilde ortada olsun
User prompt
Tebrikler ekranı çıktığında karakter yeni bir karaktere dönüşsün ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Karakter 15 düşmanı anlattıktan sonra düşman gelmesin ve karakter yeni bir karakter olsun
User prompt
Karakter 15 tane düşman atlattıktan sonra oyun bitsin ve tebrikler yazısı çıksın
User prompt
Karakter düşmana deydiğinde yenilsin
User prompt
Karakter 2 kat büyüdüğünde normalde durduğu eksenle aynı eksen üzerinde dursun
User prompt
Tebrikler ekranı çıktığında karakter yeni bir karaktere dönüşsün
User prompt
Tebrikler ekranı çıktığında karakter sağa sola hareket etmesin ve dans etmesin sadece yeni karakter olsun
User prompt
Tebrikler ekranı çıktığında düşmanlar gelmesin
User prompt
Tebrikler ekranı çıktığında düşmanlar gelmesin
User prompt
Tebrikler ekranı çıktıktan sonra yeni karakter sadece sağa sola hareket etsin
User prompt
Tebrikler ekranı çıktığında karakter dans etsin yani başka bir karakter olsun
User prompt
Karakter 25 düşmanı atlatınca oyun bitsin ve tebrikler ekranı çıksın
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // No background character class needed // Define a class for enemies var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); self.passed = false; self.update = function () { self.x -= enemySpeed; if (self.x < -50) { self.destroy(); } }; }); // Define a class for enemy miniatures var EnemyMiniature = Container.expand(function () { var self = Container.call(this); var miniatureGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.3, scaleY: 0.3 }); return self; }); //<Assets used in the game will automatically appear here> // Define a class for the player character var Player = Container.expand(function () { var self = Container.call(this); var playerGraphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 0.5, tint: 0xFFFFFF // Default tint, will be changed on transformation }); var playerJumpingGraphics = LK.getAsset('player_jumping', { anchorX: 0.5, anchorY: 0.5, tint: 0xFFFFFF // Default tint, will be changed on transformation }); var playerTransformedGraphics = LK.getAsset('player_transformed', { anchorX: 0.5, anchorY: 0.5, tint: 0xFF9900 // Orange tint for transformed state }); var playerDancingGraphics = LK.getAsset('player_dancing', { anchorX: 0.5, anchorY: 0.5, tint: 0xFFFFFF // Default tint for dancing state }); playerJumpingGraphics.visible = false; playerTransformedGraphics.visible = false; playerDancingGraphics.visible = false; self.addChild(playerJumpingGraphics); self.addChild(playerTransformedGraphics); self.addChild(playerDancingGraphics); self.isTransformed = false; self.isDancing = false; self.speed = 5; self.jumpHeight = 40; self.isJumping = false; self.scale.set(1, 1); // Initialize scale for transformation self.velocityY = 0; self.update = function () { if (self.isDancing) { // When in winning state, show dancing character playerGraphics.visible = false; playerJumpingGraphics.visible = false; playerTransformedGraphics.visible = false; playerDancingGraphics.visible = true; // Keep the player stationary self.y = 2732 / 2; return; // Skip regular movement logic when in winning state } // Track if this is the first frame of jumping if (self.isJumping && self.velocityY === -self.jumpHeight) { // Play jump sound exactly when the jump animation begins LK.getSound('Jump').play(); } if (self.isJumping) { self.y += self.velocityY; self.velocityY += 0.7; // Decreased gravity effect by 30% // Show jumping character playerGraphics.visible = false; playerTransformedGraphics.visible = false; playerJumpingGraphics.visible = true; playerDancingGraphics.visible = false; if (self.y >= 2732 / 2) { // Ground level self.y = 2732 / 2; self.isJumping = false; self.velocityY = 0; // Switch back to appropriate character based on transformation state if (self.isTransformed) { playerTransformedGraphics.visible = true; playerGraphics.visible = false; playerJumpingGraphics.visible = false; playerDancingGraphics.visible = false; } else { playerGraphics.visible = true; playerTransformedGraphics.visible = false; playerJumpingGraphics.visible = false; playerDancingGraphics.visible = false; } } } else { // Show appropriate character when not jumping based on transformation state if (self.isTransformed) { playerTransformedGraphics.visible = true; playerGraphics.visible = false; playerJumpingGraphics.visible = false; playerDancingGraphics.visible = false; } else { playerGraphics.visible = true; playerTransformedGraphics.visible = false; playerJumpingGraphics.visible = false; playerDancingGraphics.visible = false; } } }; self.jump = function () { if (!self.isJumping && !self.isDancing && !(self.scale.x >= 2)) { self.isJumping = true; self.velocityY = -self.jumpHeight; // We'll play the sound in the update method when jumping begins } }; self.transform = function (transformed) { self.isTransformed = transformed; if (self.isDancing) { return; } // Don't change appearance if dancing if (transformed) { playerGraphics.visible = false; playerJumpingGraphics.visible = false; playerTransformedGraphics.visible = true; playerDancingGraphics.visible = false; // Keep the original tint when transforming playerTransformedGraphics.tint = playerGraphics.tint; } else { playerGraphics.visible = !self.isJumping; playerJumpingGraphics.visible = self.isJumping; playerTransformedGraphics.visible = false; playerDancingGraphics.visible = false; } }; self.dance = function () { self.isDancing = true; playerGraphics.visible = false; playerJumpingGraphics.visible = false; playerTransformedGraphics.visible = false; playerDancingGraphics.visible = true; // Transform player appearance self.isTransformed = true; // No rotation animation self.rotation = 0; // Apply permanent transformation with larger size var originalY = self.y; tween(self.scale, { x: 2, y: 2 }, { duration: 500, easing: tween.easeOutElastic, onUpdate: function onUpdate() { // Keep the player's feet at the same level by adjusting Y position var heightIncrease = self.height - self.height / self.scale.y; self.y = originalY - heightIncrease / 2; } }); }; self.stopDancing = function () { self.isDancing = false; self.rotation = 0; // Return to normal state if (self.isTransformed) { playerTransformedGraphics.visible = true; playerGraphics.visible = false; playerJumpingGraphics.visible = false; playerDancingGraphics.visible = false; } else { playerGraphics.visible = true; playerTransformedGraphics.visible = false; playerJumpingGraphics.visible = false; playerDancingGraphics.visible = false; } // Reset scale to normal tween(self.scale, { x: 1, y: 1 }, { duration: 300, easing: tween.easeInOutQuad }); }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB // Sky blue background }); /**** * Game Code ****/ var background = game.addChild(LK.getAsset('background', { anchorX: 0, anchorY: 0 })); background.x = 0; background.y = 0; // Play background music LK.playMusic('deneme1'); // Initialize player var player = game.addChild(new Player()); player.x = 200; // Position player on the left side of the screen player.y = 2732 / 2; // Initialize enemies var enemies = []; var enemySpawnInterval = 100; var enemySpawnCounter = 0; var enemySpeed = 5; var speedIncreaseTimer = LK.setInterval(function () { enemySpeed += 1; console.log("Enemy speed increased to: " + enemySpeed); }, 5000); // 5 seconds // Create a new Text2 object to display the score var scoreText = new Text2('0', { size: 100, fill: 0xFFFFFF }); // Create text to display enemy count var enemyCountText = new Text2('Enemies Passed: 0', { size: 60, fill: 0xFFFFFF }); // Add the score text to the game GUI at the top center of the screen LK.gui.top.addChild(scoreText); scoreText.x = 2048 / 2; scoreText.y = 0; // Add enemy count text below score LK.gui.top.addChild(enemyCountText); enemyCountText.x = 2048 / 2; enemyCountText.y = 110; // Initialize enemy passed counter var enemiesPassed = 0; // Variable to track if transformation is in progress var isTransforming = false; // Countdown timer for transformation duration var transformCountdown = 0; // No need for background characters array // Countdown text display var countdownText = new Text2('', { size: 200, fill: 0xFF9900, // Orange color to match transformation stroke: 0x000000, // Black outline strokeThickness: 10, // Make the outline visible bold: true // Make text bold }); countdownText.anchor.set(0.5, 0.5); countdownText.x = 2048 / 2; // Center horizontally countdownText.y = 2732 / 2 - 400; // Position in middle of screen, above player LK.gui.center.addChild(countdownText); // Use center GUI container instead of top countdownText.visible = false; // Hide until needed // Create a container for enemy miniatures var miniatureContainer = new Container(); LK.gui.topRight.addChild(miniatureContainer); miniatureContainer.x = -50; // Offset from right edge miniatureContainer.y = 50; // Array to track miniatures var enemyMiniatures = []; // Handle game updates game.update = function () { player.update(); // Spawn enemies (only if player hasn't won yet) if (enemiesPassed < 15) { enemySpawnCounter++; if (enemySpawnCounter >= enemySpawnInterval) { var enemy = new Enemy(); enemy.x = 2048; enemy.y = 2732 / 2; enemies.push(enemy); game.addChild(enemy); // Randomize the spawn interval for the next enemy enemySpawnInterval = Math.floor(Math.random() * 150) + 50; enemySpawnCounter = 0; } } else { // Remove any remaining enemies when 15 enemies are passed for (var i = enemies.length - 1; i >= 0; i--) { enemies[i].destroy(); enemies.splice(i, 1); } } // Update transformation countdown if active if (transformCountdown > 0) { transformCountdown--; // Update countdown display - show seconds remaining var secondsRemaining = Math.ceil(transformCountdown / 60); // 60 frames per second countdownText.setText(secondsRemaining.toString()); // Make countdown text more visible as it gets lower if (secondsRemaining <= 2) { countdownText.fill = 0xFF0000; // Red for urgency } else { countdownText.fill = 0xFF9900; // Orange for normal countdown } // Hide countdown when it reaches zero if (transformCountdown <= 0) { countdownText.setText(''); } } // No background characters to update // Update enemies for (var j = enemies.length - 1; j >= 0; j--) { enemies[j].update(); // Track last intersection state for clean collision detection if (enemies[j].lastIntersecting === undefined) { enemies[j].lastIntersecting = false; } var currentlyIntersecting = player.intersects(enemies[j]); // Check if player collides with enemy when NOT transformed (player loses) if (!player.isTransformed && currentlyIntersecting && !enemies[j].passed) { // Flash screen red to indicate player has lost LK.effects.flashScreen(0xFF0000, 1000); // Show game over screen LK.showGameOver(); continue; } // Handle collision when player is transformed if (player.isTransformed && currentlyIntersecting && !enemies[j].passed) { // "Eat" the enemy // Create eating animation effect LK.effects.flashObject(enemies[j], 0xFF0000, 300); // Add bonus score for eating enemy LK.setScore(LK.getScore() + 5); scoreText.setText(LK.getScore()); // Create "eaten" text var eatenText = new Text2('+5', { size: 40, fill: 0xFF0000 }); eatenText.anchor.set(0.5, 0.5); eatenText.x = enemies[j].x; eatenText.y = enemies[j].y - 50; game.addChild(eatenText); // Remove eaten text after animation tween(eatenText, { y: eatenText.y - 100, alpha: 0 }, { duration: 800, onFinish: function onFinish() { eatenText.destroy(); } }); // Create explosion effect particles where the enemy was eaten for (var c = 0; c < 10; c++) { var particle = new Container(); var particleGraphic = particle.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.2, scaleY: 0.2 }); // Position particles around where enemy was eaten var angle = Math.random() * Math.PI * 2; var distance = 10 + Math.random() * 30; particle.x = enemies[j].x; particle.y = enemies[j].y; // Random rotation particle.rotation = Math.random() * Math.PI * 2; // Add to game game.addChild(particle); // Animate particles exploding outward and fading tween(particle, { x: enemies[j].x + Math.cos(angle) * distance * 8, y: enemies[j].y + Math.sin(angle) * distance * 8, alpha: 0, rotation: particle.rotation + Math.random() * 3 }, { duration: 500 + Math.random() * 300, easing: tween.easeOutQuad, onFinish: function () { this.destroy(); }.bind(particle) }); } // Remove the enemy enemies[j].destroy(); enemies.splice(j, 1); continue; } // If enemy passes player if (player.x > enemies[j].x && !enemies[j].passed) { enemies[j].passed = true; // Increment both counters LK.setScore(LK.getScore() + 1); enemiesPassed++; // Update both text displays scoreText.setText(LK.getScore()); enemyCountText.setText('Enemies Passed: ' + enemiesPassed); // Flash the enemy count text to highlight change LK.effects.flashObject(enemyCountText, 0x00FF00, 300); // Add a miniature of the passed enemy to the top right corner var miniature = new EnemyMiniature(); enemyMiniatures.push(miniature); miniatureContainer.addChild(miniature); // Arrange miniatures in rows of 5 var rowLength = 5; var miniSize = 40; // Space for each miniature var row = Math.floor((enemyMiniatures.length - 1) / rowLength); var col = (enemyMiniatures.length - 1) % rowLength; miniature.x = -(col * miniSize); miniature.y = row * miniSize; // Check if player has passed 15 enemies to complete the game if (enemiesPassed >= 15) { // Make player start dancing and transform player.dance(); // Create congratulation text before showing you win screen var congratsText = new Text2('Tebrikler!', { size: 120, fill: 0xFFD700 // Gold color }); congratsText.anchor.set(0.5, 0.5); congratsText.x = 2048 / 2; congratsText.y = 2732 / 2 - 200; // Move text up so it doesn't overlap with dancing player game.addChild(congratsText); // Add party effect - colored circles around the dancing player for (var i = 0; i < 10; i++) { var confetti = new Container(); var confettiGraphic = confetti.attachAsset('centerCircle', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.5, scaleY: 0.5 }); // Random colors for confetti var colors = [0xFF0000, 0x00FF00, 0x0000FF, 0xFFFF00, 0xFF00FF, 0x00FFFF]; confettiGraphic.tint = colors[Math.floor(Math.random() * colors.length)]; // Position around the player var angle = Math.random() * Math.PI * 2; var distance = 200 + Math.random() * 100; confetti.x = player.x + Math.cos(angle) * distance; confetti.y = player.y + Math.sin(angle) * distance; game.addChild(confetti); // Animate confetti tween(confetti, { x: confetti.x + Math.random() * 200 - 100, y: confetti.y - 200 - Math.random() * 200, alpha: 0 }, { duration: 1500, onFinish: function () { this.destroy(); }.bind(confetti) }); } // Flash screen with celebratory color LK.effects.flashScreen(0x00FF00, 1000); // No instruction text needed since player can't move // Show win screen after a longer delay to enjoy transformation animation more LK.setTimeout(function () { player.stopDancing(); LK.showYouWin(); }, 6000); // Extended to 6 seconds to show transformation animation longer } // Achievement notification for passing 5 enemies if (enemiesPassed % 5 === 0 && enemiesPassed > 0 && !isTransforming) { // Player transformation isTransforming = true; // Change to transformed character player.transform(true); // Set transformation countdown (5 seconds at 60fps) transformCountdown = 300; // 5 seconds duration countdownText.setText('5'); // Initial value // Position countdown text in the center of the screen countdownText.x = 2048 / 2; countdownText.y = 2732 / 2 - 400; // Position above the player countdownText.visible = true; // Save the player's original position var originalY = player.y; // Double the player size with animation tween(player.scale, { x: 2, y: 2 }, { duration: 500, easing: tween.easeOutElastic, onUpdate: function onUpdate() { // Keep the player's feet at the same level by adjusting Y position // Since the anchor is at 0.5, we need to adjust by half the height difference var heightIncrease = player.height - player.height / player.scale.y; player.y = originalY - heightIncrease / 2; } }); // Flash the player to highlight the achievement LK.effects.flashObject(player, 0xFF9900, 500); // Add text notification about transformation var transformText = new Text2('POWER UP!', { size: 80, fill: 0xFF9900 }); transformText.anchor.set(0.5, 0.5); transformText.x = player.x + 200; transformText.y = player.y - 150; game.addChild(transformText); LK.setTimeout(function () { transformText.destroy(); }, 2000); // Reset player size and appearance after 5 seconds LK.setTimeout(function () { var originalY = 2732 / 2; // Original player Y position (center of screen) tween(player.scale, { x: 1, y: 1 }, { duration: 500, easing: tween.easeInOutQuad, onUpdate: function onUpdate() { // Gradually restore original position as scale decreases var heightIncrease = player.height - player.height / player.scale.y; player.y = originalY - heightIncrease / 2; }, onFinish: function onFinish() { player.y = originalY; // Ensure player is exactly at original position player.transform(false); isTransforming = false; transformCountdown = 0; // Reset countdown countdownText.setText(''); // Clear countdown display countdownText.visible = false; // Hide countdown text completely } }); }, 5000); } } } }; // Handle player jump or control movement when dancing game.down = function (x, y, obj) { if (player.isDancing) { // No movement controls after winning } else { player.jump(); } };
===================================================================
--- original.js
+++ change.js
@@ -127,9 +127,9 @@
}
}
};
self.jump = function () {
- if (!self.isJumping && !self.isDancing) {
+ if (!self.isJumping && !self.isDancing && !(self.scale.x >= 2)) {
self.isJumping = true;
self.velocityY = -self.jumpHeight;
// We'll play the sound in the update method when jumping begins
}