User prompt
если сытость рыбы 30 или меньше она плавает за ближайшим кормом
User prompt
повтори
User prompt
пузыри должны подниматься быстрее в 2 раза
User prompt
Пузыри должны лопаться ниже на 230
User prompt
Пузыри должны лопаться ниже на 250
User prompt
Пузыри должны лопаться ниже на 350
User prompt
Пузыри должны лопаться по горизонту чуть ниже уровня иконок
User prompt
Пузыри больше не должны лопаться через время. Теперь они лопаются когда доплывают до верхней граници
User prompt
все равно не то
User prompt
почему-то она не плывет к корму а становится под ним и ждет или над ним. Исправь это
User prompt
рыба должна двигатться напрямую к корму
User prompt
почему-то рыба не плавает вверх и вниз за кормом исправь это
User prompt
если рыба каснулась корма и ее сытость 30 или меньше то корм исчезает а сытость рыбы становится 60.
User prompt
радиус реагирования на корм нужно увеличить в 5 раз
User prompt
если сытость рыбы 30 или меньше то она должна двигаться за ближайшим кормом при этом ее скорость в 3 раза выше.
User prompt
все движение рыбы возможно только при условии что ее сытость 30 или больше
User prompt
она не поплыла исправь это
User prompt
если сытость рыбы меньше 30 то она должа плыть в сторону ближайшего корма.
User prompt
если сытость рыбы меньше 30 то она должа плыть в сторону ближайшего корма.
User prompt
если сытость рыбы меньше 31 то она должа плыть в сторону ближайшего корма.
User prompt
добавь к движениям рыбы условие что если у нее сытость выше 30 или на уровне отсутствует корм.
User prompt
если рыба коснулась корма когда она голодна то корм прибавляет ей сытость на 30 и исчезает.
User prompt
рыба всегда выбирает ближайший корм.
User prompt
если на уровне есть корм то при голоде рыба плывет прямиком к ниму и ускоряется в 3 раза
User prompt
рыба сыта если у нее сытость 30 или больше. Или если на уровне отсутствует корм.
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Aquarium class representing the aquarium var Aquarium = Container.expand(function () { var self = Container.call(this); var aquariumGraphics = self.attachAsset('Aquarium', { anchorX: 0.5, anchorY: 0.5 }); self.x = 2048 / 2; self.y = 2732 / 2; var scale = Math.min(2048 / aquariumGraphics.width, 2732 / aquariumGraphics.height); self.scaleX = scale; self.scaleY = scale; }); // Bubble class representing a bubble created by fish var Bubble = Container.expand(function () { var self = Container.call(this); var randomScale = Math.random() * 0.5 + 0.75; // Random scale between 0.75 and 1.25 var bubbleGraphics = self.attachAsset('bubble', { anchorX: 0.5, anchorY: 0.5, alpha: 0.7, // Set transparency to 50% scaleX: randomScale, scaleY: randomScale }); // Initialize bubble position and speed self.speed = Math.random() * 0.5 + 0.5; // Random speed for each bubble // Update function to move the bubble upwards self.update = function () { self.y -= self.speed * 2; self.x += Math.sin(LK.ticks / 20) * 0.5; // Oscillate horizontally if (self.y < 0) { self.pop(); } }; // Set a timeout to pop the bubble after a random lifespan between 3 to 5 seconds LK.setTimeout(function () { self.pop(); }, Math.random() * 2000 + 3000); // Function to pop the bubble self.pop = function () { // Add pop animation or effect here if needed LK.getSound('Lop').play(); self.destroy(); bubbles.splice(bubbles.indexOf(self), 1); }; }); // Coin class representing a coin dropped by a fish var Coin = Container.expand(function () { var self = Container.call(this); var coinGraphics = self.attachAsset('coin', { anchorX: 0.5, anchorY: 0.5 }); // Update function to move the coin downwards self.update = function () { self.y += 2; if (self.y > 2732) { self.destroy(); coins.splice(coins.indexOf(self), 1); } }; }); // Corm class representing a falling corm var Corm = Container.expand(function () { var self = Container.call(this); self.rotationDirection = Math.random() < 0.5 ? 1 : -1; // Randomly set rotation direction var cormGraphics = self.attachAsset('corm', { anchorX: 0.5, anchorY: 0.5, alpha: 2 }); // Update function to move the corm downwards self.update = function () { if (self.y > 700) { self.y += 1; // Adjust speed to 1 after reaching y-position of 800 cormGraphics.rotation += self.rotationDirection * 0.005; // Slow down rotation when speed is 1 } else { self.y += 2; // Initial speed of falling corm cormGraphics.rotation += 0.01; // Rotate the corm slowly around its axis } if (self.y > aquarium.y + aquarium.height / 2 - 50) { // Stop at the bottom of the aquarium self.y = aquarium.y + aquarium.height / 2 - 50; // Set position to the bottom self.update = null; // Stop updating position // Start the timer for corm disappearance LK.setTimeout(function () { // Flash the corm for 2 seconds var flashDuration = 2000; var flashInterval = 200; var flashCount = flashDuration / flashInterval; var flashTimer = LK.setInterval(function () { cormGraphics.alpha = cormGraphics.alpha === 1 ? 0.5 : 1; flashCount--; if (flashCount <= 0) { LK.clearInterval(flashTimer); self.destroy(); corms.splice(corms.indexOf(self), 1); } }, flashInterval); }, 3000); // Wait for 3 seconds before starting to flash } }; }); // Fish class representing a fish in the aquarium var Fish = Container.expand(function () { var self = Container.call(this); var fishGraphics = self.attachAsset('fish', { anchorX: 0.5, anchorY: 0.5, alpha: 3 }); self.speed = Math.random() * 2 + 1; // Random speed for each fish self.direction = 1; // Fish always swim to the right when they appear // Initialize satiety variable self.satiety = 60; // Create a text object to display satiety above the fish var satietyText = new Text2(self.satiety.toString(), { size: 50, fill: 0x0000FF // Change color to blue }); satietyText.anchor.set(0.5, 1); // Center the text horizontally above the fish satietyText.y -= 75; // Move the text 75 units higher self.addChild(satietyText); // Update satiety display self.updateSatietyDisplay = function () { satietyText.setText(self.satiety.toString()); }; // Update function to move the fish self.update = function () { if (!self.horizontalPaused) { if (self.satiety >= 30) { self.x += self.speed * self.direction; if (self.x < aquarium.x - aquarium.width / 2 || self.x > aquarium.x + aquarium.width / 2) { self.direction *= -1; // Change direction if fish hits the aquarium edge if (self.direction < 0) { fishGraphics.scaleX = -1; // Flip the fish to the left } else { fishGraphics.scaleX = 1; // Flip the fish to the right } } } else { // Find the nearest corm var nearestCorm = null; var minDistance = Infinity; for (var i = 0; i < corms.length; i++) { var distance = Math.sqrt(Math.pow(corms[i].x - self.x, 2) + Math.pow(corms[i].y - self.y, 2)) / 5; if (distance < minDistance) { minDistance = distance; nearestCorm = corms[i]; } } // Move towards the nearest corm if (nearestCorm) { var angle = Math.atan2(nearestCorm.y - self.y, nearestCorm.x - self.x); self.x += Math.cos(angle) * self.speed * 3; self.y += Math.sin(angle) * self.speed * 3; fishGraphics.scaleX = self.x < nearestCorm.x ? 1 : -1; // Flip the fish based on direction // Check for intersection with corm if (Math.abs(self.x - nearestCorm.x) < 1 && Math.abs(self.y - nearestCorm.y) < 1) { self.satiety = 60; // Reset satiety to 60 self.updateSatietyDisplay(); nearestCorm.destroy(); // Remove the corm corms.splice(corms.indexOf(nearestCorm), 1); } } } } // Add vertical movement if (!self.tweening) { self.tweening = true; var newY = Math.random() * (aquarium.y + 700 - 200) + aquarium.y - 700 + 200; if (newY < aquarium.y - 900) { newY = aquarium.y - 900; } if (newY > aquarium.y + 900) { newY = aquarium.y + 900; } var duration = Math.abs(newY - self.y) * 10; // If horizontal movement is paused, reduce vertical speed by three times if (self.horizontalPaused) { duration *= 3; } tween(self, { y: newY }, { duration: duration, onFinish: function onFinish() { self.tweening = false; } }); } // Handle horizontal pause, resume and direction change if (!self.horizontalPauseTimer) { self.horizontalPauseTimer = LK.setTimeout(function () { self.horizontalPaused = true; LK.setTimeout(function () { self.horizontalPaused = false; self.direction *= -1; // Change direction when resuming if (self.direction < 0) { fishGraphics.scaleX = -1; // Flip the fish to the left } else { fishGraphics.scaleX = 1; // Flip the fish to the right } self.horizontalPauseTimer = null; }, Math.random() * 2000 + 2000); // Resume and change direction after 2-4 seconds }, Math.random() * 7000 + 3000); // Pause every 3-10 seconds } // Update satiety display self.updateSatietyDisplay(); }; // Function to grow the fish self.grow = function () { // fishGraphics.scaleX += 0.1; // fishGraphics.scaleY += 0.1; }; // Function to drop a coin self.dropCoin = function () { var coin = new Coin(); coin.x = self.x; coin.y = self.y; game.addChild(coin); coins.push(coin); }; }); // InterfacePanel class representing the interface panel var InterfacePanel = Container.expand(function () { var self = Container.call(this); self.width = 2048; self.height = 200; self.y = 0; self.x = 0; self.color = 0x000000; self.alpha = 0.5; // Function to add a fish to the aquarium self.addFish = function () { var fish = new Fish(); var angle = Math.random() * Math.PI * 2; var radius = Math.random() * 600; fish.x = aquarium.x + radius * Math.cos(angle); fish.y = aquarium.y + radius * Math.sin(angle); fishes.push(fish); game.addChild(fish); }; // Event listener for adding fish // Create a fish icon var fishIcon = self.attachAsset('iconFish', { anchorX: 0.5, anchorY: 0.5, x: 200, y: 500, alpha: 2 }); // Create a corm icon var cormIcon = self.attachAsset('iconcorm', { anchorX: 0.5, anchorY: 0.5, x: 450, y: 500, alpha: 2 }); // Event listener for corm icon cormIcon.down = function (x, y, obj) { LK.getSound('clickkorm').play(); tween(cormIcon, { scaleX: 0.8, scaleY: 0.8 }, { duration: 100, onFinish: function onFinish() { tween(cormIcon, { scaleX: 1, scaleY: 1 }, { duration: 100 }); } }); // Create and drop a new corm from the top var corm = new Corm(); corm.x = Math.random() * (2048 - 500) + 200; // Random x position within 200 units from both edges corm.y = 550; // Start from a slightly higher position game.addChild(corm); corms.push(corm); }; // Event listener for adding fish fishIcon.down = function (x, y, obj) { self.addFish(); LK.getSound('click').play(); tween(fishIcon, { scaleX: 0.8, scaleY: 0.8 }, { duration: 100, onFinish: function onFinish() { tween(fishIcon, { scaleX: 1, scaleY: 1 }, { duration: 100 }); } }); }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 //Init game with black background }); /**** * Game Code ****/ //<Assets used in the game will automatically appear here> // Initialize arrays and variables var fishes = []; var coins = []; var corms = []; var bubbles = []; var lastFeedTime = 0; // Decrease satiety of each fish every second LK.setInterval(function () { for (var i = 0; i < fishes.length; i++) { fishes[i].satiety = Math.max(0, fishes[i].satiety - 2); // Ensure satiety doesn't go below 0 fishes[i].updateSatietyDisplay(); } }, 1000); // Create the aquarium var aquarium = new Aquarium(); game.addChild(aquarium); // Function to create bubbles function createBubbles() { if (bubbles.length < 6) { var bubbleCount = Math.random() < 0.5 ? 1 : 3; // Randomly decide to create 1 or 3 bubbles if (bubbleCount === 1) { var bubble = new Bubble(); bubble.x = Math.random() * (aquarium.width - 50) + aquarium.x - aquarium.width / 2 + 25; // Random x position within the aquarium bubble.y = aquarium.y + aquarium.height / 2 - 50; // Start from the bottom of the aquarium game.addChild(bubble); bubbles.push(bubble); LK.getSound('spawnpuzir').play(); // Play sound when a bubble is created } else { var baseX = Math.random() * (aquarium.width - 50) + aquarium.x - aquarium.width / 2 + 25; // Random x position within the aquarium var baseY = aquarium.y + aquarium.height / 2 - 50; // Start from the bottom of the aquarium for (var i = 0; i < bubbleCount; i++) { LK.setTimeout(function () { var bubble = new Bubble(); bubble.x = baseX; bubble.y = baseY; game.addChild(bubble); bubbles.push(bubble); LK.getSound('spawnpuzir').play(); // Play sound when a bubble is created }, i * 500); // Cascade with 0.5 second interval } } } // Set a new random interval between 10 to 20 seconds LK.setTimeout(createBubbles, Math.random() * 10000 + 10000); } // Start the first bubble creation createBubbles(); // Create the interface panel var interfacePanel = new InterfacePanel(); game.addChild(interfacePanel); // Game update function game.update = function () { // Update all coins for (var j = 0; j < coins.length; j++) { coins[j].update(); // Update all bubbles for (var l = 0; l < bubbles.length; l++) { bubbles[l].update(); } } ; // Update all corms for (var k = 0; k < corms.length; k++) { if (typeof corms[k].update === 'function') { corms[k].update(); } } };
===================================================================
--- original.js
+++ change.js
@@ -164,9 +164,9 @@
self.x += Math.cos(angle) * self.speed * 3;
self.y += Math.sin(angle) * self.speed * 3;
fishGraphics.scaleX = self.x < nearestCorm.x ? 1 : -1; // Flip the fish based on direction
// Check for intersection with corm
- if (Math.abs(self.x - nearestCorm.x) < 5 && Math.abs(self.y - nearestCorm.y) < 5) {
+ if (Math.abs(self.x - nearestCorm.x) < 1 && Math.abs(self.y - nearestCorm.y) < 1) {
self.satiety = 60; // Reset satiety to 60
self.updateSatietyDisplay();
nearestCorm.destroy(); // Remove the corm
corms.splice(corms.indexOf(nearestCorm), 1);
прозрачный пузырь воздуха. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Потрепаная рыбе
древняя Монетка, постэльные цвета. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Потрепаная рыба
сундук с сокровищами с видом спереди, постэльные цвета. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
предупреждение о нападении акул без надписей, постэльные цвета.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Морской Монстр, вид с боку, накаченные мышцы, постэльные цвета.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Большой прозрачный радужный пузырь. пастельные цвета Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
осьминог повар, минимализм, пастельные цвета \. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
spawnpuzir
Sound effect
Lop
Sound effect
click
Sound effect
clickkorm
Sound effect
Emy
Sound effect
MonetaSpawn
Sound effect
MonetaUp
Sound effect
Deadfish
Sound effect
rost
Sound effect
akulaspawn
Sound effect
ataka
Sound effect
emyakula
Sound effect
sundukup
Sound effect
Music
Music
music2
Music
udarbonus
Sound effect
udarbonus2
Sound effect
udarbonus3
Sound effect
startbonus
Sound effect
osmincorm
Sound effect