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 () {
self.x += self.speedX;
self.y += self.speedY;
// Use expanding ocean bounds for feeding game
var currentWidth = oceanWidth;
var currentHeight = oceanHeight;
// Bounce off edges
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;
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 = currentFish.fishSize * 10;
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());
// Win condition - reach score 3000
if (LK.getScore() >= 3000) {
LK.showYouWin();
}
}; ===================================================================
--- original.js
+++ change.js
@@ -255,9 +255,17 @@
}
// Check collisions between octopus and fish
for (var i = fish.length - 1; i >= 0; i--) {
var currentFish = fish[i];
- if (octopus.intersects(currentFish)) {
+ // 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 = currentFish.fishSize * 10;
var oldScore = LK.getScore();
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