User prompt
Please fix the bug: 'TypeError: easing is not a function' in or related to this line: 'if (gameState === 'gameOver') {' Line Number: 336 ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Meyveler büyük olsun ayrıca biraz daha yavaş düşsün arka plan daha gerçekçi olsun meyvelerde gerçekçi olsun
Code edit (1 edits merged)
Please save this source code
User prompt
Fruit Frenzy: Beach Catch
Initial prompt
Oyuncu yukarıdan düşen rastgele meyvelerin hepsine dokunmalı eğer bir meyve yere değerse oyunu kaybeder arada sırada bombada düşsün bombalar yere değebilir ama oyuncu bombaya tıklarsa oyunu kaybeder meyveler giderek dahada hızlı ve fazla gelsin ayrıca arka plan deniz manzarası olsun
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ var Fruit = Container.expand(function (type) { var self = Container.call(this); self.type = type || 'apple'; self.isBomb = self.type === 'bomb'; // Create fruit graphic var fruitGraphic = self.attachAsset(self.type, { anchorX: 0.5, anchorY: 0.5 }); // Add some visual distinction to different fruits if (self.type === 'banana') { fruitGraphic.rotation = Math.PI / 4; // Rotate bananas by 45 degrees } else if (self.type === 'grapes') { fruitGraphic.scale.set(0.9, 1.1); // Make grapes more oval } else if (self.type === 'bomb') { // Add a small "fuse" on top of the bomb var fuse = LK.getAsset('palmLeaf', { width: 20, height: 40, color: 0x808080, anchorX: 0.5, anchorY: 1 }); fuse.rotation = -Math.PI / 4; // Tilt the fuse fuse.position.set(0, -fruitGraphic.height / 2); self.addChild(fuse); } // Initialize physics properties self.speedY = 0; self.speedX = 0; self.gravity = 0.1; // Reduced gravity for slower falling self.active = true; // Make fruit interactive self.interactive = true; // Handle tap on fruit self.down = function () { if (!self.active) return; self.active = false; if (self.isBomb) { // Hit a bomb LK.getSound('explosion').play(); LK.effects.flashObject(self, 0xFF0000, 300); tween(self, { alpha: 0, scaleX: 2, scaleY: 2 }, { duration: 300, onFinish: function onFinish() { // Game over happens in the game's update method fruits.forEach(function (fruit) { fruit.active = false; }); gameState = 'gameOver'; } }); } else { // Hit a fruit LK.getSound('pop').play(); LK.setScore(LK.getScore() + 1); scoreTxt.setText(LK.getScore()); // Animate the fruit disappearing tween(self, { alpha: 0, scaleX: 1.5, scaleY: 1.5 }, { duration: 300, onFinish: function onFinish() { self.destroy(); var index = fruits.indexOf(self); if (index > -1) { fruits.splice(index, 1); } } }); } }; // Update the fruit's position self.update = function () { if (!self.active) return; self.speedY += self.gravity; self.y += self.speedY; self.x += self.speedX; // Check if the fruit hit the ground if (self.y > groundY - fruitGraphic.height / 2) { if (self.isBomb) { // Bombs can safely hit the ground self.active = false; tween(self, { alpha: 0 }, { duration: 300, onFinish: function onFinish() { self.destroy(); var index = fruits.indexOf(self); if (index > -1) { fruits.splice(index, 1); } } }); } else { // Missed a fruit self.active = false; LK.effects.flashObject(self, 0xFF0000, 300); tween(self, { alpha: 0 }, { duration: 300, onFinish: function onFinish() { // Game over happens in the game's update method fruits.forEach(function (fruit) { fruit.active = false; }); gameState = 'gameOver'; } }); } } // Remove if went off the side of the screen if (self.x < -100 || self.x > 2148) { self.active = false; self.destroy(); var index = fruits.indexOf(self); if (index > -1) { fruits.splice(index, 1); } } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB // Sky blue background }); /**** * Game Code ****/ // Game state management var gameState = 'playing'; var fruits = []; var spawnTimer = null; var difficulty = 1; var difficultyTimer = null; var groundY = 2732 - 100; // Position of the ground // Create beach scene // Ocean with realistic waves effect var ocean = game.addChild(LK.getAsset('ocean', { anchorX: 0, anchorY: 0, y: 0 })); // Animate ocean waves tween(ocean, { y: -5 }, { duration: 2000, yoyo: true, repeat: -1, easing: tween.easeInOut }); // Bright tropical sun with glow effect var sun = game.addChild(LK.getAsset('sun', { anchorX: 0.5, anchorY: 0.5, x: 300, y: 200 })); // Add sun ray effect tween(sun.scale, { x: 1.05, y: 1.05 }, { duration: 3000, yoyo: true, repeat: -1, easing: tween.easeInOut }); // Sandy beach var sand = game.addChild(LK.getAsset('sand', { anchorX: 0, anchorY: 0, y: groundY - 100 })); // Add some palm trees for decoration function createPalm(x) { var palm = LK.getAsset('palm', { anchorX: 0.5, anchorY: 1, x: x, y: groundY }); // Add palm leaves for (var i = 0; i < 5; i++) { var leaf = LK.getAsset('palmLeaf', { anchorX: 0, anchorY: 0.5, x: 0, y: -palm.height + 50 }); leaf.rotation = i / 5 * Math.PI * 2; palm.addChild(leaf); } return game.addChild(palm); } createPalm(200); createPalm(1800); // Create score display var scoreTxt = new Text2('0', { size: 100, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Function to spawn a new fruit function spawnFruit() { // Determine fruit type with random chance var fruitTypes = ['apple', 'banana', 'orange', 'grapes']; var type; // 15% chance of bomb, increasing with difficulty if (Math.random() < 0.15 + difficulty * 0.01) { type = 'bomb'; } else { type = fruitTypes[Math.floor(Math.random() * fruitTypes.length)]; } var newFruit = new Fruit(type); // Set random position at top of screen newFruit.x = Math.random() * (2048 - 200) + 100; newFruit.y = -100; // Random initial velocities - slower than before newFruit.speedY = Math.random() * 1 + 1 + difficulty * 0.3; // Reduced initial speed newFruit.speedX = (Math.random() - 0.5) * 3; // Slightly reduced horizontal speed fruits.push(newFruit); game.addChild(newFruit); } // Start the game function startGame() { // Reset game state gameState = 'playing'; difficulty = 1; // Clear any existing fruits while (fruits.length > 0) { var fruit = fruits.pop(); if (fruit) { fruit.destroy(); } } // Reset score LK.setScore(0); scoreTxt.setText('0'); // Start fruit spawning with longer intervals to account for slower movement spawnTimer = LK.setInterval(function () { if (gameState === 'playing') { spawnFruit(); // Spawn multiple fruits at higher difficulties if (difficulty >= 3 && Math.random() < 0.3) { LK.setTimeout(spawnFruit, 500); } if (difficulty >= 5 && Math.random() < 0.2) { LK.setTimeout(spawnFruit, 800); } } }, 2000 - difficulty * 100); // Increase difficulty over time difficultyTimer = LK.setInterval(function () { if (gameState === 'playing' && difficulty < 10) { difficulty += 1; // Update spawn rate LK.clearInterval(spawnTimer); spawnTimer = LK.setInterval(function () { if (gameState === 'playing') { spawnFruit(); // Spawn multiple fruits at higher difficulties if (difficulty >= 3 && Math.random() < 0.3) { LK.setTimeout(spawnFruit, 300); } if (difficulty >= 5 && Math.random() < 0.2) { LK.setTimeout(spawnFruit, 600); } } }, 1500 - difficulty * 100); } }, 10000); // Play background music LK.playMusic('beachMusic', { fade: { start: 0, end: 0.5, duration: 1000 } }); } // Start the game right away startGame(); // Update game state game.update = function () { // Update all fruits for (var i = fruits.length - 1; i >= 0; i--) { fruits[i].update(); } // Check for game over condition if (gameState === 'gameOver') { LK.clearInterval(spawnTimer); LK.clearInterval(difficultyTimer); // Show game over screen after a short delay LK.setTimeout(function () { LK.showGameOver(); }, 1000); gameState = 'over'; // Prevent multiple game over calls } }; // Game-wide touch event handling game.down = function (x, y, obj) { // The down events on fruits will be handled by their own down methods }; game.move = function (x, y, obj) { // No special handling needed for movement }; game.up = function (x, y, obj) { // No special handling needed for release };
===================================================================
--- original.js
+++ change.js
@@ -169,9 +169,9 @@
}, {
duration: 2000,
yoyo: true,
repeat: -1,
- easing: 'easeInOutSine'
+ easing: tween.easeInOut
});
// Bright tropical sun with glow effect
var sun = game.addChild(LK.getAsset('sun', {
anchorX: 0.5,
@@ -186,9 +186,9 @@
}, {
duration: 3000,
yoyo: true,
repeat: -1,
- easing: 'easeInOutSine'
+ easing: tween.easeInOut
});
// Sandy beach
var sand = game.addChild(LK.getAsset('sand', {
anchorX: 0,