User prompt
When the cat sticks its head out of the box, it stretches its arm from under the head to the toggleswitch
User prompt
When the game loads, the boxlid should not be visible yet
User prompt
The center of the toggleswitch should be in the bottom third of the image.
User prompt
The center of rotation of the toggleswitch should be in the lower third of the image.
User prompt
set toggleswitch to close state when the game starts
User prompt
mirror the toggleswitch in game logic
User prompt
move up the toggleswitch with 200 units
User prompt
move up the catpaw with 100 units
User prompt
When the game loads, the catpaw should not appear
User prompt
When the game loads, mirror the toggleswitch to the up position, in the direction of the close text!
User prompt
When the game loads, set the toggleswitch to close!
User prompt
When the player switches the toggle switch to the open state for the first time when the game is loaded, the boxlid will be visible first, followed by the cat after half a second delay.
User prompt
When the game is loaded, when the player first switches the toggle switch to the open state, the boxlid will be visible first, followed by a 1-second delay of the cat
User prompt
Make the cat asset 50 units lower when the toggleswitch is open.
User prompt
Make the cat asset 50 units lower when the toggleswitch is open.
User prompt
Make the cat asset 100 units lower when the toggleswitch is open.
User prompt
move down the cat with 400 units
User prompt
move down the cat with 100 units
User prompt
When the game is start the toggle switch is on close
User prompt
Move down the cat asset with 400 units
User prompt
move the cat down with 400 units
User prompt
Ensure the cat is visible when the toggle switch is set to close
User prompt
Ensure the cat is visible when the player set the toggleswitch to open
User prompt
fix it
User prompt
place the cat asset to center of the map
/****
* Classes
****/
// Define a class for the Arrow
var Arrow = Container.expand(function () {
var self = Container.call(this);
var arrowGraphics = self.attachAsset('arrows', {
anchorX: 0.5,
anchorY: 0.5
});
self.x = 2048 / 2 + 350; // Move the arrow right by 350 units
self.y = 2732 / 2 + 720; // Move the arrow down by 720 units
});
// Define a class for the Box Lid
var BoxLid = Container.expand(function () {
var self = Container.call(this);
var boxLidGraphics = self.attachAsset('boxLid', {
anchorX: 0.5,
anchorY: 0.5
});
self.x = 2048 / 2; // Center the box lid horizontally
self.y = 2732 / 2 + 270; // Position the box lid to fit the bottom to the top of the box
});
// Assets will be automatically created and loaded by the LK engine based on their usage in the code.
// Define a class for the Cat
var Cat = Container.expand(function () {
var self = Container.call(this);
var catGraphics = self.attachAsset('cat', {
anchorX: 0.5,
anchorY: 0.5
});
self.x = 2048 / 2;
self.y = 2732 / 2; // Center the cat vertically on the map
});
// Define a class for the Cat Paw
var CatPaw = Container.expand(function () {
var self = Container.call(this);
var pawGraphics = self.attachAsset('catPaw', {
anchorX: 0.5,
anchorY: 0.5
});
self.x = 2048 / 2 + 110 - 50 + 10 + 45 - 20 - 20;
self.y = 2732 / 2 + 550; // Move the cat arm up by 10 units
pawGraphics.rotation = Math.PI / 4; // Rotate the cat paw 45 degrees to the right
});
// Define a class for the Ceiling Light
var CeilingLight = Container.expand(function () {
var self = Container.call(this);
var lightGraphics = self.attachAsset('ceilingLight', {
anchorX: 0.5,
anchorY: 0.0
});
self.x = 2048 / 2; // Center the ceiling light horizontally
self.y = 2732 / 2 - 1400; // Move the ceiling light up by 300 units
// Initialize swaying properties
self.swaySpeed = 0.005;
self.swayDirection = 1;
self.swaying = false;
self.swayCount = 0;
// Method to start swaying
self.startSwaying = function () {
if (!self.swaying) {
self.swaying = true;
self.swayCount = 0;
self.swaySpeed = 0.01; // Reset sway speed to default
}
};
// Method to update swaying
self.updateSwaying = function () {
if (self.swaying) {
self.rotation += self.swaySpeed * self.swayDirection;
if (self.rotation > 0.349 || self.rotation < -0.349) {
// 20 degrees in radians
self.swayDirection *= -1;
}
self.swayCount++;
if (self.swayCount > 120) {
// 2 seconds at 60 FPS
self.swaySpeed *= 0.99; // Gradually slow down
if (Math.abs(self.rotation) < 0.01) {
self.rotation = 0; // Reset to original position
self.swaying = false; // Stop swaying
}
}
}
};
// Event handler for when the ceiling light is touched
self.down = function (x, y, obj) {
self.startSwaying();
self.clickCount = (self.clickCount || 0) + 1; // Increment click count
if (self.clickCount >= 10) {
self.fallToGround(); // Trigger the fall to ground method
self.clickCount = 0; // Reset click count
}
self.swaySpeed *= 1.2; // Increase swaying speed
self.swayCount = 0; // Reset sway count
};
// Method to make the ceiling light fall to the ground
self.fallToGround = function () {
darkOverlay.toggle(); // Turn on the dark overlay
var fallInterval = LK.setInterval(function () {
if (self.y < 2732 / 2 + 1100) {
self.y += 64; // Move the ceiling light down at double the previous speed
} else {
LK.clearInterval(fallInterval); // Stop the interval when it reaches the ground
self.visible = false; // Hide the ceiling light
}
}, 16); // Approximately 60 FPS
};
});
// Define a class for the DarkOverlay
var DarkOverlay = Container.expand(function () {
var self = Container.call(this);
var overlayGraphics = LK.getAsset('darkOverlay', {
anchorX: 0.0,
anchorY: 0.0,
width: 2048,
height: 2732,
alpha: 0.95
});
self.addChild(overlayGraphics);
self.visible = false; // Initially hidden
// Method to toggle visibility
self.toggle = function () {
self.visible = !self.visible;
};
});
// Define a class for the LightSwitch
var LightSwitch = Container.expand(function () {
var self = Container.call(this);
var switchGraphics = self.attachAsset('lightswitch', {
anchorX: 0.5,
anchorY: 0.5
});
self.x = 2048 / 2 + 800;
self.y = 2732 / 2 - 500; // Move the light switch up by 500 units
self.isTouched = false;
// Event handler for when the switch is touched
self.down = function (x, y, obj) {
self.isTouched = true;
// Mirror the light switch vertically
switchGraphics.scale.y *= -1;
};
});
// Define a class for the StickyNote
var StickyNote = Container.expand(function () {
var self = Container.call(this);
var stickyNoteGraphics = self.attachAsset('stickyNote', {
anchorX: 0.5,
anchorY: 0.5
});
self.x = 2048 / 2 - 300; // Move the sticky note left by 300 units
self.y = 2732 / 2 + 700; // Move the sticky note up by 500 units
self.touchCount = 0; // Initialize touch counter
// Method to handle touch events
self.down = function (x, y, obj) {
self.touchCount++;
if (self.touchCount >= 3) {
self.fallToBottom();
self.touchCount = 0; // Reset touch counter
}
};
// Method to animate falling to the bottom
self.fallToBottom = function () {
var fallInterval = LK.setInterval(function () {
if (self.y < 2732 / 2 + 1100) {
self.y += 5; // Move the sticky note down
} else {
LK.clearInterval(fallInterval); // Stop the interval when it reaches the bottom
}
}, 16); // Approximately 60 FPS
};
});
// Define a class for the Table
var Table = Container.expand(function () {
var self = Container.call(this);
var tableGraphics = self.attachAsset('table', {
anchorX: 0.5,
anchorY: 0.5
});
self.x = 2048 / 2; // Center the table horizontally
self.y = 2732 / 2 + 2200; // Move the table down by 2000 units
});
// Define a class for the Toggle Switch
var ToggleSwitch = Container.expand(function () {
var self = Container.call(this);
var switchGraphics = self.attachAsset('toggleSwitch', {
anchorX: 0.5,
anchorY: 0.33
});
self.x = 2048 / 2;
self.y = 2732 / 2 + 700; // Move the toggle switch up by 20 units
self.isTouched = false;
// Event handler for when the switch is touched
self.down = function (x, y, obj) {
self.isTouched = true;
boxLid.visible = !boxLid.visible; // Toggle the visibility of the box lid
if (!boxLid.visible) {
cat.visible = true; // Make the cat visible when the box lid is not visible
cat.y = 2732 / 2; // Move the cat to the center of the map
} else {
cat.visible = false; // Hide the cat when the box lid is visible
cat.y = 2732 / 2 + 190; // Set the cat's position to its hidden state
}
// Mirror the toggle switch vertically
switchGraphics.scale.y *= -1;
};
});
// Define a class for the Wallpaper
var Wallpaper = Container.expand(function () {
var self = Container.call(this);
var wallpaperGraphics = self.attachAsset('wallpaper', {
anchorX: 0.5,
anchorY: 0.5
});
self.x = 2048 / 2 - 10; // Move the wallpaper left by 10 units
self.y = 2732 / 2 - 300; // Move the wallpaper up by 300 units
});
// Define a class for the Wooden Box
var WoodenBox = Container.expand(function () {
var self = Container.call(this);
var boxGraphics = self.attachAsset('woodenBox', {
anchorX: 0.5,
anchorY: 0.5
});
self.x = 2048 / 2; // Center the wooden box horizontally
self.y = 2732 / 2 + 720; // Move the wooden box down by 220 units
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 // Init game with black background
});
/****
* Game Code
****/
// Add the wallpaper to the game
var wallpaper = game.addChild(new Wallpaper());
// Add the ceiling light to the game, ensuring it is in front of the wallpaper
ceilingLight = game.addChild(new CeilingLight());
game.setChildIndex(ceilingLight, game.children.length - 1);
// Add the box lid to the game
var boxLid = game.addChild(new BoxLid());
// Initialize game elements
var cat = game.addChild(new Cat());
cat.visible = false; // Initially hide the cat
// Add the table to the game
var table = game.addChild(new Table());
// Add the wooden box to the game
var woodenBox = game.addChild(new WoodenBox());
var toggleSwitch = game.addChild(new ToggleSwitch());
var lightSwitch = game.addChild(new LightSwitch());
var catPaw = game.addChild(new CatPaw());
game.setChildIndex(catPaw, game.children.length - 1);
// Add the sticky note to the game
var stickyNote = game.addChild(new StickyNote());
// Add the arrow to the game
var arrow = game.addChild(new Arrow());
// Add the dark overlay to the game
darkOverlay = game.addChild(new DarkOverlay());
// Add 'Close' text to the center of the map
var closeText = new Text2('Close', {
size: 75,
fill: "#000000"
});
closeText.anchor.set(0.5, 0.5); // Center the text
closeText.x = 2048 / 2 + 350; // Move right by 600 units
closeText.y = 2732 / 2 + 500; // Move down by 500 units
game.addChild(closeText);
// Add 'Open' text to the game
var openText = new Text2('Open', {
size: 75,
fill: "#000000"
});
openText.anchor.set(0.5, 0.5); // Center the text
openText.x = 2048 / 2 + 350; // Move right by 600 units
openText.y = 2732 / 2 - 500 + 1400 + 50; // Move down by 1450 units
game.addChild(openText);
// Game update loop
game.update = function () {
// Check if the light switch is touched
if (lightSwitch.isTouched && ceilingLight.visible) {
darkOverlay.toggle(); // Toggle the dark overlay
lightSwitch.isTouched = false; // Reset the switch state
}
ceilingLight.updateSwaying(); // Update swaying effect for ceiling light
// Move the cat down by 600 units
if (toggleSwitch.isTouched) {
if (!boxLid.visible) {
cat.y = 2732 / 2 + 790; // Ensure the cat's position is set correctly when visible
}
toggleSwitch.isTouched = false; // Reset the switch state
}
};
// Handle touch events on the game
game.down = function (x, y, obj) {
// Convert global coordinates to local game coordinates
var localPos = game.toLocal(obj.global);
// Check if the touch is on the light switch
if (lightSwitch.intersects({
x: localPos.x,
y: localPos.y,
width: 1,
height: 1
})) {
lightSwitch.down(x, y, obj);
LK.effects.flashScreen(0xff0000, 1000); // Flash screen red
LK.showGameOver(); // End the game
}
// Check if the touch is on the sticky note
if (stickyNote.intersects({
x: localPos.x,
y: localPos.y,
width: 1,
height: 1
})) {
stickyNote.down(x, y, obj);
}
};
Tricolor cat face view. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
simple coffee table front view.
matte white rockerSwitch front view.
fehér fényű mennyezeti lámpa.
yellow stickyNote with "Let the cat sleep! Xoxo!" text and a red-stain.
thin, black, up and down arrow.