User prompt
Level süresini tüm koddan kaldır
User prompt
balıklar vurulunca vurulan balığın bir kenarında kazanılan puan yazsın
User prompt
Arkaplan değişme süresini uzat
User prompt
Reloading süresini 3 saniye yap
User prompt
arkaplan sürelerini uzat
User prompt
tüm arkaplanların çözünürlüğünü artır ve ekrana sığacak şekilde ayarla
User prompt
Her arkaplan en az 3 dakika görünmeli
User prompt
Daha da uzat
User prompt
Daha da uzat
User prompt
arkaplan değişme süresi uzat
User prompt
arkaplan değişim süresini biraz uzat
User prompt
arkaplan resimleri random olarak değişsin
User prompt
Maalesef balıkların boyutları hala aynı. büyütemedein yani
User prompt
balıkların boyunu artır
User prompt
backgorund2 olsun
User prompt
hep aynı bakgroun dolsun
User prompt
background değiştirme ile ilgli tüm fonksiyonları koddan kaldır
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'length')' in or related to this line: 'var randomIndex = Math.floor(Math.random() * backgrounds.length);' Line Number: 372
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'length')' in or related to this line: 'var randomIndex = Math.floor(Math.random() * backgrounds.length);' Line Number: 371
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading '0')' in or related to this line: 'var newBackground = game.attachAsset(backgrounds[randomIndex], {' Line Number: 373
Code edit (1 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'length')' in or related to this line: 'var randomIndex = Math.floor(Math.random() * backgrounds.length);' Line Number: 371
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'length')' in or related to this line: 'var randomIndex = Math.floor(Math.random() * backgrounds.length);' Line Number: 372
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'length')' in or related to this line: 'var randomIndex = Math.floor(Math.random() * backgrounds.length);' Line Number: 371
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'length')' in or related to this line: 'var randomIndex = Math.floor(Math.random() * backgrounds.length);' Line Number: 371
/****
* Classes
****/
// Bubble class to represent the bubbles in the game
var Bubble = Container.expand(function () {
var self = Container.call(this);
self.speed = 1; // Default speed
// Attach bubble asset
var scaleX = Math.random() * 0.5 + 0.5;
var bubbleGraphics = self.attachAsset('bubble', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: scaleX,
// Random scale between 0.5 and 1.0
scaleY: scaleX // Ensure scaleY matches scaleX for a perfect circle
});
bubbleGraphics.alpha = 0.5;
// Update function to move bubble
self.update = function () {
if (self.lastY === undefined) {
self.lastY = self.y;
} // Initialize lastY for tracking changes on Y
self.y -= self.speed;
self.lastY = self.y; // Update lastY after movement
self.x += Math.sin(self.y / 50) * 1; // Reduce gentle swaying motion
if (self.y < 500) {
self.destroy(); // Destroy the bubble if it reaches a certain height
}
};
});
// Bullet class to represent the bullets shot by the player
var Bullet = Container.expand(function () {
var self = Container.call(this);
self.speed = 10; // Default speed
// Attach bullet asset
var bulletGraphics = self.attachAsset('bullet', {
anchorX: 0.5,
anchorY: 0.5
});
bulletGraphics.scale.set(0.5, 0.5); // Decrease the size of the bullet
bulletGraphics.rotation = -Math.PI / 2; // Rotate the bullet to point upwards
// Update function to move bullet
self.update = function () {
if (game.mouse) {
self.rotation = Math.atan2(game.mouse.y - self.y, game.mouse.x - self.x);
}
if (self.lastX === undefined) {
self.lastX = self.x;
} // Initialize lastX for tracking changes on X
if (self.lastY === undefined) {
self.lastY = self.y;
} // Initialize lastY for tracking changes on Y
self.x += self.speed * Math.cos(self.rotation);
self.y += self.speed * Math.sin(self.rotation);
self.lastX = self.x; // Update lastX after movement
self.lastY = self.y; // Update lastY after movement
if (self.y < 0) {
self.destroy(); // Destroy the bullet if it goes off screen
}
};
});
// Fake class to represent the fake in the game
var Fake = Container.expand(function () {
var self = Container.call(this);
self.speed = 1; // Default speed
// Attach fake asset
var fakeGraphics = self.attachAsset('fake', {
anchorX: 0.5,
anchorY: 0.5
});
fakeGraphics.alpha = 0.5;
// Update function to move fake
self.update = function () {
if (self.lastY === undefined) {
self.lastY = self.y;
} // Initialize lastY for tracking changes on Y
self.y -= self.speed;
self.lastY = self.y; // Update lastY after movement
if (self.y < 500) {
self.destroy(); // Destroy the fake if it reaches a certain height
}
};
});
//<Assets used in the game will automatically appear here>
//<Write imports for supported plugins here>
// Fish class to represent different types of fish
var Fish = Container.expand(function () {
var self = Container.call(this);
self.size = 1; // Default size multiplier
self.points = 1; // Default points
self.speed = 2; // Default speed
// Attach fish asset
var fishGraphics = self.attachAsset('fish', {
anchorX: 0.5,
anchorY: 0.5
});
// Update function to move fish
self.update = function () {
if (self.lastX === undefined) {
self.lastX = self.x;
} // Initialize lastX for tracking changes on X
if (self.lastY === undefined) {
self.lastY = self.y;
} // Initialize lastY for tracking changes on Y
self.x += self.speed; // Move fish based on speed direction
self.y += Math.sin(self.x / 50) * 0.5; // Further reduce gentle swaying motion to fish
self.lastX = self.x; // Update lastX after movement
self.lastY = self.y; // Update lastY after movement
// Removed rotation animation from fish
// Ensure fish face the correct direction based on speed
fishGraphics.scale.x = self.speed > 0 ? 1 : -1;
fishGraphics.scale.y = 1; // Ensure fish are always facing forward
// Check for nearby bullets and change direction if close
game.children.forEach(function (child) {
if (child instanceof Bullet) {
var distance = Math.sqrt(Math.pow(child.x - self.x, 2) + Math.pow(child.y - self.y, 2));
if (distance < 200) {
// If bullet is within 200 pixels
self.speed = -self.speed; // Reverse direction
}
}
});
// Reset position if fish goes off screen
if (self.speed > 0 && self.x > 2048) {
self.x = -fishGraphics.width;
} else if (self.speed < 0 && self.x < -fishGraphics.width) {
self.x = 2048;
}
};
// Method to set fish properties based on level
self.setProperties = function (level) {
self.size = 1; // Set size to a constant value
self.points = level * 100; // Increase points with level
self.speed = 2 + level * 0.5; // Increase speed with level
fishGraphics.scale.set(self.size * 3.0, self.size * 3.0);
// Randomly assign some fish to move to the left
if (Math.random() > 0.5) {
self.speed = -self.speed;
}
};
// Method to shoot a bullet
self.shoot = function () {
var bullet = new Bullet();
bullet.x = self.x;
bullet.y = self.y;
game.addChild(bullet);
};
});
var Fish2 = Container.expand(function () {
var self = Container.call(this);
self.size = 1;
self.points = 1;
self.speed = 2;
var fishGraphics = self.attachAsset('fish2', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
if (self.lastX === undefined) {
self.lastX = self.x;
} // Initialize lastX for tracking changes on X
if (self.lastY === undefined) {
self.lastY = self.y;
} // Initialize lastY for tracking changes on Y
self.x += self.speed;
self.y += Math.sin(self.x / 50) * 0.5;
self.lastX = self.x; // Update lastX after movement
self.lastY = self.y; // Update lastY after movement
fishGraphics.scale.x = self.speed > 0 ? 1 : -1;
fishGraphics.scale.y = 1;
game.children.forEach(function (child) {
if (child instanceof Bullet) {
var distance = Math.sqrt(Math.pow(child.x - self.x, 2) + Math.pow(child.y - self.y, 2));
if (distance < 200) {
self.speed = -self.speed;
}
}
});
if (self.speed > 0 && self.x > 2048) {
self.x = -fishGraphics.width;
} else if (self.speed < 0 && self.x < -fishGraphics.width) {
self.x = 2048;
}
};
self.setProperties = function (level) {
self.size = 1;
self.points = level * 100;
self.speed = 2 + level * 0.5;
fishGraphics.scale.set(self.size * 3.0, self.size * 3.0);
if (Math.random() > 0.5) {
self.speed = -self.speed;
}
};
self.shoot = function () {
var bullet = new Bullet();
bullet.x = self.x;
bullet.y = self.y;
game.addChild(bullet);
};
});
var Fish3 = Container.expand(function () {
var self = Container.call(this);
self.size = 1;
self.points = 1;
self.speed = 2;
var fishGraphics = self.attachAsset('fish3', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
if (self.lastX === undefined) {
self.lastX = self.x;
} // Initialize lastX for tracking changes on X
if (self.lastY === undefined) {
self.lastY = self.y;
} // Initialize lastY for tracking changes on Y
self.x += self.speed;
self.y += Math.sin(self.x / 50) * 0.5;
self.lastX = self.x; // Update lastX after movement
self.lastY = self.y; // Update lastY after movement
fishGraphics.scale.x = self.speed > 0 ? 1 : -1;
fishGraphics.scale.y = 1;
game.children.forEach(function (child) {
if (child instanceof Bullet) {
var distance = Math.sqrt(Math.pow(child.x - self.x, 2) + Math.pow(child.y - self.y, 2));
if (distance < 200) {
self.speed = -self.speed;
}
}
});
if (self.speed > 0 && self.x > 2048) {
self.x = -fishGraphics.width;
} else if (self.speed < 0 && self.x < -fishGraphics.width) {
self.x = 2048;
}
};
self.setProperties = function (level) {
self.size = 1;
self.points = level * 100;
self.speed = 2 + level * 0.5;
fishGraphics.scale.set(self.size * 3.0, self.size * 3.0);
if (Math.random() > 0.5) {
self.speed = -self.speed;
}
};
self.shoot = function () {
var bullet = new Bullet();
bullet.x = self.x;
bullet.y = self.y;
game.addChild(bullet);
};
});
var Fish4 = Container.expand(function () {
var self = Container.call(this);
self.size = 1;
self.points = 1;
self.speed = 2;
var fishGraphics = self.attachAsset('fish4', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
if (self.lastX === undefined) {
self.lastX = self.x;
} // Initialize lastX for tracking changes on X
if (self.lastY === undefined) {
self.lastY = self.y;
} // Initialize lastY for tracking changes on Y
self.x += self.speed;
self.y += Math.sin(self.x / 50) * 0.5;
self.lastX = self.x; // Update lastX after movement
self.lastY = self.y; // Update lastY after movement
fishGraphics.scale.x = self.speed > 0 ? 1 : -1;
fishGraphics.scale.y = 1;
game.children.forEach(function (child) {
if (child instanceof Bullet) {
var distance = Math.sqrt(Math.pow(child.x - self.x, 2) + Math.pow(child.y - self.y, 2));
if (distance < 200) {
self.speed = -self.speed;
}
}
});
if (self.speed > 0 && self.x > 2048) {
self.x = -fishGraphics.width;
} else if (self.speed < 0 && self.x < -fishGraphics.width) {
self.x = 2048;
}
};
self.setProperties = function (level) {
self.size = 1;
self.points = level * 100;
self.speed = 2 + level * 0.5;
fishGraphics.scale.set(self.size * 3.0, self.size * 3.0);
if (Math.random() > 0.5) {
self.speed = -self.speed;
}
};
self.shoot = function () {
var bullet = new Bullet();
bullet.x = self.x;
bullet.y = self.y;
game.addChild(bullet);
};
});
// Spear class to represent the spear shot by the player
var Spear = Container.expand(function () {
var self = Container.call(this);
self.speed = 10; // Default speed
// Attach spear asset
var spearGraphics = self.attachAsset('spear', {
anchorX: 0.5,
anchorY: 1.0
});
// Update function to move spear
self.update = function () {
self.y -= self.speed;
if (self.y < 0) {
self.destroy(); // Destroy the spear if it goes off screen
}
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x0000FF // Change background color to blue to simulate water
});
/****
* Game Code
****/
// Randomly change background at the start of the game
changeBackground();
function showRestartButton() {
// Logic to display the restart button
console.log("Restart button displayed");
}
// Initialize variables
var timerTxt = new Text2('Time: 300', {
size: 80,
fill: 0xFFFFFF,
font: "'Bubbleboddy Neue Trial Regular', Impact, 'Arial Black', Tahoma"
});
timerTxt.anchor.set(0.5, 0);
timerTxt.y = 200; // Position below the bullet count
LK.gui.top.addChild(timerTxt);
var levelTime = 300; // Set default level time to 300 seconds (5 minutes)
var timeRemaining = levelTime; // Initialize time remaining
var backgrounds = ['background', 'background2', 'background3']; // Initialize backgrounds array
function changeBackground() {
var randomIndex = Math.floor(Math.random() * backgrounds.length);
var newBackground = game.attachAsset(backgrounds[randomIndex], {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2
});
newBackground.scale.set(Math.max(2048 / newBackground.width, 2732 / newBackground.height));
newBackground.y -= 100; // Crop the top white part by adjusting the y position
game.addChildAt(newBackground, 0); // Add new background at the bottom layer
}
// Initial background setup removed
// Initialize variables
var levelTime = 300; // Set default level time to 300 seconds (5 minutes)
var level = 1;
var score = 0;
var fishArray = [];
var bulletCount = 100; // Maximum number of bullets available
var reloadTime = 5000; // 5 seconds reload time in milliseconds
var isReloading = false; // Flag to check if reloading is in progress
var scoreTxt = new Text2('Score: 0', {
size: 100,
fill: 0xFFFFFF,
font: "'Bubbleboddy Neue Trial Regular', Impact, 'Arial Black', Tahoma"
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Display bullet count and reloading status
var bulletTxt = new Text2('Bullets: ' + bulletCount, {
size: 80,
// Increased size from 50 to 80
fill: 0xFFFFFF,
font: "'Bubbleboddy Neue Trial Regular', Impact, 'Arial Black', Tahoma"
});
bulletTxt.anchor.set(0.5, 0);
bulletTxt.y = 100; // Position below the score
LK.gui.top.addChild(bulletTxt);
var reloadCountdown = reloadTime / 1000; // Reload time in seconds
var bulletInterval = LK.setInterval(function () {
if (isReloading) {
if (bulletTxt) {
bulletTxt.setText('Bullets: ' + bulletCount + ' (Reloading in ' + reloadCountdown + 's)');
if (bulletTxt.style) {
bulletTxt.style.fill = 0xFF0000; // Set text color to red
}
}
reloadCountdown--;
if (reloadCountdown < 0) {
reloadCountdown = reloadTime / 1000; // Reset countdown
}
} else {
if (bulletTxt) {
bulletTxt.setText('Bullets: ' + bulletCount);
}
}
}, 1000);
// Function to start a new level
function startLevel() {
timeRemaining = levelTime; // Reset the timer for the new level
// Background change removed from level start
scoreTxt.setText('Score: ' + score);
timerTxt.setText('Time: ' + timeRemaining);
// Create new fish for the level
fishArray.forEach(function (fish) {
return fish.destroy();
});
fishArray = [];
// Create new fish for the level
for (var i = 0; i < level + 2; i++) {
var fish;
var fishType = Math.floor(Math.random() * 4) + 1; // Randomly select a fish type
switch (fishType) {
case 1:
fish = new Fish();
break;
case 2:
fish = new Fish2();
break;
case 3:
fish = new Fish3();
break;
case 4:
fish = new Fish4();
break;
}
fish.setProperties(level);
fish.x = Math.random() * 2048;
fish.y = Math.random() * 1000 + 500; // Position fish in the middle of the screen
fishArray.push(fish);
game.addChild(fish);
}
}
// Function to handle fish click
function handleFishClick(fish) {
score += fish.points;
scoreTxt.setText('Score: ' + score);
fish.destroy();
fishArray.splice(fishArray.indexOf(fish), 1);
// Check if all fish are caught
if (fishArray.length === 0) {
level++;
startLevel();
}
}
// Add event listeners for fish
fishArray.forEach(function (fish) {
fish.down = function (x, y, obj) {
handleFishClick(fish);
fish.shoot();
};
});
// Game update function
game.update = function () {
fishArray.forEach(function (fish, index) {
return fish.update();
});
// Update the timer every second
if (LK.ticks % 60 === 0) {
timeRemaining--;
timerTxt.setText('Time: ' + timeRemaining);
if (timeRemaining <= 0) {
// Handle level time expiration, e.g., end level or game over
console.log("Level time expired");
}
}
game.children.forEach(function (child) {
if (child instanceof Spear || child instanceof Bullet) {
child.update();
// Check for collision with fish
fishArray.forEach(function (fish) {
if (child.intersects(fish)) {
handleFishClick(fish);
child.destroy();
LK.getSound('saplanma').play(); // Play 'saplanma' sound
}
});
}
// Create bubbles at random intervals
if (Math.random() < 0.0005) {
var bubble = new Bubble();
bubble.x = Math.random() * 2048;
bubble.y = 2732; // Start from the bottom of the screen
game.addChild(bubble);
}
});
};
// Start the first level
startLevel();
// Initialize the fake
var fake = new Fake();
fake.x = 2048 / 2;
fake.y = 2732 / 2;
game.addChild(fake);
// Mouse or touch down on the game
game.down = function (x, y, obj) {
if (bulletCount > 0 && !isReloading) {
var bullet = new Bullet();
bullet.x = 2048 / 2; // Set the bullet's starting x position to the center of the screen
bullet.y = 2732; // Set the bullet's starting y position to the bottom of the screen
bullet.rotation = Math.atan2(y - bullet.y, x - bullet.x);
game.addChild(bullet);
bulletCount--; // Decrease bullet count
console.log("Bullets left: " + bulletCount);
} else if (bulletCount === 0 && !isReloading) {
isReloading = true;
console.log("Reloading bullets...");
LK.setTimeout(function () {
bulletCount = 20; // Reset bullet count
isReloading = false;
console.log("Bullets reloaded: " + bulletCount);
reloadCountdown = reloadTime / 1000; // Reset countdown
}, reloadTime);
}
};
// Play background music
LK.playMusic('bgmusic', {
loop: true
});
Red pot fish. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
spear. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
palyaço balığı. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
japon balığı. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Guppy fish. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
undersea olants rocks etc but no fish. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.