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;
}
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
// 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
****/
// 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'];
// Create initial fish (reduced from 25 to 20 for 20% less spawning)
for (var i = 0; i < 20; i++) {
var currentWidth = oceanWidth;
var currentHeight = oceanHeight;
// Weighted spawning - smaller fish spawn more frequently
var rand = Math.random();
var fishType;
if (rand < 0.55) {
fishType = 'smallFish'; // 55% chance (increased from 32%)
} else if (rand < 0.80) {
fishType = 'mediumFish'; // 25% chance
} else if (rand < 0.90) {
fishType = 'largeFish'; // 10% chance (reduced by 50% from 20%)
} else {
fishType = 'hugeFish'; // 10% chance (reduced by 57% from 23%)
}
var newFish = new Fish(fishType);
// Spawn fish outside screen bounds
var side = Math.floor(Math.random() * 4); // 0=top, 1=right, 2=bottom, 3=left
var startX, startY, targetX, targetY;
if (side === 0) {
// Top
startX = Math.random() * currentWidth;
startY = -100;
} else if (side === 1) {
// Right
startX = currentWidth + 100;
startY = Math.random() * currentHeight;
} else if (side === 2) {
// Bottom
startX = Math.random() * currentWidth;
startY = currentHeight + 100;
} else {
// Left
startX = -100;
startY = Math.random() * currentHeight;
}
// Set target position towards center
targetX = Math.random() * currentWidth;
targetY = Math.random() * currentHeight;
newFish.x = startX;
newFish.y = startY;
fish.push(newFish);
game.addChild(newFish);
// Animate fish to target position
tween(newFish, {
x: targetX,
y: targetY
}, {
duration: 1000 + Math.random() * 2000,
easing: tween.easeOut
});
}
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 dragNode = null;
function handleMove(x, y, obj) {
if (dragNode) {
dragNode.x = x;
dragNode.y = y;
// Calculate current ocean bounds based on game scale
var currentWidth = 2048 * (game.scaleX || 1);
var currentHeight = 2732 * (game.scaleY || 1);
// Keep octopus within expanding ocean bounds
dragNode.x = Math.max(40, Math.min(oceanWidth - 40, dragNode.x));
dragNode.y = Math.max(40, Math.min(oceanHeight - 40, dragNode.y));
}
}
game.move = handleMove;
game.down = function (x, y, obj) {
dragNode = octopus;
handleMove(x, y, obj);
};
game.up = function (x, y, obj) {
dragNode = null;
};
game.update = function () {
// Check collisions between octopus and fish
for (var i = fish.length - 1; i >= 0; i--) {
var currentFish = fish[i];
if (octopus.intersects(currentFish)) {
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 (reduced from 2 for 20% less spawning)
for (var j = 0; j < 1; j++) {
var currentWidth = oceanWidth;
var currentHeight = oceanHeight;
// Weighted spawning - smaller fish spawn more frequently
var rand = Math.random();
var fishType;
if (rand < 0.55) {
fishType = 'smallFish'; // 55% chance (increased from 32%)
} else if (rand < 0.80) {
fishType = 'mediumFish'; // 25% chance
} else if (rand < 0.90) {
fishType = 'largeFish'; // 10% chance (reduced by 50% from 20%)
} else {
fishType = 'hugeFish'; // 10% chance (reduced by 57% from 23%)
}
var newFish = new Fish(fishType);
// Spawn fish outside screen bounds
var side = Math.floor(Math.random() * 4); // 0=top, 1=right, 2=bottom, 3=left
var startX, startY, targetX, targetY;
if (side === 0) {
// Top
startX = Math.random() * currentWidth;
startY = -100;
} else if (side === 1) {
// Right
startX = currentWidth + 100;
startY = Math.random() * currentHeight;
} else if (side === 2) {
// Bottom
startX = Math.random() * currentWidth;
startY = currentHeight + 100;
} else {
// Left
startX = -100;
startY = Math.random() * currentHeight;
}
// Set target position towards center
targetX = Math.random() * currentWidth;
targetY = Math.random() * currentHeight;
newFish.x = startX;
newFish.y = startY;
fish.push(newFish);
game.addChild(newFish);
// Animate fish to target position
tween(newFish, {
x: targetX,
y: targetY
}, {
duration: 1000 + Math.random() * 2000,
easing: tween.easeOut
});
}
} 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();
}
}; /****
* 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;
}
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
// 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
****/
// 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'];
// Create initial fish (reduced from 25 to 20 for 20% less spawning)
for (var i = 0; i < 20; i++) {
var currentWidth = oceanWidth;
var currentHeight = oceanHeight;
// Weighted spawning - smaller fish spawn more frequently
var rand = Math.random();
var fishType;
if (rand < 0.55) {
fishType = 'smallFish'; // 55% chance (increased from 32%)
} else if (rand < 0.80) {
fishType = 'mediumFish'; // 25% chance
} else if (rand < 0.90) {
fishType = 'largeFish'; // 10% chance (reduced by 50% from 20%)
} else {
fishType = 'hugeFish'; // 10% chance (reduced by 57% from 23%)
}
var newFish = new Fish(fishType);
// Spawn fish outside screen bounds
var side = Math.floor(Math.random() * 4); // 0=top, 1=right, 2=bottom, 3=left
var startX, startY, targetX, targetY;
if (side === 0) {
// Top
startX = Math.random() * currentWidth;
startY = -100;
} else if (side === 1) {
// Right
startX = currentWidth + 100;
startY = Math.random() * currentHeight;
} else if (side === 2) {
// Bottom
startX = Math.random() * currentWidth;
startY = currentHeight + 100;
} else {
// Left
startX = -100;
startY = Math.random() * currentHeight;
}
// Set target position towards center
targetX = Math.random() * currentWidth;
targetY = Math.random() * currentHeight;
newFish.x = startX;
newFish.y = startY;
fish.push(newFish);
game.addChild(newFish);
// Animate fish to target position
tween(newFish, {
x: targetX,
y: targetY
}, {
duration: 1000 + Math.random() * 2000,
easing: tween.easeOut
});
}
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 dragNode = null;
function handleMove(x, y, obj) {
if (dragNode) {
dragNode.x = x;
dragNode.y = y;
// Calculate current ocean bounds based on game scale
var currentWidth = 2048 * (game.scaleX || 1);
var currentHeight = 2732 * (game.scaleY || 1);
// Keep octopus within expanding ocean bounds
dragNode.x = Math.max(40, Math.min(oceanWidth - 40, dragNode.x));
dragNode.y = Math.max(40, Math.min(oceanHeight - 40, dragNode.y));
}
}
game.move = handleMove;
game.down = function (x, y, obj) {
dragNode = octopus;
handleMove(x, y, obj);
};
game.up = function (x, y, obj) {
dragNode = null;
};
game.update = function () {
// Check collisions between octopus and fish
for (var i = fish.length - 1; i >= 0; i--) {
var currentFish = fish[i];
if (octopus.intersects(currentFish)) {
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 (reduced from 2 for 20% less spawning)
for (var j = 0; j < 1; j++) {
var currentWidth = oceanWidth;
var currentHeight = oceanHeight;
// Weighted spawning - smaller fish spawn more frequently
var rand = Math.random();
var fishType;
if (rand < 0.55) {
fishType = 'smallFish'; // 55% chance (increased from 32%)
} else if (rand < 0.80) {
fishType = 'mediumFish'; // 25% chance
} else if (rand < 0.90) {
fishType = 'largeFish'; // 10% chance (reduced by 50% from 20%)
} else {
fishType = 'hugeFish'; // 10% chance (reduced by 57% from 23%)
}
var newFish = new Fish(fishType);
// Spawn fish outside screen bounds
var side = Math.floor(Math.random() * 4); // 0=top, 1=right, 2=bottom, 3=left
var startX, startY, targetX, targetY;
if (side === 0) {
// Top
startX = Math.random() * currentWidth;
startY = -100;
} else if (side === 1) {
// Right
startX = currentWidth + 100;
startY = Math.random() * currentHeight;
} else if (side === 2) {
// Bottom
startX = Math.random() * currentWidth;
startY = currentHeight + 100;
} else {
// Left
startX = -100;
startY = Math.random() * currentHeight;
}
// Set target position towards center
targetX = Math.random() * currentWidth;
targetY = Math.random() * currentHeight;
newFish.x = startX;
newFish.y = startY;
fish.push(newFish);
game.addChild(newFish);
// Animate fish to target position
tween(newFish, {
x: targetX,
y: targetY
}, {
duration: 1000 + Math.random() * 2000,
easing: tween.easeOut
});
}
} 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();
}
};
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