User prompt
when i taked all eggs, come back aga
User prompt
dont finish after take all eggs ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
save best score
User prompt
when i taked all chicken eggs, come back in few minutes later. ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
dont finish after take 8 eggs
User prompt
when i take an eggs, again come in few minutes.
User prompt
more eggs and chicken
User prompt
poppy follow more fast left click
User prompt
poppy follow left click
User prompt
Click on the poppy to follow
User prompt
every eggs and chicken in the box
User prompt
when i am around the eggs and take it, farmer chase me.
User prompt
when i am around the eggs, let the farmer chase me.
User prompt
when i around farmer. He is follow me.
User prompt
eggs in the house.
User prompt
Please fix the bug: 'TypeError: tween.to is not a function' in or related to this line: 'tween.to(chicken, 0.5, {' Line Number: 280 ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Generate the first version of the source code of my game: Sneaky Weasel: Egg Heist.
User prompt
Sneaky Weasel: Egg Heist
Initial prompt
I am a weasel. I will try to sneak into a chicken coop that the farmer is guarding. I will steal the eggs from under the chickens and take them out of the chicken coop. I will earn 10 points for each egg I take out. The game will end when all the eggs are out. If I get caught by the farmer, I will die. If I win, I will eat the eggs with pleasure.
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Chicken = Container.expand(function () {
var self = Container.call(this);
var chickenGraphics = self.attachAsset('chicken', {
anchorX: 0.5,
anchorY: 0.5
});
self.hasEgg = true;
self.egg = null;
return self;
});
var Egg = Container.expand(function () {
var self = Container.call(this);
var eggGraphics = self.attachAsset('egg', {
anchorX: 0.5,
anchorY: 0.5
});
self.isCollected = false;
self.isDelivered = false;
self.underChicken = null;
return self;
});
var Farmer = Container.expand(function () {
var self = Container.call(this);
var farmerGraphics = self.attachAsset('farmer', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 3;
self.direction = 1;
self.patrolPoints = [];
self.currentPoint = 0;
self.lastX = 0;
self.lastY = 0;
self.update = function () {
// Store last position
self.lastX = self.x;
self.lastY = self.y;
// Check if weasel has an egg and if farmer should chase
if (weasel && weasel.hasEgg) {
// Chase the weasel at a faster speed
var chaseSpeed = self.speed * 1.5;
var dx = weasel.x - self.x;
var dy = weasel.y - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > chaseSpeed) {
self.x += dx / distance * chaseSpeed;
self.y += dy / distance * chaseSpeed;
}
} else if (self.patrolPoints.length > 0) {
var targetPoint = self.patrolPoints[self.currentPoint];
// Move toward target point
var dx = targetPoint.x - self.x;
var dy = targetPoint.y - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > self.speed) {
self.x += dx / distance * self.speed;
self.y += dy / distance * self.speed;
} else {
// Point reached, move to next point
self.currentPoint = (self.currentPoint + 1) % self.patrolPoints.length;
}
// Randomly change direction occasionally
if (Math.random() < 0.005) {
self.currentPoint = Math.floor(Math.random() * self.patrolPoints.length);
}
}
};
return self;
});
var Poppy = Container.expand(function () {
var self = Container.call(this);
var poppyGraphics = self.attachAsset('egg', {
anchorX: 0.5,
anchorY: 0.5,
tint: 0xFF0000 // Red tint to make it look like a poppy
});
self.isTarget = false;
self.down = function (x, y, obj) {
// Set this poppy as the follow target
if (!self.isTarget) {
self.isTarget = true;
// Visual feedback
poppyGraphics.scale.set(1.2, 1.2);
// Alert weasel to follow this poppy
if (weasel) {
weasel.followTarget = self;
}
LK.getSound('pickup').play();
} else {
// Unset as target
self.isTarget = false;
poppyGraphics.scale.set(1.0, 1.0);
if (weasel) {
weasel.followTarget = null;
}
}
};
return self;
});
// Set farm background color
var Weasel = Container.expand(function () {
var self = Container.call(this);
var weaselGraphics = self.attachAsset('weasel', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 5;
self.hasEgg = false;
self.carryingEgg = null;
self.followTarget = null;
self.lastX = 0;
self.lastY = 0;
self.update = function () {
self.lastX = self.x;
self.lastY = self.y;
// Follow target if one exists and not being dragged
if (self.followTarget && !dragNode) {
var dx = self.followTarget.x - self.x;
var dy = self.followTarget.y - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > 10) {
self.x += dx / distance * self.speed;
self.y += dy / distance * self.speed;
}
}
// Alert nearby chickens and farmer when near eggs
if (eggs && chickens) {
for (var i = 0; i < eggs.length; i++) {
var egg = eggs[i];
if (!egg.isCollected && egg.underChicken) {
// Calculate distance to egg
var dx = self.x - egg.x;
var dy = self.y - egg.y;
var distance = Math.sqrt(dx * dx + dy * dy);
// If close to an egg, make the chicken flutter
if (distance < 150 && egg.underChicken) {
// Make chicken flutter by adding a slight movement
var chicken = egg.underChicken;
if (LK.ticks % 10 === 0) {
chicken.x += (Math.random() - 0.5) * 5;
chicken.y += (Math.random() - 0.5) * 5;
}
}
}
}
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
// Set farm background color
game.setBackgroundColor(0x7CFC00);
// Game variables
var gameWidth = 2048;
var gameHeight = 2732;
var score = 0;
var weasel;
var farmer;
var chickens = [];
var eggs = [];
var coop;
var exit;
var poppy;
var dragNode = null;
var isGameOver = false;
var lastIntersectingFarmer = false;
var totalEggs = 8;
var eggsDelivered = 0;
// Create chicken coop area
coop = game.addChild(LK.getAsset('coop', {
anchorX: 0.5,
anchorY: 0.5,
x: gameWidth / 2,
y: gameHeight / 2,
alpha: 0.3
}));
// Create exit at bottom of screen
exit = game.addChild(LK.getAsset('exit', {
anchorX: 0.5,
anchorY: 0.5,
x: gameWidth / 2,
y: gameHeight - 100
}));
// Create score text
var scoreTxt = new Text2('Eggs: 0/' + totalEggs, {
size: 80,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Create the player character (weasel)
weasel = new Weasel();
weasel.x = gameWidth / 2;
weasel.y = gameHeight - 200;
weasel.lastX = weasel.x;
weasel.lastY = weasel.y;
game.addChild(weasel);
// Create the farmer
farmer = new Farmer();
farmer.x = gameWidth / 4;
farmer.y = gameHeight / 3;
farmer.lastX = farmer.x;
farmer.lastY = farmer.y;
game.addChild(farmer);
// Create the poppy (target for weasel to follow)
poppy = new Poppy();
poppy.x = gameWidth / 2 + 300;
poppy.y = gameHeight / 2 - 200;
game.addChild(poppy);
// Set up farmer patrol points
farmer.patrolPoints = [{
x: gameWidth / 4,
y: gameHeight / 3
}, {
x: 3 * gameWidth / 4,
y: gameHeight / 3
}, {
x: 3 * gameWidth / 4,
y: 2 * gameHeight / 3
}, {
x: gameWidth / 4,
y: 2 * gameHeight / 3
}];
// Create chickens and eggs
for (var i = 0; i < totalEggs; i++) {
var chicken = new Chicken();
// Position chickens in a grid-like pattern
var row = Math.floor(i / 4);
var col = i % 4;
chicken.x = (col + 1) * (gameWidth / 5);
chicken.y = (row + 1) * (gameHeight / 4);
game.addChild(chicken);
chickens.push(chicken);
// Create egg under chicken
var egg = new Egg();
egg.x = chicken.x;
egg.y = chicken.y;
egg.underChicken = chicken;
chicken.egg = egg;
// Add egg to the game so it's visible
game.addChild(egg);
eggs.push(egg);
}
// Drag handling functions
function handleMove(x, y, obj) {
if (dragNode && !isGameOver) {
dragNode.x = x;
dragNode.y = y;
// Check if weasel is carrying an egg
if (weasel.hasEgg && weasel.carryingEgg) {
weasel.carryingEgg.x = weasel.x;
weasel.carryingEgg.y = weasel.y - 30;
}
}
}
game.move = handleMove;
game.down = function (x, y, obj) {
if (!isGameOver) {
dragNode = weasel;
handleMove(x, y, obj);
}
};
game.up = function (x, y, obj) {
// Only release dragNode if it exists
if (dragNode) {
dragNode = null;
}
};
// Main game update logic
game.update = function () {
// Skip updates if game is over
if (isGameOver) return;
// Update farmer and weasel positions
farmer.update();
weasel.update();
// Check for farmer collision
var intersectingFarmer = weasel.intersects(farmer);
if (!lastIntersectingFarmer && intersectingFarmer) {
// Weasel got caught by farmer
isGameOver = true;
LK.getSound('caught').play();
LK.effects.flashScreen(0xFF0000, 1000);
LK.showGameOver();
}
lastIntersectingFarmer = intersectingFarmer;
// Check for egg pickup
for (var i = 0; i < eggs.length; i++) {
var egg = eggs[i];
if (!egg.isCollected && egg.underChicken && weasel.intersects(egg.underChicken)) {
// Weasel is near a chicken with an egg
if (!weasel.hasEgg) {
// Pick up the egg
egg.isCollected = true;
egg.underChicken.hasEgg = false;
weasel.hasEgg = true;
weasel.carryingEgg = egg;
game.addChild(egg); // Move egg to top layer
LK.getSound('pickup').play();
// When egg is taken, immediately alert the farmer by increasing his speed temporarily
var oldSpeed = farmer.speed;
farmer.speed = farmer.speed * 2;
LK.setTimeout(function () {
farmer.speed = oldSpeed;
}, 3000);
}
}
}
// Check for egg delivery
if (weasel.hasEgg && weasel.carryingEgg && weasel.intersects(exit)) {
// Deliver the egg
weasel.carryingEgg.isDelivered = true;
weasel.hasEgg = false;
// Remove the delivered egg
if (weasel.carryingEgg.parent) {
weasel.carryingEgg.parent.removeChild(weasel.carryingEgg);
}
eggsDelivered++;
score += 10;
LK.setScore(score);
scoreTxt.setText("Eggs: " + eggsDelivered + "/" + totalEggs);
LK.getSound('success').play();
// Check for win condition
if (eggsDelivered >= totalEggs) {
isGameOver = true;
LK.effects.flashScreen(0x00FF00, 1000);
LK.showYouWin();
}
weasel.carryingEgg = null;
}
// Make chickens occasionally look around (random movement)
if (LK.ticks % 60 === 0) {
for (var j = 0; j < chickens.length; j++) {
if (Math.random() < 0.3) {
var chicken = chickens[j];
var randomOffsetX = (Math.random() - 0.5) * 20;
var randomOffsetY = (Math.random() - 0.5) * 20;
tween(chicken, {
x: chicken.x + randomOffsetX,
y: chicken.y + randomOffsetY
}, {
duration: 500
});
}
}
}
}; ===================================================================
--- original.js
+++ change.js
@@ -74,8 +74,38 @@
}
};
return self;
});
+var Poppy = Container.expand(function () {
+ var self = Container.call(this);
+ var poppyGraphics = self.attachAsset('egg', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ tint: 0xFF0000 // Red tint to make it look like a poppy
+ });
+ self.isTarget = false;
+ self.down = function (x, y, obj) {
+ // Set this poppy as the follow target
+ if (!self.isTarget) {
+ self.isTarget = true;
+ // Visual feedback
+ poppyGraphics.scale.set(1.2, 1.2);
+ // Alert weasel to follow this poppy
+ if (weasel) {
+ weasel.followTarget = self;
+ }
+ LK.getSound('pickup').play();
+ } else {
+ // Unset as target
+ self.isTarget = false;
+ poppyGraphics.scale.set(1.0, 1.0);
+ if (weasel) {
+ weasel.followTarget = null;
+ }
+ }
+ };
+ return self;
+});
// Set farm background color
var Weasel = Container.expand(function () {
var self = Container.call(this);
var weaselGraphics = self.attachAsset('weasel', {
@@ -84,13 +114,24 @@
});
self.speed = 5;
self.hasEgg = false;
self.carryingEgg = null;
+ self.followTarget = null;
self.lastX = 0;
self.lastY = 0;
self.update = function () {
self.lastX = self.x;
self.lastY = self.y;
+ // Follow target if one exists and not being dragged
+ if (self.followTarget && !dragNode) {
+ var dx = self.followTarget.x - self.x;
+ var dy = self.followTarget.y - self.y;
+ var distance = Math.sqrt(dx * dx + dy * dy);
+ if (distance > 10) {
+ self.x += dx / distance * self.speed;
+ self.y += dy / distance * self.speed;
+ }
+ }
// Alert nearby chickens and farmer when near eggs
if (eggs && chickens) {
for (var i = 0; i < eggs.length; i++) {
var egg = eggs[i];
@@ -136,8 +177,9 @@
var chickens = [];
var eggs = [];
var coop;
var exit;
+var poppy;
var dragNode = null;
var isGameOver = false;
var lastIntersectingFarmer = false;
var totalEggs = 8;
@@ -147,10 +189,8 @@
anchorX: 0.5,
anchorY: 0.5,
x: gameWidth / 2,
y: gameHeight / 2,
- width: gameWidth * 0.8,
- height: gameHeight * 0.6,
alpha: 0.3
}));
// Create exit at bottom of screen
exit = game.addChild(LK.getAsset('exit', {
@@ -179,8 +219,13 @@
farmer.y = gameHeight / 3;
farmer.lastX = farmer.x;
farmer.lastY = farmer.y;
game.addChild(farmer);
+// Create the poppy (target for weasel to follow)
+poppy = new Poppy();
+poppy.x = gameWidth / 2 + 300;
+poppy.y = gameHeight / 2 - 200;
+game.addChild(poppy);
// Set up farmer patrol points
farmer.patrolPoints = [{
x: gameWidth / 4,
y: gameHeight / 3
@@ -196,27 +241,19 @@
}];
// Create chickens and eggs
for (var i = 0; i < totalEggs; i++) {
var chicken = new Chicken();
- // Position chickens in a grid-like pattern within the coop
+ // Position chickens in a grid-like pattern
var row = Math.floor(i / 4);
var col = i % 4;
- // Calculate coop boundaries
- var coopWidth = coop.width;
- var coopHeight = coop.height;
- var coopLeft = coop.x - coopWidth / 2;
- var coopTop = coop.y - coopHeight / 2;
- // Position chickens inside the coop with padding
- var paddingX = coopWidth / 6;
- var paddingY = coopHeight / 5;
- chicken.x = coopLeft + paddingX + col * (coopWidth - 2 * paddingX) / 3;
- chicken.y = coopTop + paddingY + row * (coopHeight - 2 * paddingY) / 2;
+ chicken.x = (col + 1) * (gameWidth / 5);
+ chicken.y = (row + 1) * (gameHeight / 4);
game.addChild(chicken);
chickens.push(chicken);
// Create egg under chicken
var egg = new Egg();
egg.x = chicken.x;
- egg.y = chicken.y + 10; // Position egg slightly below chicken
+ egg.y = chicken.y;
egg.underChicken = chicken;
chicken.egg = egg;
// Add egg to the game so it's visible
game.addChild(egg);
@@ -241,9 +278,12 @@
handleMove(x, y, obj);
}
};
game.up = function (x, y, obj) {
- dragNode = null;
+ // Only release dragNode if it exists
+ if (dragNode) {
+ dragNode = null;
+ }
};
// Main game update logic
game.update = function () {
// Skip updates if game is over
@@ -311,11 +351,13 @@
if (Math.random() < 0.3) {
var chicken = chickens[j];
var randomOffsetX = (Math.random() - 0.5) * 20;
var randomOffsetY = (Math.random() - 0.5) * 20;
- tween.to(chicken, 0.5, {
+ tween(chicken, {
x: chicken.x + randomOffsetX,
y: chicken.y + randomOffsetY
+ }, {
+ duration: 500
});
}
}
}
its a chicken. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
egg. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
angry farmer with all body. In-Game asset. 2d. High contrast. No shadows
without egg
hole. In-Game asset. 2d. High contrast. No shadows
Çit. In-Game asset. 2d. High contrast. No shadows