User prompt
move the hearts a little down
Code edit (3 edits merged)
Please save this source code
User prompt
move the answer buttons a little down
User prompt
Make question font a little bigger
User prompt
make answers letters color white
User prompt
Make the font of the questions bold
User prompt
Open the gap between hearts 40px
User prompt
Increase spacing between heart icons 200px
User prompt
Open the gap between hearts a little
User prompt
make starting screen 8 seconds
User prompt
Move game name asset 5cm down
User prompt
Move game name asset 9cm down
User prompt
Move game name asset 9cm down
User prompt
Move game name asset 9cm down
User prompt
Now make a 3 seconds starting screen. No timer here. 2 assets here: One the startingWoman other GameName
User prompt
OK, the counter is working but it is not visible in the top right corner of the screen. Make the counter counting down from 45 visible in the top right corner of the screen. Make the numbers white and bold.
User prompt
Now we will put a timer in the game. The entire game must be finished within 45 seconds. There will be a timer in the top right corner of the screen counting down from "0:45". When it is finished, the losing screen will appear again and it will say time is up. βͺπ‘ Consider importing and using the following plugins: @upit/tween.v1
User prompt
youwinWoman screen make it 5 second βͺπ‘ Consider importing and using the following plugins: @upit/tween.v1
Code edit (1 edits merged)
Please save this source code
User prompt
Update the cover photo. Use the same girl from my story and rewrite the name of the game: "WHO ARE YOU?"
User prompt
Make the fonts of the questions a little bigger
User prompt
Move FinalScreenAsset 2cm down
User prompt
Move FinalScreenAsset 5cm down
User prompt
Move What asset 6cm down
User prompt
make only the questions color to white βͺπ‘ Consider importing and using the following plugins: @upit/tween.v1
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
// Woman character class
var Woman = Container.expand(function () {
var self = Container.call(this);
// State: 'happy', 'angry', 'surprised'
self.state = 'happy';
// Attach face (default: happy)
self.face = self.attachAsset('happyWoman', {
anchorX: 0.5,
anchorY: 0.5
});
// Attach mouth
self.mouth = self.attachAsset('mouth', {
anchorX: 0.5,
anchorY: 0.5,
x: -15,
// move 3.75mm left (35px left from center, 5mm right from previous)
// centered horizontally, but offset slightly left
y: 40 // move up 1cm (40px from woman's center)
});
// Animate mouth open/close
self.mouthTalking = false;
self.mouthTween = null;
self.setState = function (state) {
if (self.state === state) {
return;
}
self.state = state;
// Remove old face
self.face.destroy();
// Add new face
var faceId = 'happyWoman';
if (state === 'angry') {
faceId = 'angryWoman';
}
if (state === 'surprised') {
faceId = 'surprisedWoman';
}
self.face = self.attachAsset(faceId, {
anchorX: 0.5,
anchorY: 0.5
});
// Keep mouth on top
if (self.mouth && typeof self.mouth.parent !== "undefined" && self.mouth.parent !== null) {
if (typeof self.mouth.parent.removeChild === "function") {
self.mouth.parent.removeChild(self.mouth);
}
}
self.addChild(self.mouth);
};
self.startTalking = function () {
if (self.mouthTalking) {
return;
}
self.mouthTalking = true;
animateMouth();
};
self.stopTalking = function () {
self.mouthTalking = false;
if (self.mouthTween) {
tween.stop(self.mouth);
self.mouthTween = null;
}
// Reset mouth to closed
self.mouth.scaleY = 1;
};
function animateMouth() {
if (!self.mouthTalking) {
return;
}
// Open
self.mouthTween = tween(self.mouth, {
scaleY: 2
}, {
duration: 120,
easing: tween.easeIn,
onFinish: function onFinish() {
// Close
self.mouthTween = tween(self.mouth, {
scaleY: 1
}, {
duration: 120,
easing: tween.easeOut,
onFinish: function onFinish() {
// Repeat if still talking
animateMouth();
}
});
}
});
}
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0xf0f0f0
});
/****
* Game Code
****/
// Questions and answers
// Happy Woman (Red Square)
// Angry Woman (Purple Square)
// Surprised Woman (Yellow Square)
// Mouth (Ellipse for talking)
// Heart (for lives)
// New asset: 'What' (placeholder, 400x400, editable later)
// New asset: 'background' (light gray, editable later)
var questions = [{
text: "Do you know why you are here?",
answers: [{
text: "Yes",
correct: false
}, {
text: "Of course, baby!",
correct: false
}, {
text: "Who am I?",
correct: true
}]
}, {
text: "Do you think I donβt know who you are?",
answers: [{
text: "The Thunderstorm?",
correct: false
}, {
text: "A helpless servant?",
correct: false
}, {
text: "A curious caterpillar?",
correct: true
}]
}, {
text: "Are you curious about me?",
answers: [{
text: "No, about who I am!",
correct: true
}, {
text: "No, about my fate!",
correct: false
}, {
text: "Yes!",
correct: false
}]
}, {
text: "What are you trying to understand?",
answers: [{
text: "Who I am",
correct: true
}, {
text: "The Quantum Theory",
correct: false
}, {
text: "Meaning of life",
correct: false
}]
}, {
text: "Are you a valuable person?",
answers: [{
text: "Am I a person?",
correct: true
}, {
text: "Shine like a diamond",
correct: false
}, {
text: "I am the ONE!",
correct: false
}]
}, {
text: "Who's playing you in this game?",
answers: [{
text: "Someone acting like me",
correct: true
}, {
text: "A finger on a screen",
correct: false
}, {
text: "You, cunning trickster!",
correct: false
}]
}, {
text: "Are you a human?",
answers: [{
text: "Who man?",
correct: true
}, {
text: "I am BATMAN!",
correct: false
}, {
text: "I am a chicken salad",
correct: false
}]
}, {
text: "Are you kidding me?",
answers: [{
text: "No!",
correct: true
}, {
text: "You are god damn right!",
correct: false
}, {
text: "I am the Joker!",
correct: false
}]
}];
// Shuffle answers for each question
function shuffle(arr) {
for (var i = arr.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}
return arr;
}
for (var i = 0; i < questions.length; i++) {
questions[i].answers = shuffle(questions[i].answers.slice());
}
// Game state
var currentQuestion = 0;
var hearts = 3;
var maxHearts = 3;
var woman = null;
var answerButtons = [];
var questionText = null;
var heartIcons = [];
var angryTimeout = null;
var surprisedShown = false;
var gameTimer = 45; // Timer in seconds
var timerText = null;
var gameEnded = false;
var showingStartScreen = true;
var startingWomanAsset = null;
var gameNameAsset = null;
// Layout constants
var womanCenterX = 2048 / 2;
var womanCenterY = 900;
var questionY = 1500;
var answerStartY = 1750;
var answerSpacing = 220;
// Add background asset (behind all elements)
var backgroundAsset = LK.getAsset('background', {
anchorX: 0.5,
anchorY: 0,
x: 2048 / 2,
y: 0
});
game.addChild(backgroundAsset);
// Add woman character
woman = new Woman();
game.addChild(woman);
woman.x = womanCenterX;
woman.y = womanCenterY;
// Add hearts (below answer buttons, centered)
for (var h = 0; h < maxHearts; h++) {
var heart = LK.getAsset('heart', {
anchorX: 0.5,
anchorY: 0.5
});
// Place below answer buttons, centered horizontally
// Place hearts in a row, centered at 2048/2, below last answer button
var totalWidth = (maxHearts - 1) * 200;
heart.x = 2048 / 2 - totalWidth / 2 + h * 200;
heart.y = answerStartY + 3 * answerSpacing + 150; // 150px below last answer button (moved down 50px)
game.addChild(heart);
heartIcons.push(heart);
}
// Add question text
questionText = new Text2('', {
size: 120,
fill: 0xffffff,
font: "'GillSans-Bold',Impact,'Arial Black',Tahoma"
});
questionText.anchor.set(0.5, 0);
questionText.x = 2048 / 2;
questionText.y = questionY;
game.addChild(questionText);
// Add timer text in top right corner
timerText = new Text2('0:45', {
size: 80,
fill: 0xFFFFFF,
font: "'GillSans-Bold',Impact,'Arial Black',Tahoma"
});
timerText.anchor.set(1, 0); // Right-aligned, top
timerText.x = -50; // 50px from right edge (relative to topRight)
timerText.y = 50; // 50px from top
LK.gui.topRight.addChild(timerText);
// Answer button class
function createAnswerButton(idx) {
var btn = new Container();
// Button background
var bg = btn.attachAsset('box', {
width: 900,
height: 160,
color: 0x000000,
anchorX: 0.5,
anchorY: 0.5
});
// Button text
var txt = new Text2('', {
size: 70,
fill: 0xffffff
});
txt.anchor.set(0.5, 0.5);
txt.x = 0;
txt.y = 0;
btn.addChild(txt);
// Position
btn.x = 2048 / 2;
btn.y = answerStartY + idx * answerSpacing + 100;
// Store for later
btn.bg = bg;
btn.txt = txt;
btn.idx = idx;
// Add to game
game.addChild(btn);
// Touch/click handler
btn.down = function (x, y, obj) {
handleAnswer(idx);
};
return btn;
}
// Create answer buttons
for (var i = 0; i < 3; i++) {
var btn = createAnswerButton(i);
answerButtons.push(btn);
}
// Update hearts display
function updateHearts() {
for (var i = 0; i < heartIcons.length; i++) {
heartIcons[i].alpha = i < hearts ? 1 : 0.2;
}
}
// Show question and answers
function showQuestion() {
if (currentQuestion >= questions.length) {
// Show surprised woman
showSurprised();
return;
}
var q = questions[currentQuestion];
questionText.setText(q.text);
for (var i = 0; i < 3; i++) {
var ans = q.answers[i];
answerButtons[i].txt.setText(ans ? ans.text : '');
answerButtons[i].visible = !!ans;
answerButtons[i].bg.color = 0xf0f0f0;
}
// Woman happy
woman.setState('happy');
woman.startTalking();
// Stop talking after 1.2s
LK.setTimeout(function () {
woman.stopTalking();
}, 1200);
}
// Handle answer selection
function handleAnswer(idx) {
if (gameEnded || currentQuestion >= questions.length) {
return;
}
var q = questions[currentQuestion];
var ans = q.answers[idx];
if (!ans) {
return;
}
// Disable buttons for now
for (var i = 0; i < 3; i++) {
answerButtons[i].down = null;
}
if (ans.correct) {
// Correct: progress
answerButtons[idx].bg.color = 0x83de44; // green
woman.setState('happy');
woman.startTalking();
LK.setTimeout(function () {
woman.stopTalking();
currentQuestion++;
showQuestion();
// Re-enable buttons
for (var i = 0; i < 3; i++) {
answerButtons[i].down = function (i) {
return function (x, y, obj) {
handleAnswer(i);
};
}(i);
}
}, 900);
} else {
// Wrong: lose heart, angry woman, flash
answerButtons[idx].bg.color = 0xff3b3b; // red
hearts--;
updateHearts();
woman.setState('angry');
woman.startTalking();
LK.effects.flashObject(woman, 0x8e44ad, 300);
// After 3s, return to happy or end game
if (angryTimeout) {
LK.clearTimeout(angryTimeout);
}
angryTimeout = LK.setTimeout(function () {
woman.stopTalking();
if (hearts <= 0) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
return;
}
woman.setState('happy');
// Re-enable buttons
for (var i = 0; i < 3; i++) {
answerButtons[i].down = function (i) {
return function (x, y, obj) {
handleAnswer(i);
};
}(i);
}
}, 3000);
}
}
// Show surprised woman (win)
function showSurprised() {
if (surprisedShown) {
return;
}
surprisedShown = true;
gameEnded = true; // Stop timer when winning
// Remove mouth if present and parent is not undefined/null
if (woman.mouth && typeof woman.mouth.parent !== "undefined" && woman.mouth.parent !== null) {
if (typeof woman.mouth.parent.removeChild === "function") {
woman.mouth.parent.removeChild(woman.mouth);
}
}
// Show only surprisedWoman face
woman.setState('surprised');
// Add 'What' asset under surprisedWoman
var whatAsset = LK.getAsset('What', {
anchorX: 0.5,
anchorY: 0.5,
x: womanCenterX,
y: womanCenterY + 600 + 300 + 300 // move 6cm (300px) + 6cm (300px) further down to be under surprisedWoman asset
});
game.addChild(whatAsset);
// Remove 'What' asset after 3s (when game finishes)
LK.setTimeout(function () {
if (whatAsset && typeof whatAsset.destroy === "function") {
whatAsset.destroy();
}
}, 3000);
// After 3 seconds, show youwinWoman (no mouth)
LK.setTimeout(function () {
// Remove mouth if present (defensive)
if (woman.mouth && typeof woman.mouth.parent !== "undefined" && woman.mouth.parent !== null) {
if (typeof woman.mouth.parent.removeChild === "function") {
woman.mouth.parent.removeChild(woman.mouth);
}
}
// Show FinalScreenAsset under youwinWoman
var finalScreenAsset = LK.getAsset('FinalScreenAsset', {
anchorX: 0.5,
anchorY: 0.5,
x: womanCenterX,
y: womanCenterY + 600 + 250 + 400 + 100 // move 5cm (250px) + 8cm (400px) + 2cm (100px) further down under youwinWoman asset
});
game.addChild(finalScreenAsset);
// Swap to youwinWoman face (add asset if not present)
if (woman.face) {
woman.face.destroy();
}
woman.face = woman.attachAsset('youwinWoman', {
anchorX: 0.5,
anchorY: 0.5
});
}, 3000);
// Hide answer buttons
for (var i = 0; i < 3; i++) {
answerButtons[i].visible = false;
}
// Show message (optional, can be blank)
questionText.setText("");
// After 3 seconds, show youwinWoman (no mouth)
LK.setTimeout(function () {
// Remove mouth if present (defensive)
if (woman.mouth && typeof woman.mouth.parent !== "undefined" && woman.mouth.parent !== null) {
if (typeof woman.mouth.parent.removeChild === "function") {
woman.mouth.parent.removeChild(woman.mouth);
}
}
// Swap to youwinWoman face (add asset if not present)
if (woman.face) {
woman.face.destroy();
}
woman.face = woman.attachAsset('youwinWoman', {
anchorX: 0.5,
anchorY: 0.5
});
// After 5 more seconds, finish the game
LK.setTimeout(function () {
LK.showYouWin();
}, 5000);
}, 3000);
}
// Timer countdown function
function updateTimer() {
if (gameEnded || showingStartScreen) {
return;
}
gameTimer--;
var minutes = Math.floor(gameTimer / 60);
var seconds = gameTimer % 60;
var timeString = minutes + ':' + (seconds < 10 ? '0' : '') + seconds;
timerText.setText(timeString);
if (gameTimer <= 0) {
gameEnded = true;
questionText.setText("Time is up!");
woman.setState('angry');
LK.effects.flashScreen(0xff0000, 1000);
LK.setTimeout(function () {
LK.showGameOver();
}, 1000);
}
}
// Timer interval will be started after starting screen
var timerInterval = null;
// Show starting screen first
function showStartingScreen() {
// Create starting woman asset
startingWomanAsset = LK.getAsset('startingWoman', {
anchorX: 0.5,
anchorY: 0.5,
x: womanCenterX,
y: womanCenterY
});
game.addChild(startingWomanAsset);
// Create game name asset
gameNameAsset = LK.getAsset('GameName', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: womanCenterY + 400 + 360 + 360 + 200
});
game.addChild(gameNameAsset);
// Hide game elements during start screen
woman.visible = false;
questionText.visible = false;
timerText.visible = false;
for (var i = 0; i < answerButtons.length; i++) {
answerButtons[i].visible = false;
}
for (var i = 0; i < heartIcons.length; i++) {
heartIcons[i].visible = false;
}
// After 8 seconds, start the game
LK.setTimeout(function () {
// Remove starting screen assets
if (startingWomanAsset) {
startingWomanAsset.destroy();
startingWomanAsset = null;
}
if (gameNameAsset) {
gameNameAsset.destroy();
gameNameAsset = null;
}
// Show game elements
woman.visible = true;
questionText.visible = true;
timerText.visible = true;
for (var i = 0; i < answerButtons.length; i++) {
answerButtons[i].visible = true;
}
for (var i = 0; i < heartIcons.length; i++) {
heartIcons[i].visible = true;
}
showingStartScreen = false;
// Start the actual game
updateHearts();
showQuestion();
// Start timer countdown
timerInterval = LK.setInterval(updateTimer, 1000);
}, 8000);
}
// Initial state - show starting screen
showStartingScreen();
// Make sure answer buttons are re-enabled after each question
for (var i = 0; i < 3; i++) {
answerButtons[i].down = function (i) {
return function (x, y, obj) {
handleAnswer(i);
};
}(i);
}
// No dragging or move events needed for this game
// No update loop needed ===================================================================
--- original.js
+++ change.js
@@ -271,9 +271,9 @@
// Place below answer buttons, centered horizontally
// Place hearts in a row, centered at 2048/2, below last answer button
var totalWidth = (maxHearts - 1) * 200;
heart.x = 2048 / 2 - totalWidth / 2 + h * 200;
- heart.y = answerStartY + 3 * answerSpacing + 100; // 100px below last answer button
+ heart.y = answerStartY + 3 * answerSpacing + 150; // 150px below last answer button (moved down 50px)
game.addChild(heart);
heartIcons.push(heart);
}
// Add question text
Delete the mouth. Woman have no mouth. Just same skin color.
An anime womans mouth. Just mouth.. In-Game asset. 2d. High contrast. No shadows
Fill it red. Its a red rectangle. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
Delete the mouth. Woman have no mouth. Just same skin color.
Make her shy and seksier
Show her from a little further away and make a victory sign with her hand and smiley face
same photo but make a victory sign with her hand and smile
Same style bu write: DON'T YOU KNOW WHO YOU ARE
Write "TAP TO START" with a comic font. In-Game asset. 2d. High contrast. No shadows
Write comics style What? in golden color. In-Game asset. 2d. High contrast. No shadows
make same heath like a woman
delete blacks