User prompt
asset olarak coin ekle bu coinler oyun parası sahne üzerinde rastgele spawn olsun ve sağ köşede ne kadar biriktiği gözüksün çift tıplayıp hız artırma özelliğini kullandığımızda coinimiz 5 eksilsin yeterli coin yoksa bu özellik kullanılamaz ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
daha önce söyledğim attack yazısın kalın fontlu yanında 3 tane ünlem işareti olsun
User prompt
score 10000 olunca oyunu kazanabilelim
User prompt
skor 3000 i geçtikten sonra oyuncuya attack yazlı bir metin gelsin ve balıklar hızı değişmeyecek şekilde ahtapotun üstüne gelmeye başlasın
User prompt
bossfih yedğimizde puanımız 500 artsın, hugefisf: 200, largefish: 100, mediumfish:50
User prompt
mouse ile çift tıkladığımızda ahtapot hızı 3 saniyeliğine %100 artsın ve sonra tekrar eshi hızına dönsün ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
belıklara tam temas etmeden kaybediyoruz balıkşarın bir tık daha içine girmesşne izin ver
User prompt
mouse a basınca değil mouse nerdeyse onu takip ederek ilerlesin
User prompt
ahtapatumuzu tutup hareket ettirmek yeine mousa bastığımız yönde belirli bir hareket etsin
User prompt
diğer balıklar her zaman gelebilr sadece yeni byuta geçince değil ama olasılıkları yeni boyuta geçince artsın
User prompt
bossfish puanı 500 olsun mediumfish spawn olasılığı %20 daha arttır
User prompt
smallfish spawn olasılığı %50 arttır mediumfish ve largefish spawn olasılığı %10 daha arttır
User prompt
mediumfisf orta dada spawn olabilir
User prompt
balıkların hızını %20 arrtır
User prompt
largefish ve medium fish spawn olasılığı %20 arttır bossfish spawn olasılı %20 azalt
User prompt
smallfish orta da spawn olabilir
User prompt
sadece smallfish ortada spawn olabilir
User prompt
hangi boyuttaysak o boyutta yiyebileceğimiz balıkşarın spawn yüzdesi artsın
User prompt
balıkların spawn yüzdesini %50 azallt
User prompt
bossfish adında birtane daha en büyük balık asseti ekle
User prompt
arkaplan asseti arkaplan boyut değiştirdikçe ona uygun şekilde değiştir
User prompt
assetlerden değiştirmek isyiyorum arka planı
User prompt
balıklar sahnenin kenarında bir noktadan spawn olmalı
User prompt
sahnenin dışında spawn olduktan sonra yavaş bir şekilde içeri doğru rastgele yüzsünler ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
balıklar sahnenin dışında spawn olup ortaya doğru gelsinler şuan birden ortada beliriyolar bunu değiştir ↪💡 Consider importing and using the following plugins: @upit/tween.v1
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Fish = Container.expand(function (fishType) {
var self = Container.call(this);
self.fishType = fishType || 'smallFish';
self.fishSize = 1;
if (self.fishType === 'smallFish') {
self.fishSize = 1;
} else if (self.fishType === 'mediumFish') {
self.fishSize = 2;
} else if (self.fishType === 'largeFish') {
self.fishSize = 3;
} else if (self.fishType === 'hugeFish') {
self.fishSize = 4;
} else if (self.fishType === 'bossfish') {
self.fishSize = 5;
}
var fishGraphics = self.attachAsset(self.fishType, {
anchorX: 0.5,
anchorY: 0.5
});
self.speedX = (Math.random() - 0.5) * 3;
self.speedY = (Math.random() - 0.5) * 3;
self.update = function () {
if (attackMode) {
// In attack mode, move towards octopus
var dx = octopus.x - self.x;
var dy = octopus.y - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > 0) {
var dirX = dx / distance;
var dirY = dy / distance;
var attackSpeed = 2; // Speed when moving towards octopus
self.x += dirX * attackSpeed;
self.y += dirY * attackSpeed;
}
} else {
// Normal movement
self.x += self.speedX;
self.y += self.speedY;
}
// Use expanding ocean bounds for feeding game
var currentWidth = oceanWidth;
var currentHeight = oceanHeight;
if (!attackMode) {
// Only bounce off edges when not in attack mode
if (self.x < 0 || self.x > currentWidth) {
self.speedX *= -1;
}
if (self.y < 0 || self.y > currentHeight) {
self.speedY *= -1;
}
// Keep within bounds
self.x = Math.max(0, Math.min(currentWidth, self.x));
self.y = Math.max(0, Math.min(currentHeight, self.y));
}
};
return self;
});
var Octopus = Container.expand(function () {
var self = Container.call(this);
self.octopusSize = 1;
var octopusGraphics = self.attachAsset('octopus', {
anchorX: 0.5,
anchorY: 0.5
});
self.grow = function () {
self.octopusSize++;
// Scale up the octopus
var newScale = 1 + (self.octopusSize - 1) * 0.3;
tween(octopusGraphics, {
scaleX: newScale,
scaleY: newScale
}, {
duration: 500
});
// Expand the ocean bounds like in feeding games
oceanWidth += 400; // Increase ocean width by 400 pixels
oceanHeight += 400; // Increase ocean height by 400 pixels
// Scale background to match expanding ocean bounds
var bgScaleX = oceanWidth / 2048;
var bgScaleY = oceanHeight / 2732;
tween(oceanBg, {
scaleX: bgScaleX,
scaleY: bgScaleY
}, {
duration: 1000
});
// Use tween to smoothly expand the camera view
tween(game, {
scaleX: game.scaleX * 0.9,
scaleY: game.scaleY * 0.9
}, {
duration: 1000
});
LK.getSound('grow').play();
};
self.canEat = function (fish) {
return self.octopusSize >= fish.fishSize;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x006994
});
/****
* Game Code
****/
// Add ocean background
var oceanBg = game.addChild(LK.getAsset('oceanBackground', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 0
}));
// Initialize game scale for ocean expansion
game.scaleX = 1;
game.scaleY = 1;
// Track ocean bounds for feeding game expansion
var oceanWidth = 2048;
var oceanHeight = 2732;
var octopus = game.addChild(new Octopus());
octopus.x = 1024;
octopus.y = 1366;
var fish = [];
var fishTypes = ['smallFish', 'mediumFish', 'largeFish', 'hugeFish', 'bossfish'];
// Create initial fish (reduced from 20 to 10 for 50% less spawning)
for (var i = 0; i < 10; i++) {
var currentWidth = oceanWidth;
var currentHeight = oceanHeight;
// Weighted spawning - increase spawn rate for fish matching octopus size
var rand = Math.random();
var fishType;
// Adjust spawn rates based on octopus size
var sizeBonus = 0.3; // 30% bonus for matching size
if (octopus.octopusSize === 1) {
// Size 1: boost smallFish spawn rate
if (rand < 0.55 + sizeBonus) {
fishType = 'smallFish'; // 85% chance when octopus is size 1
} else if (rand < 0.80 + sizeBonus) {
fishType = 'mediumFish'; // reduced chance
} else if (rand < 0.90 + sizeBonus) {
fishType = 'largeFish'; // reduced chance
} else if (rand < 0.95 + sizeBonus) {
fishType = 'hugeFish'; // reduced chance
} else {
fishType = 'bossfish'; // reduced chance
}
} else if (octopus.octopusSize === 2) {
// Size 2: boost mediumFish spawn rate
if (rand < 0.25) {
fishType = 'smallFish'; // reduced chance
} else if (rand < 0.25 + 0.25 + sizeBonus) {
fishType = 'mediumFish'; // 55% chance when octopus is size 2
} else if (rand < 0.80) {
fishType = 'largeFish'; // reduced chance
} else if (rand < 0.90) {
fishType = 'hugeFish'; // reduced chance
} else {
fishType = 'bossfish'; // reduced chance
}
} else if (octopus.octopusSize === 3) {
// Size 3: boost largeFish spawn rate
if (rand < 0.25) {
fishType = 'smallFish'; // reduced chance
} else if (rand < 0.45) {
fishType = 'mediumFish'; // reduced chance
} else if (rand < 0.45 + 0.10 + sizeBonus) {
fishType = 'largeFish'; // 40% chance when octopus is size 3
} else if (rand < 0.90) {
fishType = 'hugeFish'; // reduced chance
} else {
fishType = 'bossfish'; // reduced chance
}
} else if (octopus.octopusSize === 4) {
// Size 4: boost hugeFish spawn rate
if (rand < 0.25) {
fishType = 'smallFish'; // reduced chance
} else if (rand < 0.45) {
fishType = 'mediumFish'; // reduced chance
} else if (rand < 0.60) {
fishType = 'largeFish'; // reduced chance
} else if (rand < 0.60 + 0.05 + sizeBonus) {
fishType = 'hugeFish'; // 35% chance when octopus is size 4
} else {
fishType = 'bossfish'; // reduced chance
}
} else {
// Size 5+: boost bossfish spawn rate
if (rand < 0.25) {
fishType = 'smallFish'; // reduced chance
} else if (rand < 0.45) {
fishType = 'mediumFish'; // reduced chance
} else if (rand < 0.60) {
fishType = 'largeFish'; // reduced chance
} else if (rand < 0.75) {
fishType = 'hugeFish'; // reduced chance
} else {
fishType = 'bossfish'; // 25% chance when octopus is size 5+
}
}
var newFish = new Fish(fishType);
// Spawn fish from ocean edges
var edge = Math.floor(Math.random() * 4); // 0=top, 1=right, 2=bottom, 3=left
if (edge === 0) {
// Top edge
newFish.x = Math.random() * currentWidth;
newFish.y = 0;
} else if (edge === 1) {
// Right edge
newFish.x = currentWidth;
newFish.y = Math.random() * currentHeight;
} else if (edge === 2) {
// Bottom edge
newFish.x = Math.random() * currentWidth;
newFish.y = currentHeight;
} else {
// Left edge
newFish.x = 0;
newFish.y = Math.random() * currentHeight;
}
fish.push(newFish);
game.addChild(newFish);
}
var scoreTxt = new Text2('Score: 0', {
size: 80,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
var sizeTxt = new Text2('Size: 1', {
size: 60,
fill: 0xFFFFFF
});
sizeTxt.anchor.set(0, 0);
sizeTxt.x = 150;
sizeTxt.y = 100;
LK.gui.topLeft.addChild(sizeTxt);
var mouseX = octopus.x;
var mouseY = octopus.y;
var moveSpeed = 8;
var baseSpeed = 8;
var lastClickTime = 0;
var doubleClickThreshold = 300; // 300ms between clicks for double-click
var speedBoostActive = false;
var speedBoostTimer = null;
var attackMode = false;
var attackTxt = null;
game.down = function (x, y, obj) {
var currentTime = Date.now();
if (currentTime - lastClickTime < doubleClickThreshold) {
// Double-click detected - activate speed boost
if (!speedBoostActive) {
speedBoostActive = true;
moveSpeed = baseSpeed * 2; // 100% speed increase
// Clear any existing timer
if (speedBoostTimer) {
LK.clearTimeout(speedBoostTimer);
}
// Set timer to reset speed after 3 seconds
speedBoostTimer = LK.setTimeout(function () {
speedBoostActive = false;
moveSpeed = baseSpeed;
speedBoostTimer = null;
}, 3000);
}
}
lastClickTime = currentTime;
};
game.move = function (x, y, obj) {
// Update mouse position for octopus to follow
mouseX = x;
mouseY = y;
};
game.update = function () {
// Move octopus towards mouse position
var dx = mouseX - octopus.x;
var dy = mouseY - octopus.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > 5) {
// Normalize direction and apply speed
var dirX = dx / distance;
var dirY = dy / distance;
octopus.x += dirX * moveSpeed;
octopus.y += dirY * moveSpeed;
// Keep octopus within expanding ocean bounds
octopus.x = Math.max(40, Math.min(oceanWidth - 40, octopus.x));
octopus.y = Math.max(40, Math.min(oceanHeight - 40, octopus.y));
}
// Check collisions between octopus and fish
for (var i = fish.length - 1; i >= 0; i--) {
var currentFish = fish[i];
// Calculate distance between octopus and fish centers
var dx = octopus.x - currentFish.x;
var dy = octopus.y - currentFish.y;
var distance = Math.sqrt(dx * dx + dy * dy);
// Get approximate radii (half of width/height)
var octopusRadius = octopus.width / 2 * 0.8; // 80% of actual size for more forgiving collision
var fishRadius = currentFish.width / 2 * 0.8; // 80% of actual size for more forgiving collision
// Check if distance is less than combined radii (allowing more penetration)
if (distance < octopusRadius + fishRadius) {
if (octopus.canEat(currentFish)) {
// Eat the fish
var points;
if (currentFish.fishType === 'bossfish') {
points = 500;
} else if (currentFish.fishType === 'hugeFish') {
points = 200;
} else if (currentFish.fishType === 'largeFish') {
points = 100;
} else if (currentFish.fishType === 'mediumFish') {
points = 50;
} else {
points = 10; // smallFish
}
var oldScore = LK.getScore();
LK.setScore(oldScore + points);
LK.getSound('eat').play();
// Remove fish
currentFish.destroy();
fish.splice(i, 1);
// Check if octopus should grow with exponential point requirements
var newScore = LK.getScore();
var requiredPoints = [0, 100, 300, 700, 1500]; // Cumulative points needed for each size
// Check if we can grow to next size
if (octopus.octopusSize < requiredPoints.length && newScore >= requiredPoints[octopus.octopusSize]) {
octopus.grow();
sizeTxt.setText('Size: ' + octopus.octopusSize);
}
// Spawn 1 new fish within expanding ocean bounds (increase from 0 to restore spawning)
for (var j = 0; j < 1; j++) {
var currentWidth = oceanWidth;
var currentHeight = oceanHeight;
// Weighted spawning - increase spawn rate for fish matching octopus size
var rand = Math.random();
var fishType;
// Adjust spawn rates based on octopus size
var sizeBonus = 0.3; // 30% bonus for matching size
if (octopus.octopusSize === 1) {
// Size 1: boost smallFish spawn rate
if (rand < 0.55 + sizeBonus) {
fishType = 'smallFish'; // 85% chance when octopus is size 1
} else if (rand < 0.80 + sizeBonus) {
fishType = 'mediumFish'; // reduced chance
} else if (rand < 0.90 + sizeBonus) {
fishType = 'largeFish'; // reduced chance
} else if (rand < 0.95 + sizeBonus) {
fishType = 'hugeFish'; // reduced chance
} else {
fishType = 'bossfish'; // reduced chance
}
} else if (octopus.octopusSize === 2) {
// Size 2: boost mediumFish spawn rate
if (rand < 0.25) {
fishType = 'smallFish'; // reduced chance
} else if (rand < 0.25 + 0.25 + sizeBonus) {
fishType = 'mediumFish'; // 55% chance when octopus is size 2
} else if (rand < 0.80) {
fishType = 'largeFish'; // reduced chance
} else if (rand < 0.90) {
fishType = 'hugeFish'; // reduced chance
} else {
fishType = 'bossfish'; // reduced chance
}
} else if (octopus.octopusSize === 3) {
// Size 3: boost largeFish spawn rate
if (rand < 0.25) {
fishType = 'smallFish'; // reduced chance
} else if (rand < 0.45) {
fishType = 'mediumFish'; // reduced chance
} else if (rand < 0.45 + 0.10 + sizeBonus) {
fishType = 'largeFish'; // 40% chance when octopus is size 3
} else if (rand < 0.90) {
fishType = 'hugeFish'; // reduced chance
} else {
fishType = 'bossfish'; // reduced chance
}
} else if (octopus.octopusSize === 4) {
// Size 4: boost hugeFish spawn rate
if (rand < 0.25) {
fishType = 'smallFish'; // reduced chance
} else if (rand < 0.45) {
fishType = 'mediumFish'; // reduced chance
} else if (rand < 0.60) {
fishType = 'largeFish'; // reduced chance
} else if (rand < 0.60 + 0.05 + sizeBonus) {
fishType = 'hugeFish'; // 35% chance when octopus is size 4
} else {
fishType = 'bossfish'; // reduced chance
}
} else {
// Size 5+: boost bossfish spawn rate
if (rand < 0.25) {
fishType = 'smallFish'; // reduced chance
} else if (rand < 0.45) {
fishType = 'mediumFish'; // reduced chance
} else if (rand < 0.60) {
fishType = 'largeFish'; // reduced chance
} else if (rand < 0.75) {
fishType = 'hugeFish'; // reduced chance
} else {
fishType = 'bossfish'; // 25% chance when octopus is size 5+
}
}
var newFish = new Fish(fishType);
// Spawn fish from ocean edges
var edge = Math.floor(Math.random() * 4); // 0=top, 1=right, 2=bottom, 3=left
if (edge === 0) {
// Top edge
newFish.x = Math.random() * currentWidth;
newFish.y = 0;
} else if (edge === 1) {
// Right edge
newFish.x = currentWidth;
newFish.y = Math.random() * currentHeight;
} else if (edge === 2) {
// Bottom edge
newFish.x = Math.random() * currentWidth;
newFish.y = currentHeight;
} else {
// Left edge
newFish.x = 0;
newFish.y = Math.random() * currentHeight;
}
fish.push(newFish);
game.addChild(newFish);
}
} else {
// Game over - touched larger fish
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
return;
}
}
}
// Update score display
scoreTxt.setText('Score: ' + LK.getScore());
// Check if attack mode should be activated
if (LK.getScore() >= 3000 && !attackMode) {
attackMode = true;
// Create and display attack text
attackTxt = new Text2('ATTACK', {
size: 120,
fill: 0xFF0000
});
attackTxt.anchor.set(0.5, 0.5);
attackTxt.x = 1024; // Center horizontally
attackTxt.y = 400; // Position near top
game.addChild(attackTxt);
// Flash the attack text red
LK.effects.flashObject(attackTxt, 0xff0000, 2000);
// Remove attack text after 3 seconds
LK.setTimeout(function () {
if (attackTxt) {
attackTxt.destroy();
attackTxt = null;
}
}, 3000);
}
// Win condition - reach score 10000
if (LK.getScore() >= 10000) {
LK.showYouWin();
}
}; ===================================================================
--- original.js
+++ change.js
@@ -467,9 +467,9 @@
attackTxt = null;
}
}, 3000);
}
- // Win condition - reach score 3000
- if (LK.getScore() >= 3000) {
+ // Win condition - reach score 10000
+ if (LK.getScore() >= 10000) {
LK.showYouWin();
}
};
\ No newline at end of file
tatlı balık görseli. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
kırmızı renk tatlı balık görseli. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
yeşil renk tatlı balık görseli. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
kalamar görseli. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
okyanusun derinlikleri okyanusun üstü görünmesin renk geçişleri olabilir. 2d oyun içi asset balık olmasın
mürekkep balığı. In-Game asset. 2d. High contrast. No shadows
coin image üzerinde balık işareti olan bir madeni para altın renkte. In-Game asset. 2d. High contrast. No shadows
korkunç bir deniz canavarı. In-Game asset. 2d. High contrast. No shadows
tatlı ahtapot mor