Code edit (1 edits merged)
Please save this source code
User prompt
King Bee's Royal Feast
Initial prompt
Okay, here's a comic strip based on your prompt, focusing on panel structure and using speech balloons/captions: Panel 1 Setting: Inside a brightly coloured beehive. Honeycomb cells visible in the background. Character: King Bee, a large, regal bee wearing a tiny crown, is sitting on a throne made of honey. He has a slightly guilty expression. Action: The King Bee is burping, a small bee head pops out of his mouth. Speech Balloon (King Bee): Burp! ...Oops. Caption: "King Bee had a problem." Panel 2 Setting: Same as Panel 1. Characters: King Bee is looking towards the right of the panel. Six smaller bees, with worried expressions, are standing before him. These are the "lucky" (or unlucky) survivors. Action: The smaller bees are buzzing nervously and fanned out in front of the King. Speech Balloon (Bee 1): Uh, your Majesty? Speech Balloon (Bee 2): Everything alright? Panel 3 Setting: Same as Panel 1, but the King Bee has now stood from the throne and is pacing. Character: King Bee looks stressed and is wringing his tiny bee hands. Action: The King Bee is gesturing wildly. Caption: "The Royal Decree was clear: Maximum consumption was 60." Speech Balloon (King Bee): I... I ate seventy! Seventy bees! I lost count! Panel 4 Setting: Same as Panel 1. All bees are visible. Action: The small bees are looking at each other in alarm. King Bee is looking mournful. Caption: "Elimination was the only solution." Speech Balloon (Bee 3): Oh, bother. Sound Effect: GULP (emanating from the King Bee) Panel 5 Setting: Same as Panel 1. Action: King Bee is patting his stomach, looking satisfied. Only the King Bee is visible. Caption: "Survival of the fittest. And the hungriest." Speech Balloon (King Bee): Much better. Now, where was I? Time for a nap. Zzzzzz Panel 6 Setting: External shot of the Beehive Action: Bees are flying around, doing the daily work Caption: "All in a day's work for the King." Notes: I've used captions to set context and add another layer of humor. Speech balloons are used for direct dialogue and inner thoughts. Panel structure: The panels follow a clear sequence of events, building to the punchline. The humor comes from the absurdity of the situation. With Video Panel 6 And Keyboard
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
// Bee class (bees to be eaten)
var Bee = Container.expand(function () {
var self = Container.call(this);
// Attach Bee asset (smaller yellow ellipse)
var bee = self.attachAsset('bee', {
anchorX: 0.5,
anchorY: 0.5
});
// Randomize bee size a bit
var scale = 0.5 + Math.random() * 0.2;
bee.scaleX = scale;
bee.scaleY = scale;
// Bee speed (for chaos mode)
self.vx = 0;
self.vy = 0;
self.escaping = false;
// For chaos mode: set bee to escape in a random direction
self.startEscape = function () {
self.escaping = true;
// Random direction and speed
var angle = Math.random() * Math.PI * 2;
var speed = 8 + Math.random() * 6;
self.vx = Math.cos(angle) * speed;
self.vy = Math.sin(angle) * speed;
};
// Update method for bee
self.update = function () {
if (self.escaping) {
self.x += self.vx;
self.y += self.vy;
}
};
return self;
});
// KingBee class (the player)
var KingBee = Container.expand(function () {
var self = Container.call(this);
// Attach King Bee asset (big yellow ellipse)
var kingBee = self.attachAsset('kingBee', {
anchorX: 0.5,
anchorY: 0.5
});
// Set initial scale for King Bee
kingBee.scaleX = 1.2;
kingBee.scaleY = 1.2;
// For collision, use self as the hitbox
// Dragging state
self.isDragging = false;
// Event handlers for touch
self.down = function (x, y, obj) {
self.isDragging = true;
};
self.up = function (x, y, obj) {
self.isDragging = false;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0xffe066 // Honey yellow background
});
/****
* Game Code
****/
// Tween plugin for animations
// Game constants
var GAME_WIDTH = 2048;
var GAME_HEIGHT = 2732;
var BEE_LIMIT = 60;
var INITIAL_BEE_COUNT = 20;
var CHAOS_BEE_COUNT = 30;
// Game state
var kingBee;
var bees = [];
var chaosMode = false;
var beesEaten = 0;
var dragNode = null;
var lastIntersectingBee = null;
var scoreTxt;
var infoTxt;
var chaosTxt;
var chaosTimeout = null;
// --- Asset Initialization (shapes) ---
// For dead bees
// --- GUI Elements ---
scoreTxt = new Text2('0', {
size: 120,
fill: 0x222222
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
infoTxt = new Text2('Eat bees! Don\'t exceed 60.', {
size: 70,
fill: 0x222222
});
infoTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(infoTxt);
infoTxt.y = 130;
chaosTxt = new Text2('CHAOS! Eliminate survivors!', {
size: 120,
fill: 0xFF2222
});
chaosTxt.anchor.set(0.5, 0.5);
chaosTxt.visible = false;
LK.gui.center.addChild(chaosTxt);
// --- King Bee ---
kingBee = new KingBee();
game.addChild(kingBee);
// Start in the center of the hive
kingBee.x = GAME_WIDTH / 2;
kingBee.y = GAME_HEIGHT / 2 + 200;
// --- Bee Spawning ---
function spawnBee(x, y) {
var bee = new Bee();
bee.x = x;
bee.y = y;
bees.push(bee);
game.addChild(bee);
return bee;
}
// Place bees randomly in the hive (not too close to King Bee)
function spawnInitialBees(count) {
for (var i = 0; i < count; i++) {
var placed = false;
var tries = 0;
while (!placed && tries < 20) {
var bx = 200 + Math.random() * (GAME_WIDTH - 400);
var by = 400 + Math.random() * (GAME_HEIGHT - 800);
// Don't spawn too close to King Bee
var dx = bx - kingBee.x;
var dy = by - kingBee.y;
if (dx * dx + dy * dy > 400 * 400) {
spawnBee(bx, by);
placed = true;
}
tries++;
}
}
}
spawnInitialBees(INITIAL_BEE_COUNT);
// --- Dragging King Bee ---
function handleMove(x, y, obj) {
if (dragNode) {
// Clamp to game area, keep King Bee inside
var kbw = kingBee.width / 2;
var kbh = kingBee.height / 2;
kingBee.x = Math.max(kbw, Math.min(GAME_WIDTH - kbw, x));
kingBee.y = Math.max(kbh, Math.min(GAME_HEIGHT - kbh, y));
}
}
game.move = handleMove;
game.down = function (x, y, obj) {
// Only start drag if touch is on King Bee
var local = kingBee.toLocal(game.toGlobal({
x: x,
y: y
}));
if (Math.abs(local.x) < kingBee.width / 2 && Math.abs(local.y) < kingBee.height / 2) {
dragNode = kingBee;
}
};
game.up = function (x, y, obj) {
dragNode = null;
};
// --- Eating Bees ---
function eatBee(bee) {
// Animate bee shrinking and fading out
tween(bee, {
scaleX: 0,
scaleY: 0,
alpha: 0
}, {
duration: 250,
easing: tween.easeIn,
onFinish: function onFinish() {
bee.destroy();
}
});
// Remove from bees array
for (var i = 0; i < bees.length; i++) {
if (bees[i] === bee) {
bees.splice(i, 1);
break;
}
}
beesEaten++;
scoreTxt.setText(beesEaten);
// King Bee grows slightly
tween(kingBee, {
scaleX: 1.2 + beesEaten * 0.01,
scaleY: 1.2 + beesEaten * 0.01
}, {
duration: 200,
easing: tween.easeOut
});
// Check for chaos trigger
if (!chaosMode && beesEaten > BEE_LIMIT) {
triggerChaos();
}
}
// --- Chaos Mode ---
function triggerChaos() {
chaosMode = true;
chaosTxt.visible = true;
infoTxt.setText('Too many bees eaten!');
// All remaining bees start escaping
for (var i = 0; i < bees.length; i++) {
bees[i].startEscape();
}
// Spawn extra survivor bees
for (var j = 0; j < CHAOS_BEE_COUNT; j++) {
var bx = 200 + Math.random() * (GAME_WIDTH - 400);
var by = 400 + Math.random() * (GAME_HEIGHT - 800);
var bee = spawnBee(bx, by);
bee.startEscape();
}
// King Bee shakes (flash red)
LK.effects.flashObject(kingBee, 0xff2222, 800);
// Show chaos message for 2 seconds
if (chaosTimeout) LK.clearTimeout(chaosTimeout);
chaosTimeout = LK.setTimeout(function () {
chaosTxt.visible = false;
}, 2000);
}
// --- Eliminating Survivor Bees in Chaos Mode ---
function eliminateBee(bee) {
// Animate bee turning gray and shrinking
var deadBee = LK.getAsset('beeDead', {
anchorX: 0.5,
anchorY: 0.5,
x: bee.x,
y: bee.y,
scaleX: bee.scaleX,
scaleY: bee.scaleY
});
game.addChild(deadBee);
tween(deadBee, {
scaleX: 0,
scaleY: 0,
alpha: 0
}, {
duration: 300,
easing: tween.easeIn,
onFinish: function onFinish() {
deadBee.destroy();
}
});
bee.destroy();
for (var i = 0; i < bees.length; i++) {
if (bees[i] === bee) {
bees.splice(i, 1);
break;
}
}
// If all bees eliminated, restore order (win)
if (bees.length === 0) {
LK.setScore(beesEaten);
LK.showYouWin();
}
}
// --- Main Game Update ---
game.update = function () {
// Update all bees
for (var i = bees.length - 1; i >= 0; i--) {
var bee = bees[i];
if (bee.update) bee.update();
// If bee is escaping and out of bounds, remove it
if (bee.escaping) {
if (bee.x < -100 || bee.x > GAME_WIDTH + 100 || bee.y < -100 || bee.y > GAME_HEIGHT + 100) {
bee.destroy();
bees.splice(i, 1);
continue;
}
}
// If not in chaos mode, check for eating
if (!chaosMode) {
if (kingBee.intersects(bee)) {
eatBee(bee);
}
}
}
};
// --- Touch to eliminate bees in chaos mode ---
game.down = function (x, y, obj) {
// Drag King Bee if not in chaos mode
if (!chaosMode) {
var local = kingBee.toLocal(game.toGlobal({
x: x,
y: y
}));
if (Math.abs(local.x) < kingBee.width / 2 && Math.abs(local.y) < kingBee.height / 2) {
dragNode = kingBee;
}
} else {
// In chaos mode, tap bees to eliminate
for (var i = bees.length - 1; i >= 0; i--) {
var bee = bees[i];
var local = bee.toLocal(game.toGlobal({
x: x,
y: y
}));
if (Math.abs(local.x) < bee.width / 2 && Math.abs(local.y) < bee.height / 2) {
eliminateBee(bee);
break;
}
}
}
};
game.up = function (x, y, obj) {
dragNode = null;
};
// --- Reset on Game Over ---
game.onGameOver = function () {
// Not needed, LK handles reset
};
// --- Prevent elements in top left 100x100 ---
/* All GUI elements are centered or top center, and bees/king bee are not spawned in top left. */
/* End of game code */ ===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,330 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+// Bee class (bees to be eaten)
+var Bee = Container.expand(function () {
+ var self = Container.call(this);
+ // Attach Bee asset (smaller yellow ellipse)
+ var bee = self.attachAsset('bee', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Randomize bee size a bit
+ var scale = 0.5 + Math.random() * 0.2;
+ bee.scaleX = scale;
+ bee.scaleY = scale;
+ // Bee speed (for chaos mode)
+ self.vx = 0;
+ self.vy = 0;
+ self.escaping = false;
+ // For chaos mode: set bee to escape in a random direction
+ self.startEscape = function () {
+ self.escaping = true;
+ // Random direction and speed
+ var angle = Math.random() * Math.PI * 2;
+ var speed = 8 + Math.random() * 6;
+ self.vx = Math.cos(angle) * speed;
+ self.vy = Math.sin(angle) * speed;
+ };
+ // Update method for bee
+ self.update = function () {
+ if (self.escaping) {
+ self.x += self.vx;
+ self.y += self.vy;
+ }
+ };
+ return self;
+});
+// KingBee class (the player)
+var KingBee = Container.expand(function () {
+ var self = Container.call(this);
+ // Attach King Bee asset (big yellow ellipse)
+ var kingBee = self.attachAsset('kingBee', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Set initial scale for King Bee
+ kingBee.scaleX = 1.2;
+ kingBee.scaleY = 1.2;
+ // For collision, use self as the hitbox
+ // Dragging state
+ self.isDragging = false;
+ // Event handlers for touch
+ self.down = function (x, y, obj) {
+ self.isDragging = true;
+ };
+ self.up = function (x, y, obj) {
+ self.isDragging = false;
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0xffe066 // Honey yellow background
+});
+
+/****
+* Game Code
+****/
+// Tween plugin for animations
+// Game constants
+var GAME_WIDTH = 2048;
+var GAME_HEIGHT = 2732;
+var BEE_LIMIT = 60;
+var INITIAL_BEE_COUNT = 20;
+var CHAOS_BEE_COUNT = 30;
+// Game state
+var kingBee;
+var bees = [];
+var chaosMode = false;
+var beesEaten = 0;
+var dragNode = null;
+var lastIntersectingBee = null;
+var scoreTxt;
+var infoTxt;
+var chaosTxt;
+var chaosTimeout = null;
+// --- Asset Initialization (shapes) ---
+// For dead bees
+// --- GUI Elements ---
+scoreTxt = new Text2('0', {
+ size: 120,
+ fill: 0x222222
+});
+scoreTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreTxt);
+infoTxt = new Text2('Eat bees! Don\'t exceed 60.', {
+ size: 70,
+ fill: 0x222222
+});
+infoTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(infoTxt);
+infoTxt.y = 130;
+chaosTxt = new Text2('CHAOS! Eliminate survivors!', {
+ size: 120,
+ fill: 0xFF2222
+});
+chaosTxt.anchor.set(0.5, 0.5);
+chaosTxt.visible = false;
+LK.gui.center.addChild(chaosTxt);
+// --- King Bee ---
+kingBee = new KingBee();
+game.addChild(kingBee);
+// Start in the center of the hive
+kingBee.x = GAME_WIDTH / 2;
+kingBee.y = GAME_HEIGHT / 2 + 200;
+// --- Bee Spawning ---
+function spawnBee(x, y) {
+ var bee = new Bee();
+ bee.x = x;
+ bee.y = y;
+ bees.push(bee);
+ game.addChild(bee);
+ return bee;
+}
+// Place bees randomly in the hive (not too close to King Bee)
+function spawnInitialBees(count) {
+ for (var i = 0; i < count; i++) {
+ var placed = false;
+ var tries = 0;
+ while (!placed && tries < 20) {
+ var bx = 200 + Math.random() * (GAME_WIDTH - 400);
+ var by = 400 + Math.random() * (GAME_HEIGHT - 800);
+ // Don't spawn too close to King Bee
+ var dx = bx - kingBee.x;
+ var dy = by - kingBee.y;
+ if (dx * dx + dy * dy > 400 * 400) {
+ spawnBee(bx, by);
+ placed = true;
+ }
+ tries++;
+ }
+ }
+}
+spawnInitialBees(INITIAL_BEE_COUNT);
+// --- Dragging King Bee ---
+function handleMove(x, y, obj) {
+ if (dragNode) {
+ // Clamp to game area, keep King Bee inside
+ var kbw = kingBee.width / 2;
+ var kbh = kingBee.height / 2;
+ kingBee.x = Math.max(kbw, Math.min(GAME_WIDTH - kbw, x));
+ kingBee.y = Math.max(kbh, Math.min(GAME_HEIGHT - kbh, y));
+ }
+}
+game.move = handleMove;
+game.down = function (x, y, obj) {
+ // Only start drag if touch is on King Bee
+ var local = kingBee.toLocal(game.toGlobal({
+ x: x,
+ y: y
+ }));
+ if (Math.abs(local.x) < kingBee.width / 2 && Math.abs(local.y) < kingBee.height / 2) {
+ dragNode = kingBee;
+ }
+};
+game.up = function (x, y, obj) {
+ dragNode = null;
+};
+// --- Eating Bees ---
+function eatBee(bee) {
+ // Animate bee shrinking and fading out
+ tween(bee, {
+ scaleX: 0,
+ scaleY: 0,
+ alpha: 0
+ }, {
+ duration: 250,
+ easing: tween.easeIn,
+ onFinish: function onFinish() {
+ bee.destroy();
+ }
+ });
+ // Remove from bees array
+ for (var i = 0; i < bees.length; i++) {
+ if (bees[i] === bee) {
+ bees.splice(i, 1);
+ break;
+ }
+ }
+ beesEaten++;
+ scoreTxt.setText(beesEaten);
+ // King Bee grows slightly
+ tween(kingBee, {
+ scaleX: 1.2 + beesEaten * 0.01,
+ scaleY: 1.2 + beesEaten * 0.01
+ }, {
+ duration: 200,
+ easing: tween.easeOut
+ });
+ // Check for chaos trigger
+ if (!chaosMode && beesEaten > BEE_LIMIT) {
+ triggerChaos();
+ }
+}
+// --- Chaos Mode ---
+function triggerChaos() {
+ chaosMode = true;
+ chaosTxt.visible = true;
+ infoTxt.setText('Too many bees eaten!');
+ // All remaining bees start escaping
+ for (var i = 0; i < bees.length; i++) {
+ bees[i].startEscape();
+ }
+ // Spawn extra survivor bees
+ for (var j = 0; j < CHAOS_BEE_COUNT; j++) {
+ var bx = 200 + Math.random() * (GAME_WIDTH - 400);
+ var by = 400 + Math.random() * (GAME_HEIGHT - 800);
+ var bee = spawnBee(bx, by);
+ bee.startEscape();
+ }
+ // King Bee shakes (flash red)
+ LK.effects.flashObject(kingBee, 0xff2222, 800);
+ // Show chaos message for 2 seconds
+ if (chaosTimeout) LK.clearTimeout(chaosTimeout);
+ chaosTimeout = LK.setTimeout(function () {
+ chaosTxt.visible = false;
+ }, 2000);
+}
+// --- Eliminating Survivor Bees in Chaos Mode ---
+function eliminateBee(bee) {
+ // Animate bee turning gray and shrinking
+ var deadBee = LK.getAsset('beeDead', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: bee.x,
+ y: bee.y,
+ scaleX: bee.scaleX,
+ scaleY: bee.scaleY
+ });
+ game.addChild(deadBee);
+ tween(deadBee, {
+ scaleX: 0,
+ scaleY: 0,
+ alpha: 0
+ }, {
+ duration: 300,
+ easing: tween.easeIn,
+ onFinish: function onFinish() {
+ deadBee.destroy();
+ }
+ });
+ bee.destroy();
+ for (var i = 0; i < bees.length; i++) {
+ if (bees[i] === bee) {
+ bees.splice(i, 1);
+ break;
+ }
+ }
+ // If all bees eliminated, restore order (win)
+ if (bees.length === 0) {
+ LK.setScore(beesEaten);
+ LK.showYouWin();
+ }
+}
+// --- Main Game Update ---
+game.update = function () {
+ // Update all bees
+ for (var i = bees.length - 1; i >= 0; i--) {
+ var bee = bees[i];
+ if (bee.update) bee.update();
+ // If bee is escaping and out of bounds, remove it
+ if (bee.escaping) {
+ if (bee.x < -100 || bee.x > GAME_WIDTH + 100 || bee.y < -100 || bee.y > GAME_HEIGHT + 100) {
+ bee.destroy();
+ bees.splice(i, 1);
+ continue;
+ }
+ }
+ // If not in chaos mode, check for eating
+ if (!chaosMode) {
+ if (kingBee.intersects(bee)) {
+ eatBee(bee);
+ }
+ }
+ }
+};
+// --- Touch to eliminate bees in chaos mode ---
+game.down = function (x, y, obj) {
+ // Drag King Bee if not in chaos mode
+ if (!chaosMode) {
+ var local = kingBee.toLocal(game.toGlobal({
+ x: x,
+ y: y
+ }));
+ if (Math.abs(local.x) < kingBee.width / 2 && Math.abs(local.y) < kingBee.height / 2) {
+ dragNode = kingBee;
+ }
+ } else {
+ // In chaos mode, tap bees to eliminate
+ for (var i = bees.length - 1; i >= 0; i--) {
+ var bee = bees[i];
+ var local = bee.toLocal(game.toGlobal({
+ x: x,
+ y: y
+ }));
+ if (Math.abs(local.x) < bee.width / 2 && Math.abs(local.y) < bee.height / 2) {
+ eliminateBee(bee);
+ break;
+ }
+ }
+ }
+};
+game.up = function (x, y, obj) {
+ dragNode = null;
+};
+// --- Reset on Game Over ---
+game.onGameOver = function () {
+ // Not needed, LK handles reset
+};
+// --- Prevent elements in top left 100x100 ---
+/* All GUI elements are centered or top center, and bees/king bee are not spawned in top left. */
+/* End of game code */
\ No newline at end of file