User prompt
add a start screen and make it have a nice design ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
add record score counter ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Add ocean background with water gradient and lighting effects Add OceanBackground class for water animations and effects Initialize ocean background in game setup Update game variables to include ocean background Update game update loop to include ocean background animations
User prompt
make background: blue realistic pixel ocen , Add ocean background with water gradient and lighting effects
User prompt
realistic pixel ocean background
User prompt
Reduce your width by 10 hight by 5 when you get a goldenfish
User prompt
Reduce your width by 20 hight by 10 when you get a goldenfish ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Reduce your size by 20 when you get a goldenfish
User prompt
Reduce your width and height by 30 when you get a goldenfish
User prompt
Reduce your width and height by 15 when you get a goldenfish
User prompt
Increase your widht and hight by 15 when you get a goldenfish
User prompt
Increase your health by 15 when you get a power-up
User prompt
Increase your health by 10 when you get a power-up
User prompt
fix,
User prompt
Hungry Shark Attack
Initial prompt
bir köpek balığı oyunu
/****
* Classes
****/
var Fish = Container.expand(function (type, speed) {
var self = Container.call(this);
self.type = type || 'smallFish';
self.speed = speed || 2;
self.value = 1;
self.lastY = 0;
if (self.type === 'smallFish') {
self.value = 1;
self.danger = 0;
} else if (self.type === 'mediumFish') {
self.value = 2;
self.danger = 0.5;
} else if (self.type === 'largeFish') {
self.value = 4;
self.danger = 1;
} else if (self.type === 'goldenFish') {
self.value = 10;
self.danger = 0;
}
var fishGraphics = self.attachAsset(self.type, {
anchorX: 0.5,
anchorY: 0.5
});
self.direction = Math.random() > 0.5 ? 1 : -1;
fishGraphics.scale.x = self.direction;
self.update = function () {
self.lastY = self.y;
self.x += self.speed * self.direction;
// Wrap around screen
if (self.x < -100 && self.direction < 0) {
self.x = 2148;
} else if (self.x > 2148 && self.direction > 0) {
self.x = -100;
}
};
return self;
});
var Obstacle = Container.expand(function (speed) {
var self = Container.call(this);
var obstacleGraphics = self.attachAsset('obstacle', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = speed || 1;
self.damage = 10;
self.lastY = 0;
self.update = function () {
self.lastY = self.y;
self.y += self.speed;
// Remove if off screen
if (self.y > 2832) {
self.shouldRemove = true;
}
};
return self;
});
var PowerUp = Container.expand(function () {
var self = Container.call(this);
var powerupGraphics = self.attachAsset('powerUp', {
anchorX: 0.5,
anchorY: 0.5
});
self.type = Math.random() > 0.5 ? 'speed' : 'invincibility';
self.speed = 1;
self.lastY = 0;
self.update = function () {
self.lastY = self.y;
self.y += self.speed;
// Simple animation
self.rotation += 0.02;
// Remove if off screen
if (self.y > 2832) {
self.shouldRemove = true;
}
};
return self;
});
// Set ocean blue background
var Shark = Container.expand(function () {
var self = Container.call(this);
var sharkGraphics = self.attachAsset('shark', {
anchorX: 0.5,
anchorY: 0.5
});
self.size = 1;
self.speed = 5;
self.health = 100;
self.oxygen = 100;
self.score = 0;
self.lastX = 0;
self.lastY = 0;
self.facing = 1; // 1 = right, -1 = left
self.update = function () {
self.lastX = self.x;
self.lastY = self.y;
// Reduce oxygen when deep in the ocean (upper part of the screen is surface)
if (self.y > 1000) {
self.oxygen -= 0.2;
if (self.oxygen <= 0) {
self.health -= 0.5;
}
} else {
// Replenish oxygen near the surface
self.oxygen = Math.min(100, self.oxygen + 0.5);
}
// Update scale based on size
self.scale.set(self.size);
// Flip shark graphic based on direction
if (self.facing === 1) {
sharkGraphics.scale.x = Math.abs(sharkGraphics.scale.x);
} else {
sharkGraphics.scale.x = -Math.abs(sharkGraphics.scale.x);
}
};
self.grow = function (amount) {
self.size += amount;
self.score += Math.round(amount * 10);
};
self.takeDamage = function (amount) {
self.health -= amount;
LK.getSound('damage').play();
LK.effects.flashObject(self, 0xff0000, 500);
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
// Set ocean blue background
game.setBackgroundColor(0x006994);
// Game variables
var shark;
var fishes = [];
var obstacles = [];
var powerUps = [];
var lastIntersectingFish = {};
var lastIntersectingObstacle = {};
var lastIntersectingPowerUp = {};
var gameActive = true;
var powerUpActive = false;
var powerUpTimer = 0;
var spawnTimer = 0;
var difficultyTimer = 0;
var difficulty = 1;
var maxFishes = 10;
var dragNode = null;
// UI elements
var scoreText = new Text2('Score: 0', {
size: 60,
fill: 0xFFFFFF
});
scoreText.anchor.set(0, 0);
LK.gui.topLeft.addChild(scoreText);
scoreText.x = 120;
scoreText.y = 20;
var healthBarBg = LK.getAsset('healthBg', {
anchorX: 0,
anchorY: 0.5,
x: 120,
y: 100
});
LK.gui.topLeft.addChild(healthBarBg);
var healthBarFill = LK.getAsset('healthBar', {
anchorX: 0,
anchorY: 0.5,
x: 120,
y: 100
});
LK.gui.topLeft.addChild(healthBarFill);
var oxygenBarBg = LK.getAsset('oxygenBg', {
anchorX: 0,
anchorY: 0.5,
x: 120,
y: 150
});
LK.gui.topLeft.addChild(oxygenBarBg);
var oxygenBarFill = LK.getAsset('oxygen', {
anchorX: 0,
anchorY: 0.5,
x: 120,
y: 150
});
LK.gui.topLeft.addChild(oxygenBarFill);
// Initialize shark
function initGame() {
// Create shark
shark = new Shark();
shark.x = 2048 / 2;
shark.y = 2732 / 2;
game.addChild(shark);
// Reset variables
fishes = [];
obstacles = [];
powerUps = [];
lastIntersectingFish = {};
lastIntersectingObstacle = {};
lastIntersectingPowerUp = {};
gameActive = true;
powerUpActive = false;
powerUpTimer = 0;
spawnTimer = 0;
difficultyTimer = 0;
difficulty = 1;
LK.setScore(0);
// Spawn initial fish
for (var i = 0; i < 5; i++) {
spawnFish();
}
}
// Spawn a new fish
function spawnFish() {
var fishType;
var rand = Math.random();
if (rand < 0.05) {
fishType = 'goldenFish';
} else if (rand < 0.2) {
fishType = 'largeFish';
} else if (rand < 0.5) {
fishType = 'mediumFish';
} else {
fishType = 'smallFish';
}
var speed = 1 + Math.random() * 2 * difficulty;
var fish = new Fish(fishType, speed);
// Position fish at random height, but from the side
fish.y = 200 + Math.random() * 2300;
if (Math.random() > 0.5) {
fish.x = -50;
fish.direction = 1;
} else {
fish.x = 2098;
fish.direction = -1;
}
fishes.push(fish);
game.addChild(fish);
}
// Spawn an obstacle
function spawnObstacle() {
var obstacle = new Obstacle(1 + Math.random() * difficulty);
obstacle.x = 100 + Math.random() * 1848;
obstacle.y = -100;
obstacles.push(obstacle);
game.addChild(obstacle);
}
// Spawn a power-up
function spawnPowerUp() {
var powerUp = new PowerUp();
powerUp.x = 100 + Math.random() * 1848;
powerUp.y = -100;
powerUps.push(powerUp);
game.addChild(powerUp);
}
// Handle shark collision with fish
function handleFishCollision(fish, index) {
// Check if shark can eat this fish
if (shark.size >= fish.danger) {
// Shark eats fish
shark.grow(fish.value * 0.05);
// Reduce width and height by 20 when eating golden fish
if (fish.type === 'goldenFish') {
var sharkGraphics = shark.getChildAt(0);
sharkGraphics.width -= 20;
sharkGraphics.height -= 20;
}
LK.setScore(shark.score);
scoreText.setText("Score: " + shark.score);
LK.getSound('eat').play();
// Remove fish
fish.destroy();
fishes.splice(index, 1);
} else {
// Fish damages shark
shark.takeDamage(5 * fish.danger);
}
}
// Game events
game.move = function (x, y, obj) {
if (!gameActive || !dragNode) return;
// Move shark to touch position
dragNode.x = x;
dragNode.y = y;
// Update shark direction based on movement
if (dragNode.x > dragNode.lastX) {
dragNode.facing = 1;
} else if (dragNode.x < dragNode.lastX) {
dragNode.facing = -1;
}
};
game.down = function (x, y, obj) {
if (!gameActive) return;
dragNode = shark;
game.move(x, y, obj);
};
game.up = function (x, y, obj) {
dragNode = null;
};
// Main game update
game.update = function () {
if (!gameActive) return;
// Increase difficulty over time
difficultyTimer++;
if (difficultyTimer >= 600) {
// Every 10 seconds
difficulty += 0.1;
maxFishes = Math.min(20, maxFishes + 1);
difficultyTimer = 0;
}
// Update shark
shark.update();
// Update UI
healthBarFill.width = shark.health / 100 * 200;
oxygenBarFill.width = shark.oxygen / 100 * 200;
// Check if game over
if (shark.health <= 0) {
gameActive = false;
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
return;
}
// Spawn new entities
spawnTimer++;
if (spawnTimer >= 60) {
// Every second
if (fishes.length < maxFishes) {
spawnFish();
}
if (Math.random() < 0.2 * difficulty) {
spawnObstacle();
}
if (Math.random() < 0.05) {
spawnPowerUp();
}
spawnTimer = 0;
}
// Handle power-up timer
if (powerUpActive) {
powerUpTimer--;
if (powerUpTimer <= 0) {
powerUpActive = false;
shark.speed = 5;
}
}
// Update fishes and check collisions
for (var i = fishes.length - 1; i >= 0; i--) {
var fish = fishes[i];
fish.update();
var id = "fish" + i;
var isIntersecting = shark.intersects(fish);
// Check collision (transition from not intersecting to intersecting)
if (!lastIntersectingFish[id] && isIntersecting) {
handleFishCollision(fish, i);
continue; // Skip further processing if fish was eaten
}
lastIntersectingFish[id] = isIntersecting;
}
// Update obstacles and check collisions
for (var i = obstacles.length - 1; i >= 0; i--) {
var obstacle = obstacles[i];
obstacle.update();
if (obstacle.shouldRemove) {
obstacle.destroy();
obstacles.splice(i, 1);
continue;
}
var id = "obstacle" + i;
var isIntersecting = shark.intersects(obstacle);
// Check collision (transition from not intersecting to intersecting)
if (!lastIntersectingObstacle[id] && isIntersecting) {
if (!powerUpActive || powerUpActive && shark.type !== 'invincibility') {
shark.takeDamage(obstacle.damage);
}
}
lastIntersectingObstacle[id] = isIntersecting;
}
// Update power-ups and check collisions
for (var i = powerUps.length - 1; i >= 0; i--) {
var powerUp = powerUps[i];
powerUp.update();
if (powerUp.shouldRemove) {
powerUp.destroy();
powerUps.splice(i, 1);
continue;
}
var id = "powerUp" + i;
var isIntersecting = shark.intersects(powerUp);
// Check collision (transition from not intersecting to intersecting)
if (!lastIntersectingPowerUp[id] && isIntersecting) {
// Apply power-up effect
powerUpActive = true;
powerUpTimer = 300; // 5 seconds
if (powerUp.type === 'speed') {
shark.speed = 10;
}
// Increase health by 15 when collecting any power-up
shark.health = Math.min(100, shark.health + 15);
LK.getSound('powerup').play();
LK.effects.flashObject(shark, 0x00ffff, 500);
// Remove power-up
powerUp.destroy();
powerUps.splice(i, 1);
}
lastIntersectingPowerUp[id] = isIntersecting;
}
};
// Initialize the game
initGame(); ===================================================================
--- original.js
+++ change.js
@@ -266,13 +266,13 @@
// Check if shark can eat this fish
if (shark.size >= fish.danger) {
// Shark eats fish
shark.grow(fish.value * 0.05);
- // Reduce width and height by 30 when eating golden fish
+ // Reduce width and height by 20 when eating golden fish
if (fish.type === 'goldenFish') {
var sharkGraphics = shark.getChildAt(0);
- sharkGraphics.width -= 30;
- sharkGraphics.height -= 30;
+ sharkGraphics.width -= 20;
+ sharkGraphics.height -= 20;
}
LK.setScore(shark.score);
scoreText.setText("Score: " + shark.score);
LK.getSound('eat').play();
realistic pixel shark. In-Game asset. 2d. High contrast. No shadows
realistic pixel gold fish. In-Game asset. 2d. High contrast. No shadows
realistic pixel sea turtle. In-Game asset. 2d. High contrast. No shadows
realistic pixel horizontal jellyfish. In-Game asset. 2d. High contrast. No shadows
Realistic pixel horizontal dolphin. In-Game asset. 2d. High contrast. No shadows
realistic vertical meteor. In-Game asset. 2d. High contrast. No shadows
realistic pixel diver. In-Game asset. 2d. High contrast. No shadows