User prompt
Haz que cuando falle un asset reproduzca un sonido
User prompt
Haz que cuando falle reproduzca un sonido
User prompt
Arregla que cuando deja de comer desaparece
User prompt
Arregla que si se mueve mientras come desaparece
User prompt
Haz que cuando coma una naranja cambie de sprite
User prompt
Haz que se diferencie cuando esta caminando a la izquierda o la derecha
User prompt
Ahora haz el código para que cambie de sprite mientras camima o se queda quieto
Code edit (1 edits merged)
Please save this source code
User prompt
Blue Cat Orange Chase
Initial prompt
Un gato azul tiene que persiguir y comer mandarinas
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Cat = Container.expand(function () {
var self = Container.call(this);
var catIdleGraphics = self.attachAsset('cat_idle', {
anchorX: 0.5,
anchorY: 1.0
});
var catWalkGraphics = self.attachAsset('cat_walk', {
anchorX: 0.5,
anchorY: 1.0
});
catWalkGraphics.visible = false;
var catEatGraphics = self.attachAsset('cat_eat', {
anchorX: 0.5,
anchorY: 1.0
});
catEatGraphics.visible = false;
self.targetX = 1024; // Center of screen
self.speed = 15;
self.isMoving = false;
self.movementThreshold = 2;
self.facingLeft = false; // Track direction cat is facing
self.isEating = false;
self.eatingTimer = 0;
self.startEating = function () {
self.isEating = true;
self.eatingTimer = 30; // Show eating sprite for 30 frames (0.5 seconds)
// Hide other sprites and show eating sprite
catIdleGraphics.visible = false;
catWalkGraphics.visible = false;
catEatGraphics.visible = true;
// Apply direction flip to eating sprite
if (self.facingLeft) {
catEatGraphics.scaleX = -1;
} else {
catEatGraphics.scaleX = 1;
}
};
self.update = function () {
// Smooth movement towards target position
var diff = self.targetX - self.x;
var wasMoving = self.isMoving;
var wasFacingLeft = self.facingLeft;
if (Math.abs(diff) > 5) {
self.x += diff * 0.2;
self.isMoving = Math.abs(diff) > self.movementThreshold;
// Update direction based on movement
if (diff < 0) {
self.facingLeft = true;
} else if (diff > 0) {
self.facingLeft = false;
}
} else {
self.x = self.targetX;
self.isMoving = false;
}
// Keep cat within screen bounds
var halfWidth = catIdleGraphics.width / 2;
if (self.x < halfWidth) {
self.x = halfWidth;
self.targetX = halfWidth;
}
if (self.x > 2048 - halfWidth) {
self.x = 2048 - halfWidth;
self.targetX = 2048 - halfWidth;
}
// Handle eating animation timer
if (self.isEating) {
self.eatingTimer--;
if (self.eatingTimer <= 0) {
self.isEating = false;
catEatGraphics.visible = false;
}
}
// Switch sprites based on movement state or direction change (only if not eating)
if (!self.isEating && (self.isMoving !== wasMoving || self.facingLeft !== wasFacingLeft)) {
if (self.isMoving) {
catIdleGraphics.visible = false;
catWalkGraphics.visible = true;
catEatGraphics.visible = false;
} else {
catIdleGraphics.visible = true;
catWalkGraphics.visible = false;
catEatGraphics.visible = false;
}
// Flip sprites based on direction
if (self.facingLeft) {
catIdleGraphics.scaleX = -1;
catWalkGraphics.scaleX = -1;
} else {
catIdleGraphics.scaleX = 1;
catWalkGraphics.scaleX = 1;
}
}
// Update eating sprite direction if direction changed while eating
if (self.isEating && self.facingLeft !== wasFacingLeft) {
if (self.facingLeft) {
catEatGraphics.scaleX = -1;
} else {
catEatGraphics.scaleX = 1;
}
}
};
return self;
});
var Orange = Container.expand(function () {
var self = Container.call(this);
var orangeGraphics = self.attachAsset('orange', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 8;
self.lastY = 0;
self.caught = false;
self.update = function () {
if (!self.caught) {
self.y += self.speed;
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87CEEB
});
/****
* Game Code
****/
var cat;
var oranges = [];
var gameSpeed = 1;
var orangeSpawnRate = 60; // frames between spawns
var frameCount = 0;
var lives = 3;
// Create score display
var scoreTxt = new Text2('Score: 0', {
size: 80,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Create lives display
var livesTxt = new Text2('Lives: 3', {
size: 60,
fill: 0xFFFFFF
});
livesTxt.anchor.set(1, 0);
livesTxt.y = 100;
LK.gui.topRight.addChild(livesTxt);
// Create the cat
cat = game.addChild(new Cat());
cat.x = 1024; // Center horizontally
cat.y = 2600; // Near bottom of screen
// Handle touch/mouse input
function handleMove(x, y, obj) {
if (cat) {
cat.targetX = x;
}
}
game.move = handleMove;
game.down = function (x, y, obj) {
handleMove(x, y, obj);
};
// Spawn oranges
function spawnOrange() {
var orange = new Orange();
orange.x = Math.random() * (2048 - 160) + 80; // Random x position within bounds
orange.y = -40; // Start above screen
orange.lastY = orange.y;
orange.speed = 6 + gameSpeed * 2; // Increase speed with game progression
oranges.push(orange);
game.addChild(orange);
}
// Update score display
function updateScore() {
scoreTxt.setText('Score: ' + LK.getScore());
}
// Update lives display
function updateLives() {
livesTxt.setText('Lives: ' + lives);
}
game.update = function () {
frameCount++;
// Spawn oranges
if (frameCount % Math.max(20, orangeSpawnRate - Math.floor(LK.getScore() / 5)) === 0) {
spawnOrange();
}
// Increase game speed over time
if (frameCount % 600 === 0) {
// Every 10 seconds at 60fps
gameSpeed += 0.2;
}
// Update oranges
for (var i = oranges.length - 1; i >= 0; i--) {
var orange = oranges[i];
// Check if orange went off screen (missed)
if (orange.lastY < 2732 && orange.y >= 2732 && !orange.caught) {
// Orange hit the ground - lose a life
lives--;
updateLives();
if (lives <= 0) {
LK.showGameOver();
return;
}
orange.destroy();
oranges.splice(i, 1);
continue;
}
// Check collision with cat
if (!orange.caught && orange.intersects(cat)) {
// Orange caught!
orange.caught = true;
LK.setScore(LK.getScore() + 1);
updateScore();
// Play catch sound
LK.getSound('catch').play();
// Flash effect on cat
LK.effects.flashObject(cat, 0xFFFFFF, 200);
// Trigger eating animation
cat.startEating();
// Animate orange being caught
tween(orange, {
scaleX: 0,
scaleY: 0,
alpha: 0
}, {
duration: 300,
easing: tween.easeOut,
onFinish: function onFinish() {
orange.destroy();
}
});
oranges.splice(i, 1);
continue;
}
orange.lastY = orange.y;
}
// Check win condition (optional - high score achievement)
if (LK.getScore() >= 100) {
LK.showYouWin();
}
};
// Initialize displays
updateScore();
updateLives(); ===================================================================
--- original.js
+++ change.js
@@ -93,12 +93,18 @@
// Flip sprites based on direction
if (self.facingLeft) {
catIdleGraphics.scaleX = -1;
catWalkGraphics.scaleX = -1;
- catEatGraphics.scaleX = -1;
} else {
catIdleGraphics.scaleX = 1;
catWalkGraphics.scaleX = 1;
+ }
+ }
+ // Update eating sprite direction if direction changed while eating
+ if (self.isEating && self.facingLeft !== wasFacingLeft) {
+ if (self.facingLeft) {
+ catEatGraphics.scaleX = -1;
+ } else {
catEatGraphics.scaleX = 1;
}
}
};
Haz un sprite de un gato azul sin pupilas con la boca abierta mirando arriba. In-Game asset. 2d. High contrast. No shadows
Una naranja cute. In-Game asset. 2d. High contrast. No shadows
Un corazón roto triste cute. In-Game asset. 2d. High contrast. No shadows
Un gato azul sin pupilas preocupado. In-Game asset. 2d. High contrast. No shadows
Un gato azul sin pupilas preocupado caminando. In-Game asset. 2d. High contrast. No shadows
Naranja cute preocupada. In-Game asset. 2d. High contrast. No shadows
Un bosque quemándose D:. In-Game asset. 2d. High contrast. No shadows