User prompt
Make it play the music Music on start and loop it
User prompt
Make the volume of the sizzle and burn 5
User prompt
Make the sounds play like the Burn and the Sizzle
User prompt
Please fix the bug: 'ReferenceError: Can't find variable: leaderboard' in or related to this line: 'leaderboard.submit({' Line Number: 102
User prompt
Please fix the bug: 'ReferenceError: Can't find variable: leaderboard' in or related to this line: 'leaderboard.submit({' Line Number: 102
User prompt
Please fix the bug: 'ReferenceError: Can't find variable: leaderboard' in or related to this line: 'leaderboard.submit({' Line Number: 102
User prompt
Please fix the bug: 'ReferenceError: Can't find variable: leaderboard' in or related to this line: 'leaderboard.submit({' Line Number: 102
User prompt
Add a public online realtime leaderboard with most cooked burger or like the points when you swipe
User prompt
Please fix the bug: 'TypeError: LK.now is not a function. (In 'LK.now()', 'LK.now' is undefined)' in or related to this line: 'if (patties.length === 0 && LK.now() - lastPattyTime > pattySpawnDelay) {' Line Number: 216
Code edit (1 edits merged)
Please save this source code
User prompt
Perfect Patty
Initial prompt
Make a patty cooking game where you have the patty on the stove for 2 seconds and it cooks and then if you wait 3 more seconds it burns and disappears but if it’s cooked you can tap the patty and it will go onto a bun and stop cooking
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
// Patty class
var Patty = Container.expand(function () {
var self = Container.call(this);
// States: 'raw', 'perfect', 'burnt', 'served'
self.state = 'raw';
self.cookTime = 0; // ms since placed on stove
self.cooked = false; // true if served
self.burnt = false;
self.served = false;
// Attach raw patty asset
self.pattyAsset = self.attachAsset('patty_raw', {
anchorX: 0.5,
anchorY: 0.5
});
// For animation
self.yOffset = 0;
// Called every tick
self.update = function () {
if (self.served || self.burnt) return;
self.cookTime += 1000 / 60; // ~16.67ms per tick
// Change state at 2s (perfect), 5s (burnt)
if (self.cookTime >= 2000 && self.state === 'raw') {
self.state = 'perfect';
self.pattyAsset.destroy();
self.pattyAsset = self.attachAsset('patty_perfect', {
anchorX: 0.5,
anchorY: 0.5
});
// Play ding sound
LK.getSound('ding').play();
}
if (self.cookTime >= 5000 && !self.burnt && !self.served) {
self.state = 'burnt';
self.burnt = true;
self.pattyAsset.destroy();
self.pattyAsset = self.attachAsset('patty_burnt', {
anchorX: 0.5,
anchorY: 0.5
});
// Play burn sound
LK.getSound('burn').play();
// Animate fade out and destroy after 0.7s
tween(self, {
alpha: 0
}, {
duration: 700,
onFinish: function onFinish() {
self.destroy();
}
});
}
};
// Called when tapped
self.down = function (x, y, obj) {
if (self.served || self.burnt) return;
if (self.state === 'perfect') {
self.serve();
}
};
// Serve patty to bun
self.serve = function () {
self.served = true;
// Move patty to bun position (animated)
var targetX = bun.x;
var targetY = bun.y - 30;
tween(self, {
x: targetX,
y: targetY
}, {
duration: 350,
easing: tween.cubicOut,
onFinish: function onFinish() {
// Add score
LK.setScore(LK.getScore() + 1);
scoreTxt.setText(LK.getScore());
// Animate patty into bun (scale down)
tween(self, {
scaleX: 0.7,
scaleY: 0.7,
alpha: 0.0
}, {
duration: 400,
onFinish: function onFinish() {
self.destroy();
}
});
}
});
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0xf5f2e6
});
/****
* Game Code
****/
// Sizzle sound
// Plate
// Stove
// Bun
// Patty states: raw, perfect, burnt
// Centered positions
var centerX = 2048 / 2;
var stoveY = 1100;
var bunY = 1700;
var plateY = 1850;
// Add stove
var stove = LK.getAsset('stove', {
anchorX: 0.5,
anchorY: 0.5,
x: centerX,
y: stoveY
});
game.addChild(stove);
// Add plate
var plate = LK.getAsset('plate', {
anchorX: 0.5,
anchorY: 0.5,
x: centerX,
y: plateY
});
game.addChild(plate);
// Add bun
var bun = LK.getAsset('bun', {
anchorX: 0.5,
anchorY: 0.5,
x: centerX,
y: bunY
});
game.addChild(bun);
// Score text
var scoreTxt = new Text2('0', {
size: 140,
fill: 0x7C4A00
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Patty management
var patties = [];
var pattySpawned = false;
var pattySpawnDelay = 600; // ms between patties
var lastPattyTime = -pattySpawnDelay;
// Helper: spawn a new patty on the stove
function spawnPatty() {
var patty = new Patty();
patty.x = centerX;
patty.y = stoveY - 40;
patties.push(patty);
game.addChild(patty);
pattySpawned = true;
lastPattyTime = LK.now();
// Sizzle sound
LK.getSound('sizzle').play();
}
// Remove destroyed patties from array
function cleanPatties() {
for (var i = patties.length - 1; i >= 0; i--) {
if (patties[i].destroyed || patties[i].burnt || patties[i].served) {
patties.splice(i, 1);
}
}
}
// Game tap handler: pass to patty if tapped
game.down = function (x, y, obj) {
// Find topmost patty under tap
for (var i = patties.length - 1; i >= 0; i--) {
var p = patties[i];
if (p.served || p.burnt) continue;
// Hit test: simple bounding box
var px = p.x,
py = p.y;
var w = p.pattyAsset.width,
h = p.pattyAsset.height;
if (x >= px - w / 2 && x <= px + w / 2 && y >= py - h / 2 && y <= py + h / 2) {
p.down(x, y, obj);
break;
}
}
};
// Main update loop
game.update = function () {
// Spawn patty if none present and enough time passed
if (patties.length === 0 && LK.now() - lastPattyTime > pattySpawnDelay) {
spawnPatty();
}
// Update patties
for (var i = 0; i < patties.length; i++) {
if (patties[i].update) patties[i].update();
}
// Remove destroyed patties
cleanPatties();
};
// Show "You Win" if player reaches 20 perfect patties
// (Optional: can be adjusted for difficulty)
game.checkWin = function () {
if (LK.getScore() >= 20) {
LK.showYouWin();
}
};
// Add win check to score update
var oldSetScore = LK.setScore;
LK.setScore = function (val) {
oldSetScore(val);
game.checkWin();
}; ===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,219 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+// Patty class
+var Patty = Container.expand(function () {
+ var self = Container.call(this);
+ // States: 'raw', 'perfect', 'burnt', 'served'
+ self.state = 'raw';
+ self.cookTime = 0; // ms since placed on stove
+ self.cooked = false; // true if served
+ self.burnt = false;
+ self.served = false;
+ // Attach raw patty asset
+ self.pattyAsset = self.attachAsset('patty_raw', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // For animation
+ self.yOffset = 0;
+ // Called every tick
+ self.update = function () {
+ if (self.served || self.burnt) return;
+ self.cookTime += 1000 / 60; // ~16.67ms per tick
+ // Change state at 2s (perfect), 5s (burnt)
+ if (self.cookTime >= 2000 && self.state === 'raw') {
+ self.state = 'perfect';
+ self.pattyAsset.destroy();
+ self.pattyAsset = self.attachAsset('patty_perfect', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Play ding sound
+ LK.getSound('ding').play();
+ }
+ if (self.cookTime >= 5000 && !self.burnt && !self.served) {
+ self.state = 'burnt';
+ self.burnt = true;
+ self.pattyAsset.destroy();
+ self.pattyAsset = self.attachAsset('patty_burnt', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Play burn sound
+ LK.getSound('burn').play();
+ // Animate fade out and destroy after 0.7s
+ tween(self, {
+ alpha: 0
+ }, {
+ duration: 700,
+ onFinish: function onFinish() {
+ self.destroy();
+ }
+ });
+ }
+ };
+ // Called when tapped
+ self.down = function (x, y, obj) {
+ if (self.served || self.burnt) return;
+ if (self.state === 'perfect') {
+ self.serve();
+ }
+ };
+ // Serve patty to bun
+ self.serve = function () {
+ self.served = true;
+ // Move patty to bun position (animated)
+ var targetX = bun.x;
+ var targetY = bun.y - 30;
+ tween(self, {
+ x: targetX,
+ y: targetY
+ }, {
+ duration: 350,
+ easing: tween.cubicOut,
+ onFinish: function onFinish() {
+ // Add score
+ LK.setScore(LK.getScore() + 1);
+ scoreTxt.setText(LK.getScore());
+ // Animate patty into bun (scale down)
+ tween(self, {
+ scaleX: 0.7,
+ scaleY: 0.7,
+ alpha: 0.0
+ }, {
+ duration: 400,
+ onFinish: function onFinish() {
+ self.destroy();
+ }
+ });
+ }
+ });
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0xf5f2e6
+});
+
+/****
+* Game Code
+****/
+// Sizzle sound
+// Plate
+// Stove
+// Bun
+// Patty states: raw, perfect, burnt
+// Centered positions
+var centerX = 2048 / 2;
+var stoveY = 1100;
+var bunY = 1700;
+var plateY = 1850;
+// Add stove
+var stove = LK.getAsset('stove', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: centerX,
+ y: stoveY
+});
+game.addChild(stove);
+// Add plate
+var plate = LK.getAsset('plate', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: centerX,
+ y: plateY
+});
+game.addChild(plate);
+// Add bun
+var bun = LK.getAsset('bun', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: centerX,
+ y: bunY
+});
+game.addChild(bun);
+// Score text
+var scoreTxt = new Text2('0', {
+ size: 140,
+ fill: 0x7C4A00
+});
+scoreTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreTxt);
+// Patty management
+var patties = [];
+var pattySpawned = false;
+var pattySpawnDelay = 600; // ms between patties
+var lastPattyTime = -pattySpawnDelay;
+// Helper: spawn a new patty on the stove
+function spawnPatty() {
+ var patty = new Patty();
+ patty.x = centerX;
+ patty.y = stoveY - 40;
+ patties.push(patty);
+ game.addChild(patty);
+ pattySpawned = true;
+ lastPattyTime = LK.now();
+ // Sizzle sound
+ LK.getSound('sizzle').play();
+}
+// Remove destroyed patties from array
+function cleanPatties() {
+ for (var i = patties.length - 1; i >= 0; i--) {
+ if (patties[i].destroyed || patties[i].burnt || patties[i].served) {
+ patties.splice(i, 1);
+ }
+ }
+}
+// Game tap handler: pass to patty if tapped
+game.down = function (x, y, obj) {
+ // Find topmost patty under tap
+ for (var i = patties.length - 1; i >= 0; i--) {
+ var p = patties[i];
+ if (p.served || p.burnt) continue;
+ // Hit test: simple bounding box
+ var px = p.x,
+ py = p.y;
+ var w = p.pattyAsset.width,
+ h = p.pattyAsset.height;
+ if (x >= px - w / 2 && x <= px + w / 2 && y >= py - h / 2 && y <= py + h / 2) {
+ p.down(x, y, obj);
+ break;
+ }
+ }
+};
+// Main update loop
+game.update = function () {
+ // Spawn patty if none present and enough time passed
+ if (patties.length === 0 && LK.now() - lastPattyTime > pattySpawnDelay) {
+ spawnPatty();
+ }
+ // Update patties
+ for (var i = 0; i < patties.length; i++) {
+ if (patties[i].update) patties[i].update();
+ }
+ // Remove destroyed patties
+ cleanPatties();
+};
+// Show "You Win" if player reaches 20 perfect patties
+// (Optional: can be adjusted for difficulty)
+game.checkWin = function () {
+ if (LK.getScore() >= 20) {
+ LK.showYouWin();
+ }
+};
+// Add win check to score update
+var oldSetScore = LK.setScore;
+LK.setScore = function (val) {
+ oldSetScore(val);
+ game.checkWin();
+};
\ No newline at end of file