User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'var body = self.attachAsset('largeFish', {' Line Number: 803
User prompt
large fish gerçekçi detayları ve ahtapot kollarını sil
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'var body = self.attachAsset('largeFish', {' Line Number: 803
User prompt
büyük balıkla alakalı herşeyi sil
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'var body = self.attachAsset('largeFish', {' Line Number: 804
User prompt
büyük balığı sil
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'var body = self.attachAsset('largeFish', {' Line Number: 804
User prompt
büyük balığı sil
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'var body = self.attachAsset('largeFish', {' Line Number: 804
User prompt
büyük balığı sil
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'var body = self.attachAsset('largeFish', {' Line Number: 895
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'var body = self.attachAsset('largeFish', {' Line Number: 894
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'var body = self.attachAsset('largeFish', {' Line Number: 895
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'var body = self.attachAsset('largeFish', {' Line Number: 896
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'var body = self.attachAsset('largeFish', {' Line Number: 895
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'var body = self.attachAsset('largeFish', {' Line Number: 894
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'var body = self.attachAsset('largeFish', {' Line Number: 897
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'var body = self.attachAsset('largeFish', {' Line Number: 896
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'var body = self.attachAsset('largeFish', {' Line Number: 895
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'var body = self.attachAsset('largeFish', {' Line Number: 894
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'var body = self.attachAsset('largeFish', {' Line Number: 896
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'var body = self.attachAsset('largeFish', {' Line Number: 894
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'var body = self.attachAsset('largeFish', {' Line Number: 896
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'var body = self.attachAsset('largeFish', {' Line Number: 894
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'var body = self.attachAsset('largeFish', {' Line Number: 893
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1", {
highScore: 0
});
/****
* Classes
****/
var BigFish = Container.expand(function () {
var self = Container.call(this);
// BigFish body
var body = self.attachAsset('largeFish', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2.5,
scaleY: 2.5,
tint: 0x20375b // Dark blue color
});
return self;
});
var Clam = Container.expand(function () {
var self = Container.call(this);
// Clam body
var body = self.attachAsset('mine', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 5.0,
// Increase scale to make it even more massive
scaleY: 5.0,
// Increase scale to make it even more massive
tint: 0x8B4513,
// Change color to brown
texture: 'clamTexture',
// Add texture for realism
shadow: {
color: 0x000000,
// Shadow color
blur: 10,
// Shadow blur radius
offsetX: 5,
// Horizontal shadow offset
offsetY: 5 // Vertical shadow offset
}
});
// Pearl
var pearl = LK.getAsset('eyeball', {
anchorX: 0.5,
anchorY: 0.5,
x: 0,
y: -body.height / 2 - 10,
scaleX: 2.0,
// Increase size of the pearl
scaleY: 2.0,
// Increase size of the pearl
visible: false
});
self.addChild(pearl);
// Open and release pearl every 10 seconds
var releasePearl = function releasePearl() {
// Open clam with animation
tween(body, {
scaleY: 6.0 // Open clam by increasing scale
}, {
duration: 1000,
// 1 second to open
easing: tween.easeInOut,
onFinish: function onFinish() {
pearl.visible = true; // Show pearl when clam is open
LK.setTimeout(function () {
// Close clam with animation
tween(body, {
scaleY: 5.0 // Close clam by returning to original scale
}, {
duration: 2000,
// 2 seconds to close
easing: tween.easeInOut,
onFinish: function onFinish() {
pearl.visible = false; // Hide pearl when clam is closed
}
});
}, 1000); // Pearl visible for 1 second
}
});
};
LK.setInterval(releasePearl, 10000);
self.pearl = pearl;
return self;
});
var Fish = Container.expand(function (type, level) {
var self = Container.call(this);
// Setup fish properties based on type
self.fishType = type || 'smallFish';
self.fishLevel = level || 1;
// Size multiplier based on level
var sizeMultiplier = 1;
if (self.fishLevel === 2) {
sizeMultiplier = 1.5;
}
if (self.fishLevel === 3) {
sizeMultiplier = 2;
}
// Fish body
var assetId = self.fishType;
var body = self.attachAsset(assetId, {
anchorX: 0.5,
anchorY: 0.5,
scaleX: sizeMultiplier * (Math.random() * 0.2 + 0.9),
// Vary size slightly for realism
scaleY: sizeMultiplier * (Math.random() * 0.2 + 0.9),
// Vary size slightly for realism
tint: 0x8A2BE2 // Add a more realistic purple tint
});
// Tail
var tailColor = self.fishType === 'smallFish' ? 0xffb967 : self.fishType === 'mediumFish' ? 0xff6c67 : 0xc267ff;
var tail = LK.getAsset('tail', {
anchorX: 1.0,
anchorY: 0.5,
x: -body.width / 2,
y: 0,
scaleX: sizeMultiplier * (Math.random() * 0.3 + 0.8),
// Vary size slightly for realism
scaleY: sizeMultiplier * (Math.random() * 0.3 + 0.8),
// Vary size slightly for realism
tint: 0x8A2BE2,
// Add a more realistic purple tint
texture: 'fishTailTexture' // Add texture for realism
});
tail.tint = tailColor;
self.addChild(tail);
// Mouth
var mouth = LK.getAsset('eyeball', {
anchorX: 0.5,
anchorY: 0.5,
x: body.width / 2,
y: body.height / 4,
scaleX: sizeMultiplier * 0.5,
scaleY: sizeMultiplier * 0.2,
tint: 0x000000
});
self.addChild(mouth);
// Eye
var eye = self.attachAsset('eyeball', {
anchorX: 0.5,
anchorY: 0.5,
x: body.width / 4,
y: -body.height / 4,
scaleX: sizeMultiplier,
scaleY: sizeMultiplier
});
// Pupil
var pupil = self.attachAsset('pupil', {
anchorX: 0.5,
anchorY: 0.5,
x: body.width / 4 + 2,
y: -body.height / 4,
scaleX: sizeMultiplier,
scaleY: sizeMultiplier
});
// Movement variables
self.speedX = (Math.random() * 2 + 1) * (Math.random() < 0.5 ? 1 : -1);
self.speedY = (Math.random() - 0.5) * 1.5;
// Animation
var _animateTail = function animateTail() {
tween(tail, {
scaleX: sizeMultiplier * 0.6
}, {
duration: 300,
easing: tween.easeInOut,
onFinish: function onFinish() {
tween(tail, {
scaleX: sizeMultiplier * 0.8
}, {
duration: 300,
easing: tween.easeInOut,
onFinish: _animateTail
});
}
});
};
_animateTail();
// Update method called automatically by LK engine
self.update = function () {
// Move fish
self.x += self.speedX;
self.y += self.speedY;
// Update rotation based on direction
if (self.speedX < 0) {
self.scale.x = -1;
} else {
self.scale.x = 1;
}
// Bounce off edges
if (self.x < 0) {
self.x = 0;
self.speedX *= -1;
} else if (self.x > 2048) {
self.x = 2048;
self.speedX *= -1;
}
// Limit vertical movement more subtly
if (self.y < 0) {
self.y = 0;
self.speedY *= -1;
} else if (self.y > 2732) {
self.y = 2732;
self.speedY *= -1;
}
// Ensure fish stay within bounds
self.x = Math.max(0, Math.min(self.x, 2048));
self.y = Math.max(0, Math.min(self.y, 2732));
// Occasionally change vertical direction
if (Math.random() < 0.01) {
self.speedY = (Math.random() - 0.5) * 1.5;
}
};
return self;
});
var GoldFish = Container.expand(function () {
var self = Container.call(this);
// GoldFish body
var body = self.attachAsset('smallFish', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.0,
scaleY: 1.0,
tint: 0xFFD700 // Gold color
});
// Movement variables
self.speedX = (Math.random() * 3 + 2) * (Math.random() < 0.5 ? 1 : -1);
self.speedY = (Math.random() - 0.5) * 2.0;
// Update method called automatically by LK engine
self.update = function () {
// Move goldfish
self.x += self.speedX;
self.y += self.speedY;
// Bounce off edges
if (self.x < 0 || self.x > 2048) {
self.speedX *= -1;
}
if (self.y < 0 || self.y > 2732) {
self.speedY *= -1;
}
};
return self;
});
var Mine = Container.expand(function () {
var self = Container.call(this);
// Mine body
var body = self.attachAsset('mine', {
anchorX: 0.5,
anchorY: 0.5
});
// Add spikes
for (var i = 0; i < 8; i++) {
var angle = i / 8 * Math.PI * 2;
var spike = LK.getAsset('mine', {
anchorX: 0.5,
anchorY: 0.5,
width: 15,
height: 3,
x: Math.cos(angle) * 25,
y: Math.sin(angle) * 25,
rotation: angle
});
self.addChild(spike);
}
// Small pulse animation
var _animatePulse = function animatePulse() {
tween(body, {
scaleX: 1.1,
scaleY: 1.1
}, {
duration: 800,
easing: tween.easeInOut,
onFinish: function onFinish() {
tween(body, {
scaleX: 1,
scaleY: 1
}, {
duration: 800,
easing: tween.easeInOut,
onFinish: _animatePulse
});
}
});
};
_animatePulse();
return self;
});
var PlayerFish = Container.expand(function () {
var self = Container.call(this);
// Fish body
var body = self.attachAsset('playerFish', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.2,
// Slightly larger for more detail
scaleY: 1.2,
// Slightly larger for more detail
tint: 0x7cd1ff,
// Base color
texture: 'detailedFishTexture',
// Add texture for realism
shadow: {
color: 0x000000,
// Shadow color
blur: 5,
// Shadow blur radius
offsetX: 3,
// Horizontal shadow offset
offsetY: 3 // Vertical shadow offset
}
});
// Tail
var tail = self.attachAsset('tail', {
anchorX: 1.0,
anchorY: 0.5,
x: -body.width / 2,
y: 0,
scaleX: 1.1,
// Slightly larger for more detail
scaleY: 1.1,
// Slightly larger for more detail
tint: 0x7cd1ff,
// Match body color
texture: 'detailedTailTexture',
// Add texture for realism
shadow: {
color: 0x000000,
// Shadow color
blur: 3,
// Shadow blur radius
offsetX: 2,
// Horizontal shadow offset
offsetY: 2 // Vertical shadow offset
}
});
// Eye
var eye = self.attachAsset('eyeball', {
anchorX: 0.5,
anchorY: 0.5,
x: body.width / 4,
y: -body.height / 4,
scaleX: 1.1,
// Slightly larger for more detail
scaleY: 1.1,
// Slightly larger for more detail
tint: 0xffffff,
// White color for eye
shadow: {
color: 0x000000,
// Shadow color
blur: 2,
// Shadow blur radius
offsetX: 1,
// Horizontal shadow offset
offsetY: 1 // Vertical shadow offset
}
});
// Pupil
var pupil = self.attachAsset('pupil', {
anchorX: 0.5,
anchorY: 0.5,
x: body.width / 4 + 2,
y: -body.height / 4,
scaleX: 1.1,
// Slightly larger for more detail
scaleY: 1.1,
// Slightly larger for more detail
tint: 0x000000,
// Black color for pupil
shadow: {
color: 0x000000,
// Shadow color
blur: 1,
// Shadow blur radius
offsetX: 0.5,
// Horizontal shadow offset
offsetY: 0.5 // Vertical shadow offset
}
});
// Size/Level properties
self.level = 1;
self.initialWidth = body.width;
self.initialHeight = body.height;
// Movement target
self.targetX = null;
self.targetY = null;
self.speed = 5;
// Animation
var _animateTail2 = function animateTail() {
tween(tail, {
scaleX: 0.7
}, {
duration: 300,
easing: tween.easeInOut,
onFinish: function onFinish() {
tween(tail, {
scaleX: 1
}, {
duration: 300,
easing: tween.easeInOut,
onFinish: _animateTail2
});
}
});
};
_animateTail2();
// Growth function
self.grow = function () {
self.level++;
// Calculate new size based on level (capped at level 5)
var growthFactor = Math.min(self.level * 0.25 + 1, 2.5);
tween(body, {
width: self.initialWidth * growthFactor,
height: self.initialHeight * growthFactor
}, {
duration: 500,
easing: tween.easeOut
});
tween(tail, {
width: tail.width * 1.2,
height: tail.height * 1.2,
x: -(self.initialWidth * growthFactor) / 2
}, {
duration: 500,
easing: tween.easeOut
});
tween(eye, {
x: self.initialWidth * growthFactor / 4,
y: -(self.initialHeight * growthFactor) / 4
}, {
duration: 500,
easing: tween.easeOut
});
tween(pupil, {
x: self.initialWidth * growthFactor / 4 + 2,
y: -(self.initialHeight * growthFactor) / 4
}, {
duration: 500,
easing: tween.easeOut
});
// Play level up sound
LK.getSound('levelUp').play();
};
// Update method called automatically by LK engine
self.update = function () {
if (self.targetX !== null && self.targetY !== null) {
// Calculate direction vector
var dx = self.targetX - self.x;
var dy = self.targetY - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
// If we're close enough to the target, stop moving
if (distance < self.speed) {
self.x = self.targetX;
self.y = self.targetY;
self.targetX = null;
self.targetY = null;
} else {
// Move towards target
self.x += dx / distance * self.speed;
self.y += dy / distance * self.speed;
// Rotate fish in the direction of movement
var angle = Math.atan2(dy, dx);
// Only flip horizontally, no rotation
if (dx < 0) {
self.scale.x = -1;
} else {
self.scale.x = 1;
}
}
}
// Keep fish in bounds
if (self.x < 0) {
self.x = 0;
}
if (self.y < 0) {
self.y = 0;
}
if (self.x > 2048) {
self.x = 2048;
}
if (self.y > 2732) {
self.y = 2732;
self.shield.x = self.x;
self.shield.y = self.y;
}
};
// Health bar
self.health = 3; // Initialize health
self.healthBar = new Container();
self.healthBar.x = -body.width / 2;
self.healthBar.y = -body.height / 2 - 30; // Move health bar higher above the player fish
self.addChild(self.healthBar);
for (var i = 0; i < self.health; i++) {
var healthSegment = LK.getAsset('playerFish', {
anchorX: 0.5,
anchorY: 0.5,
x: i * 20,
y: 0,
scaleX: 0.2,
scaleY: 0.2,
tint: 0x00FF00 // Green color for health
});
self.healthBar.addChild(healthSegment);
}
// Shield
var shield = self.attachAsset('playerFish', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 3.0,
// Larger size
scaleY: 3.0,
// Larger size
tint: 0x0000FF,
// Blue color
alpha: 0.5 // Semi-transparent
});
self.shield = shield;
self.shieldActive = true; // Initialize shield as active
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x202438 // Dark blue cave background
});
/****
* Game Code
****/
var clam = null;
var player = null;
var fishes = [];
var mines = [];
var score = 0;
var gameActive = true;
// Background cave elements
var cave = game.addChild(LK.getAsset('cave', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 0
}));
// Initialize player fish
player = new PlayerFish();
player.x = 2048 / 2;
player.y = 2732 / 2;
game.addChild(player);
// UI
var scoreTxt = new Text2('Score: 0', {
size: 60,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(1, 0);
LK.gui.topRight.addChild(scoreTxt);
scoreTxt.x = -20;
scoreTxt.y = 20;
var timerTxt = new Text2('Time: 60', {
size: 60,
fill: 0xFFFFFF
});
timerTxt.anchor.set(0, 0);
LK.gui.topLeft.addChild(timerTxt);
timerTxt.x = 20;
timerTxt.y = 20;
var remainingTime = 60;
var timerInterval = LK.setInterval(function () {
if (remainingTime > 0) {
remainingTime--;
timerTxt.setText('Time: ' + remainingTime);
}
}, 1000);
var levelTxt = new Text2('Level: 1', {
size: 60,
fill: 0xFFFFFF
});
levelTxt.anchor.set(0, 0);
LK.gui.topRight.addChild(levelTxt);
levelTxt.x = -levelTxt.width - 20;
levelTxt.y = 90;
var highScoreTxt = new Text2('High Score: ' + storage.highScore, {
size: 50,
fill: 0xFFDD00
});
highScoreTxt.anchor.set(0, 0);
LK.gui.topRight.addChild(highScoreTxt);
highScoreTxt.x = -highScoreTxt.width - 20;
highScoreTxt.y = 160;
// Initialize game elements
function initializeGame() {
// Add a clam to the game
clam = new Clam();
clam.x = 2048 / 2;
clam.y = 2732 - 50; // Position clam closer to the bottom
clam.visible = true; // Make the clam visible
game.addChild(clam);
// Initialize player score and level
score = 0;
scoreTxt.setText('Score: ' + score);
player.level = 1;
player.shieldActive = true;
// Set a 60-second timer to end the game
LK.setTimeout(function () {
gameActive = false;
if (score >= 1000) {
LK.showYouWin(); // Player wins if score is 1000 or more
} else {
LK.showGameOver(); // Player loses if score is less than 1000
}
LK.clearInterval(timerInterval); // Clear the timer interval when the game ends
}, 60000); // 60 seconds
LK.setTimeout(function () {
player.shieldActive = false;
player.shield.visible = false; // Hide the shield after 3 seconds
}, 3000); // Shield lasts for 3 seconds
// Start game at stage 1
spawnFish(5, 'smallFish', 1);
spawnFish(10, 'mediumFish', 2);
spawnMines(10);
// Start playing ambient cave sound
LK.playMusic('caveAmbience', {
loop: true,
fade: {
start: 0,
end: 0.4,
duration: 1000
}
});
}
// Spawn fish
function spawnFish(count, type, level) {
for (var i = 0; i < count; i++) {
var fish = new Fish(type, level);
fish.x = Math.random() * 2048;
fish.y = Math.random() * 2732;
fishes.push(fish);
game.addChild(fish);
}
}
// Spawn mines
function spawnMines(count) {
for (var i = 0; i < count; i++) {
var mine = new Mine();
mine.x = Math.random() * 2048;
mine.y = Math.random() * 2732;
mines.push(mine);
game.addChild(mine);
}
}
// Handle player movement
function handleMove(x, y, obj) {
if (gameActive) {
player.targetX = x;
player.targetY = y;
// Ensure player moves towards the target
player.update();
}
}
// Mouse/touch events
game.down = function (x, y, obj) {
handleMove(x, y, obj);
player.speed = 10; // Increase speed when mouse is held down
};
game.move = handleMove;
game.up = function (x, y, obj) {
player.speed = 5; // Reset speed when mouse is released
};
// Main game loop
game.update = function () {
if (!gameActive) {
return;
}
// Update player movement
player.update();
// Check if player intersects with the pearl and can eat it
if (clam.pearl.visible && player.intersects(clam.pearl)) {
clam.pearl.visible = false; // Hide the pearl after eating
LK.getSound('eat').play();
score += 50; // Add score for eating the pearl
scoreTxt.setText('Score: ' + score);
// Check if player should level up
if (score >= player.level * 50) {
player.grow();
levelTxt.setText('Level: ' + player.level);
}
}
for (var i = fishes.length - 1; i >= 0; i--) {
var fish = fishes[i];
if (player.intersects(fish) && !fish.eaten) {
fish.eaten = true;
fish.destroy();
fishes.splice(i, 1);
// Determine if player can eat the fish
if (player.level >= fish.fishLevel) {
// Player eats fish
fish.eaten = true;
LK.getSound('eat').play();
// Add score based on fish type
var points = fish.fishLevel * 10;
score += points;
scoreTxt.setText('Score: ' + score);
// Check if player should level up
if (score >= player.level * 50) {
player.grow();
levelTxt.setText('Level: ' + player.level);
// Spawn a replacement fish
if (fish.fishLevel === 1) {
spawnFish(1, 'smallFish', 1);
} else if (fish.fishLevel === 2) {
spawnFish(1, 'mediumFish', 2);
} else {
spawnFish(1, 'largeFish', 3);
}
}
// Update high score if needed
if (score > storage.highScore) {
storage.highScore = score;
highScoreTxt.setText('High Score: ' + storage.highScore);
}
} else if (!(fish instanceof GoldFish) && fish.fishLevel > player.level) {
if (!player.shieldActive) {
// Check if BigFish is larger than the player
if (fish instanceof BigFish && fish.scaleX > player.scaleX) {
// BigFish eats player - reduce health by 1/2
player.health -= 1 / 2;
LK.getSound('explode').play();
LK.effects.flashObject(player, 0xFF0000, 500);
// Update health bar
var segmentsToRemove = Math.ceil(player.healthBar.children.length / 2);
for (var k = 0; k < segmentsToRemove; k++) {
if (player.healthBar.children.length > 0) {
player.healthBar.removeChildAt(player.healthBar.children.length - 1);
}
}
// Check if health is depleted
if (player.health <= 0) {
gameActive = false;
// Flash screen
LK.effects.flashScreen(0xFF0000, 1000);
// Show game over
LK.setTimeout(function () {
LK.showGameOver();
}, 1500);
}
}
}
}
}
}
// Check for collisions with mines
for (var j = mines.length - 1; j >= 0; j--) {
var mine = mines[j];
if (player.intersects(mine)) {
if (!player.shieldActive) {
// Mine explodes - reduce health by 1/3
player.health -= 1 / 3;
LK.getSound('explode').play();
LK.effects.flashObject(player, 0xFF0000, 500);
// Update health bar
var segmentsToRemove = Math.ceil(player.healthBar.children.length / 3);
for (var k = 0; k < segmentsToRemove; k++) {
if (player.healthBar.children.length > 0) {
player.healthBar.removeChildAt(player.healthBar.children.length - 1);
}
}
// Check if health is depleted
if (player.health <= 0) {
gameActive = false;
// Flash screen
LK.effects.flashScreen(0xFF0000, 1000);
// Show game over
LK.setTimeout(function () {
LK.showGameOver();
}, 1500);
}
// Remove mine after explosion
mine.destroy();
mines.splice(j, 1);
}
}
}
// Occasionally spawn a new small fish
if (Math.random() < 0.02 && fishes.length < 30) {
// Increased spawn rate and max count
spawnFish(1, 'smallFish', 1);
}
};
// Initialize the game
initializeGame();
// Add octopus arms to the BigFish
for (var i = 0; i < 8; i++) {
var angle = i / 8 * Math.PI * 2;
var body = self.attachAsset('largeFish', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2.5,
scaleY: 2.5,
tint: 0x20375b // Dark blue color
});
var arm = LK.getAsset('tail', {
anchorX: 0.5,
anchorY: 0.5,
x: Math.cos(angle) * body.width,
y: Math.sin(angle) * body.height,
rotation: angle,
scaleX: 0.5,
scaleY: 0.5,
tint: 0x20375b // Match BigFish color
});
self.addChild(arm);
// Animate the arm to move
var _animateArm = function animateArm(arm, angle) {
tween(arm, {
x: Math.cos(angle) * (body.width + 10),
y: Math.sin(angle) * (body.height + 10)
}, {
duration: 1000,
easing: tween.easeInOut,
onFinish: function onFinish() {
tween(arm, {
x: Math.cos(angle) * body.width,
y: Math.sin(angle) * body.height
}, {
duration: 1000,
easing: tween.easeInOut,
onFinish: function onFinish() {
_animateArm(arm, angle);
}
});
}
});
};
_animateArm(arm, angle);
} ===================================================================
--- original.js
+++ change.js
@@ -8,8 +8,20 @@
/****
* Classes
****/
+var BigFish = Container.expand(function () {
+ var self = Container.call(this);
+ // BigFish body
+ var body = self.attachAsset('largeFish', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ scaleX: 2.5,
+ scaleY: 2.5,
+ tint: 0x20375b // Dark blue color
+ });
+ return self;
+});
var Clam = Container.expand(function () {
var self = Container.call(this);
// Clam body
var body = self.attachAsset('mine', {