User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'var fishGraphics = self.attachAsset('zebraDanio', {' Line Number: 116
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'var fishGraphics = self.attachAsset('zebraDanio', {' Line Number: 111
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'var fishGraphics = self.attachAsset('zebraDanio', {' Line Number: 106
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'var fishGraphics = self.attachAsset('zebraDanio', {' Line Number: 109
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'self.fishGraphics = self.attachAsset('zebraDanio', {' Line Number: 106
User prompt
Migrate to the latest version of LK
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'var fishGraphics = self.attachAsset('zebraDanio', {' Line Number: 106
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'self.fishGraphics = self.attachAsset('zebraDanio', {' Line Number: 106
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'var fishGraphics = self.attachAsset('zebraDanio', {' Line Number: 106
User prompt
Migrate to the latest version of LK
User prompt
Fix Bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'createAsset')' in this line: 'var fishGraphics = self.createAsset('zebraDanio', 'Zebra Danio Graphics', .5, .5);' Line Number: 25
User prompt
Fix Bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'createAsset')' in this line: 'self.fishGraphics = self.createAsset('zebraDanio', 'Zebra Danio Graphics', .5, .5);' Line Number: 25
User prompt
Fix Bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'createAsset')' in this line: 'self.fishGraphics = self.createAsset('zebraDanio', 'Zebra Danio Graphics', .5, .5);' Line Number: 25
User prompt
Fix Bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'createAsset')' in this line: 'self.fishGraphics = self.createAsset('zebraDanio', 'Zebra Danio Graphics', .5, .5);' Line Number: 52
User prompt
Fix Bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'createAsset')' in this line: 'var fishGraphics = self.createAsset('zebraDanio', 'Zebra Danio Graphics', .5, .5);' Line Number: 169
User prompt
Fix Bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'createAsset')' in this line: 'self.fishGraphics = self.createAsset('zebraDanio', 'Zebra Danio Graphics', .5, .5);' Line Number: 169
User prompt
Fix Bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'createAsset')' in this line: 'var fishGraphics = self.createAsset('zebraDanio', 'Zebra Danio Graphics', .5, .5);' Line Number: 169
User prompt
Fix Bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'createAsset')' in this line: 'var fishGraphics = self.createAsset('zebraDanio', 'Zebra Danio Graphics', .5, .5);' Line Number: 168
User prompt
Fix Bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'createAsset')' in this line: 'var fishGraphics = self.createAsset('zebraDanio', 'Zebra Danio Graphics', .5, .5);' Line Number: 168
User prompt
Fix Bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'createAsset')' in this line: 'var fishGraphics = self.createAsset('zebraDanio', 'Zebra Danio Graphics', .5, .5);' Line Number: 168
User prompt
Improve the fluidity
User prompt
Make décoration 600 pixel up
User prompt
Move the décoration in the aquarium
User prompt
Fix Bug: 'Uncaught ReferenceError: aquarium is not defined' in this line: 'var waterBounds = aquarium.getWaterBounds();' Line Number: 1351
User prompt
Fix Bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'getWaterBounds')' in this line: 'var waterBounds = self.aquarium.getWaterBounds();' Line Number: 1255
===================================================================
--- original.js
+++ change.js
@@ -1,76 +1,21 @@
/****
* Classes
****/
-var DecorativePlant = Container.expand(function () {
- var self = Container.call(this);
- var plantGraphics = self.createAsset('decorativePlant', 'Decorative Plant Graphics', .5, 1);
- var swayDirection = 1;
- self.sway = function () {
- plantGraphics.rotation += swayDirection * 0.01;
- if (Math.abs(plantGraphics.rotation) > 0.2) {
- swayDirection *= -1;
- }
- };
- self.move = function () {
- self.x += 1;
- if (self.x > 2048) {
- self.x = 0;
- }
- };
-});
-var TreasureChest = Container.expand(function () {
- var self = Container.call(this);
- var chestClosedGraphics = self.createAsset('chestClosed', 'Closed Chest Graphics', .5, .5);
- var chestOpenGraphics = self.createAsset('chestOpen', 'Open Chest Graphics', .5, .5);
- chestOpenGraphics.visible = false;
- var isOpen = false;
- self.toggleChest = function () {
- isOpen = !isOpen;
- chestClosedGraphics.visible = !isOpen;
- chestOpenGraphics.visible = isOpen;
- };
- LK.setInterval(self.toggleChest, 5000);
-});
-var FishFood = Container.expand(function () {
- var self = Container.call(this);
- var foodGraphics = self.createAsset('fishFood', 'Fish Food Graphics', .5, .5);
- self.speed = 1;
- self.move = function () {
- self.y += self.speed;
- if (self.y > 2732) {
- self.destroy();
- }
- };
-});
-var Bubble = Container.expand(function () {
- var self = Container.call(this);
- var bubbleGraphics = self.createAsset('bubble', 'Bubble Graphics', .5, .5);
- self.speed = -0.5;
- self.move = function () {
- self.y += self.speed;
- if (self.y < -50) {
- self.destroy();
- }
- };
- bubbleGraphics.on('down', function () {
- LK.effects.flashObject(self, 0xFFFFFF, 300);
- self.destroy();
- });
-});
var Fish = Container.expand(function () {
var self = Container.call(this);
- self.fishGraphics = self.createAsset('fish', 'Fish Graphics', .5, .5);
self.move = function () {
if (!self.directionChangeTime || LK.ticks - self.directionChangeTime > self.directionChangeInterval) {
self.directionChangeTime = LK.ticks;
self.directionChangeInterval = Math.random() * (self.maxChangeInterval - self.minChangeInterval) + self.minChangeInterval;
self.targetRotation = Math.random() * Math.PI * 2;
}
- var progress = Math.min(1, (LK.ticks - self.directionChangeTime) / self.directionChangeInterval);
- var rotationDifference = (self.targetRotation - self.rotation + Math.PI) % (2 * Math.PI) - Math.PI;
- self.rotation += rotationDifference * progress * 0.1;
- self.rotation = (self.rotation + Math.PI * 2) % (Math.PI * 2);
+ var progress = (LK.ticks - self.directionChangeTime) / self.directionChangeInterval;
+ if (progress < 1) {
+ self.rotation += (self.targetRotation - self.rotation) * progress;
+ } else {
+ self.rotation = self.targetRotation;
+ }
var tentativeX = self.x + Math.cos(self.rotation) * self.speed;
var tentativeY = self.y + Math.sin(self.rotation) * self.speed;
var waterBounds = self.getWaterBounds();
tentativeX = Math.max(waterBounds.left + 50, Math.min(tentativeX, waterBounds.right - 50));
@@ -80,80 +25,18 @@
self.y = tentativeY;
} else {
self.avoidObstacles(self.getNearbyObstacles());
}
- var nearbyFish = self.getNearbyObstacles();
- var alignmentRotation = 0;
- var alignmentCount = 0;
- for (var i = 0; i < nearbyFish.length; i++) {
- var fish = nearbyFish[i];
- var dx = self.x - fish.x;
- var dy = self.y - fish.y;
- var distance = Math.sqrt(dx * dx + dy * dy);
- if (distance < 200) {
- alignmentRotation += fish.rotation;
- alignmentCount++;
- }
- }
- if (alignmentCount > 0) {
- alignmentRotation /= alignmentCount;
- self.rotation = (self.rotation + alignmentRotation) / 2;
- }
- if (Math.random() < 0.02) {
- self.speed *= 0.5;
- }
self.rotation = self.rotation % (Math.PI * 2);
- if (Math.random() < 0.005) {
- LK.effects.splash(self.x, self.y, 0x1CA3EC, 500);
- }
- var isFishClose = self.getNearbyObstacles().some(function (obstacle) {
- var dx = self.x - obstacle.x;
- var dy = self.y - obstacle.y;
- return Math.sqrt(dx * dx + dy * dy) < 150;
- });
- if (isFishClose) {
- fishGraphics.tint = 0x88FFFF;
- } else {
- fishGraphics.tint = 0xFFFFFF;
- }
- fishGraphics.scale.x = Math.cos(self.rotation) < 0 ? -1 : 1;
- if (Math.random() < 0.01) {
- fishGraphics.blink();
- }
- fishGraphics.rotation = self.rotation;
+ self.fishGraphics.scale.x = Math.cos(self.rotation) < 0 ? -1 : 1;
+ self.fishGraphics.rotation = self.rotation;
};
- self.avoidObstacles = function (obstacles) {
- for (var i = 0; i < obstacles.length; i++) {
- var obstacle = obstacles[i];
- var dx = self.x - obstacle.x;
- var dy = self.y - obstacle.y;
- var distance = Math.sqrt(dx * dx + dy * dy);
- if (distance < 100) {
- self.targetRotation = Math.atan2(dy, dx) + Math.PI;
- break;
- }
- }
- };
+ self.avoidObstacles = function (obstacles) {};
self.isPathBlocked = function (newX, newY, obstacles) {
- for (var i = 0; i < obstacles.length; i++) {
- var obstacle = obstacles[i];
- var dx = newX - obstacle.x;
- var dy = newY - obstacle.y;
- var distance = Math.sqrt(dx * dx + dy * dy);
- if (distance < 50) {
- return true;
- }
- }
return false;
};
self.getNearbyObstacles = function () {
- var nearbyObstacles = [];
- for (var i = 0; i < self.fishes.length; i++) {
- if (fishes[i] !== self) {
- nearbyObstacles.push(fishes[i]);
- }
- }
- return nearbyObstacles;
+ return [];
};
this.getWaterBounds = function () {
var waterGraphics = LK.getAsset('water', 'Water Graphics', 0, 0);
return {
@@ -165,9 +48,9 @@
};
});
var ZebraDanio = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('zebraDanio', 'Zebra Danio Graphics', .5, .5);
+ self.fishGraphics = self.createAsset('zebraDanio', 'Zebra Danio Graphics', .5, .5);
fishGraphics.scale.set(1, 1);
self.speed = Math.random() * 0.2 + 0.4;
self.move = function () {
if (!self.directionChangeTime || LK.ticks - self.directionChangeTime > self.directionChangeInterval) {
@@ -276,29 +159,9 @@
var self = Fish.call(this);
var fishGraphics = self.createAsset('wrasses', 'Wrasses Graphics', .5, .5);
fishGraphics.scale.set(1, 1);
self.speed = Math.random() * 0.2 + 0.42;
- self.move = function () {
- if (!self.directionChangeTime || LK.ticks - self.directionChangeTime > self.directionChangeInterval) {
- self.directionChangeTime = LK.ticks;
- self.directionChangeInterval = Math.random() * (self.maxChangeInterval - self.minChangeInterval) + self.minChangeInterval;
- self.targetRotation = Math.random() * Math.PI * 2;
- }
- var progress = (LK.ticks - self.directionChangeTime) / self.directionChangeInterval;
- if (progress < 1) {
- self.rotation += (self.targetRotation - self.rotation) * progress;
- } else {
- self.rotation = self.targetRotation;
- }
- self.x += Math.cos(self.rotation) * self.speed;
- self.y += Math.sin(self.rotation) * self.speed;
- var waterBounds = self.getWaterBounds();
- self.x = Math.max(waterBounds.left, Math.min(self.x, waterBounds.right));
- self.y = Math.max(waterBounds.top, Math.min(self.y, waterBounds.bottom));
- self.rotation = self.rotation % (Math.PI * 2);
- fishGraphics.scale.x = Math.cos(self.rotation) < 0 ? -1 : 1;
- fishGraphics.rotation = self.rotation;
- };
+ self.move = function () {};
});
var Parrotfish = Fish.expand(function () {
var self = Fish.call(this);
var fishGraphics = self.createAsset('parrotfish', 'Parrotfish Graphics', .5, .5);
@@ -352,11 +215,9 @@
var self = Fish.call(this);
var fishGraphics = self.createAsset('lionfish', 'Lionfish Graphics', .5, .5);
fishGraphics.scale.set(1, 1);
self.speed = Math.random() * 0.2 + 0.5;
- self.move = function () {
- fishGraphics.rotation = self.rotation;
- };
+ self.move = function () {};
});
var Surgeonfish = Fish.expand(function () {
var self = Fish.call(this);
var fishGraphics = self.createAsset('surgeonfish', 'Surgeonfish Graphics', .5, .5);
@@ -1250,133 +1111,29 @@
/****
* Game Code
****/
-game.updateElements = function () {
- game.fishes = [];
- var children = game.children.slice();
- for (var i = 0; i < children.length; i++) {
- if (children[i] instanceof Bubble || children[i] instanceof FishFood) {
- children[i].move();
- }
- if (children[i] instanceof DecorativePlant) {
- children[i].sway();
- children[i].move();
- }
- }
-};
-LK.on('tick', game.updateElements);
-for (var i = 0; i < 5; i++) {
- var plant = new DecorativePlant();
- game.aquarium = game.addChild(new Aquarium());
- var waterBounds = game.aquarium.getWaterBounds();
- plant.x = waterBounds.left + i * ((waterBounds.right - waterBounds.left) / 5);
- plant.y = waterBounds.bottom - plant.height / 2 - 600;
- game.addChild(plant);
-}
-var treasureChest = new TreasureChest();
-treasureChest.x = 2048 / 2;
-treasureChest.y = 2732 - 100;
-game.addChild(treasureChest);
-var feedButton = new Text2('Feed Fish', {
- size: 100,
- fill: '#ffffff'
-});
-feedButton.anchor.set(.5, 0);
-feedButton.x = 2048 / 2;
-feedButton.y = 50;
-LK.gui.topCenter.addChild(feedButton);
-feedButton.on('down', game.feedFish);
-game.feedFish = function () {
- var food = new FishFood();
- food.x = 2048 / 2;
- food.y = 0;
- game.addChild(food);
-};
-game.spawnBubble = function () {
- var bubble = new Bubble();
- bubble.x = Math.random() * 2048;
- bubble.y = 2732;
- game.addChild(bubble);
-};
-var bubbleSpawnTimer = LK.setInterval(game.spawnBubble, 2000);
-game.spawnBubble = function () {
- var bubble = new Bubble();
- bubble.x = Math.random() * 2048;
- bubble.y = 2732;
- game.addChild(bubble);
-};
-game.aquarium = game.addChild(new Aquarium());
+var aquarium = game.addChild(new Aquarium());
game.setBackgroundColor(0x008080);
-game.fishes = [];
-LK.on('tick', function () {
- for (var i = 0; i < game.fishes.length; i++) {
- game.fishes[i].move();
- }
-});
-LK.on('tick', function () {
- if (game.fishes) {
- for (var i = 0; i < game.fishes.length; i++) {
- game.fishes[i].move();
- }
- }
-});
-LK.on('tick', function () {
- for (var i = 0; i < game.fishes.length; i++) {
- game.fishes[i].move();
- }
-});
-for (var i = 0; i < 5; i++) {
- var plant = new DecorativePlant();
- plant.x = i * (2048 / 5);
- plant.y = 2732 - 50;
- game.addChild(plant);
-}
-LK.on('tick', function () {
- if (game.fishes && game.fishes.length) {
- for (var i = 0; i < game.fishes.length; i++) {
- game.fishes[i].move();
- }
- }
-});
-LK.on('tick', function () {
- for (var i = 0; i < game.fishes.length; i++) {
- game.fishes[i].move();
- }
-});
-LK.on('tick', function () {
- for (var i = 0; i < game.fishes.length; i++) {
- game.fishes[i].move();
- }
-});
-LK.on('tick', function () {
- for (var i = 0; i < game.fishes.length; i++) {
- game.fishes[i].move();
- }
-});
-LK.on('tick', function () {
- for (var i = 0; i < game.fishes.length; i++) {
- game.fishes[i].move();
- }
-});
+var fishes = [];
+var fishTypes = [Wrasses, Parrotfish, Dartfish, MoorishIdol, Tangfish, Bannerfish, Butterflyfish, Mandarinfish, Lionfish, Surgeonfish, Pufferfish, Clownfish, Angelfish, KoiFish, EmperorFish, Goldfish, Sunfish, GuppyFish, BettaFish, DiscusFish, NeonTetra, OscarFish, PsychedelicFrogfish, FlameScallop, RibbonEel, LeafySeaDragon, ClownTriggerfish, ElectricBlueDamsel, YellowTang, FlameHawkfish, RoyalGramma, FlameAngel, BlueTang, Moonfish, Starfish, CardinalTetra];
var fishTypes = [ZebraDanio, CelestialPearlDanio, Wrasses, Parrotfish, Dartfish, MoorishIdol, Tangfish, Bannerfish, Butterflyfish, Mandarinfish, Lionfish, Surgeonfish, Pufferfish, Clownfish, Angelfish, KoiFish, EmperorFish, Goldfish, Sunfish, GuppyFish, BettaFish, DiscusFish, NeonTetra, OscarFish, ElectricCatfish, RainbowTrout, PsychedelicFrogfish, FlameScallop, RibbonEel, LeafySeaDragon, ClownTriggerfish, ElectricBlueDamsel, YellowTang, FlameHawkfish, RoyalGramma, FlameAngel, BlueTang, Moonfish, Starfish, GlassCatfish, DiamondTetra, PeacockBass, CrimsonSnapper, CardinalTetra, CometFish, EmeraldGoby];
-var that = void 0;
fishTypes.forEach(function (fishType) {
var fish = new fishType();
if (typeof fish.move === 'function') {
- var waterBounds = game.aquarium.getWaterBounds();
+ var waterBounds = aquarium.getWaterBounds();
var centerX = waterBounds.left + (waterBounds.right - waterBounds.left) / 2;
var centerY = waterBounds.top + (waterBounds.bottom - waterBounds.top) / 2;
var maxDistance = 500;
var angle = Math.random() * Math.PI * 2;
var distance = Math.random() * maxDistance;
fish.x = centerX + Math.cos(angle) * distance;
fish.y = centerY + Math.sin(angle) * distance;
- that.fishes.push(fish);
+ fishes.push(fish);
game.addChild(fish);
}
});
LK.on('tick', function () {
- for (var i = 0; i < game.fishes.length; i++) {
- game.fishes[i].move();
+ for (var i = 0; i < fishes.length; i++) {
+ fishes[i].move();
}
});
\ No newline at end of file
An aquarium with no fish on a sheel in a photorealistic style. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic goldfish. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic Angelfish. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic koyfish swiming to the right. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic gupyfish swiming to the right. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic bettafish swiming to the right. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic clownfish swiming to the right. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic pufferfish swiming to the right. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic surgeonfish swiming to the right. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic buble of water. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic fish egg. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic celestial pearl danio. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic Parrotfish. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic dartfish. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic moorishidol. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic tangfish. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic bannerfish. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic butterflyfish. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic mandarinfish. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a realistic lionfish. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a realistic emperorFish. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a realistic sunfish. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a realistic discusFish. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a realistic neonTetra. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a realistic oscarFish. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a cardinal tetra. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a tang fish. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a clown fish. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.