/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
// --- Optional: Allow restart on game over (handled by LK) ---
// --- Touchscreen compatibility: all controls are via .down events on buttons ---
// --- No music, sound, or pause ---
// --- No elements in top left 100x100 px (all UI is top, topRight, or center) ---
// --- No background art, just clean white ---
// --- All elements are visible and centered for mobile ---
// --- No keyboard controls ---
// --- No dynamic resizing code needed ---
// --- MVP complete ---
// ConfettiBurst: A visual effect of confetti exploding from the bottom of the screen
var ConfettiBurst = Container.expand(function () {
var self = Container.call(this);
// Number of confetti pieces
var pieces = 32 + Math.floor(Math.random() * 12); // 32-43 pieces
var centerX = 2048 / 2;
var baseY = 2732 - 60; // 60px from bottom
var minLen = 600,
maxLen = 1200;
var minSize = 40,
maxSize = 80;
var colors = [0xff5e5e, 0x5ecbff, 0xffe15e, 0x7cff5e, 0xb95eff, 0xff5edb, 0x5effb9, 0xffffff];
for (var i = 0; i < pieces; i++) {
var angle = -Math.PI / 2 + (Math.random() - 0.5) * Math.PI * 0.9; // -80deg to +80deg
var len = minLen + Math.random() * (maxLen - minLen);
var size = minSize + Math.random() * (maxSize - minSize);
var color = colors[Math.floor(Math.random() * colors.length)];
var conf = self.attachAsset('confetti' + i, {
width: size * (0.7 + Math.random() * 0.6),
height: size * (0.7 + Math.random() * 0.6),
color: color,
shape: 'box',
anchorX: 0.5,
anchorY: 1
});
conf.x = centerX + (Math.random() - 0.5) * 200;
conf.y = baseY;
conf.rotation = angle + (Math.random() - 0.5) * 0.5;
conf.alpha = 0.85 + Math.random() * 0.15;
// Animate: move out, rotate, fall, and fade
(function (confetti, angle, len) {
var targetX = confetti.x + Math.cos(angle) * len;
var targetY = confetti.y + Math.sin(angle) * len + 200 + Math.random() * 200;
var rot = confetti.rotation + (Math.random() - 0.5) * 2.5;
tween(confetti, {
x: targetX,
y: targetY,
rotation: rot,
alpha: 0
}, {
duration: 900 + Math.random() * 200,
easing: tween.easeOut,
onComplete: function onComplete() {
if (confetti.parent) confetti.parent.removeChild(confetti);
}
});
})(conf, angle, len);
}
// Remove the whole effect after animation
LK.setTimeout(function () {
if (self.parent) self.parent.removeChild(self);
}, 1200);
return self;
});
/****
* Initialize Game
****/
// No custom classes needed for MVP, as all elements are UI and static.
var game = new LK.Game({
backgroundColor: 0x87ceeb // Sky blue background for a friendly quiz look
});
/****
* Game Code
****/
// Background image asset (2048x2732, covers full game area)
// --- Add background image ---
var backgroundImg = LK.getAsset('background', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 0,
width: 2048,
height: 2732
});
game.addChild(backgroundImg);
// --- Question Pool ---
// Initialize chill background music asset
var questionPool = [
// Emoji
{
q: "What does the ๐ฆ emoji represent?",
choices: ["Unicorn", "Horse", "Rhino", "Dragon"],
answer: 0
}, {
q: "What does the ๐ emoji mean?",
choices: ["Crying", "Laughing with tears", "Angry", "Surprised"],
answer: 1
}, {
q: "What does the ๐ emoji represent?",
choices: ["Cake", "Pizza", "Sandwich", "Pie"],
answer: 1
}, {
q: "What does the ๐ฆ emoji represent?",
choices: ["Tiger", "Lion", "Bear", "Dog"],
answer: 1
}, {
q: "What does the ๐ง emoji represent?",
choices: ["Penguin", "Duck", "Chicken", "Ostrich"],
answer: 0
}, {
q: "What does the ๐ฅ emoji represent?",
choices: ["Avocado", "Pear", "Apple", "Kiwi"],
answer: 0
}, {
q: "What does the ๐ฆ emoji represent?",
choices: ["Bee", "Butterfly", "Moth", "Dragonfly"],
answer: 1
}, {
q: "What does the ๐ emoji represent?",
choices: ["Soccer", "Basketball", "Tennis", "Baseball"],
answer: 1
}, {
q: "What does the ๐ฐ emoji represent?",
choices: ["Palace", "Castle", "Hotel", "Temple"],
answer: 1
}, {
q: "What does the ๐ฆ emoji represent?",
choices: ["Camel", "Giraffe", "Horse", "Deer"],
answer: 1
},
// Flags
{
q: "Which country does this flag ๐ฏ๐ต belong to?",
choices: ["China", "Japan", "South Korea", "Vietnam"],
answer: 1
}, {
q: "Which country does this flag ๐ง๐ท belong to?",
choices: ["Argentina", "Brazil", "Mexico", "Colombia"],
answer: 1
}, {
q: "Which country does this flag ๐จ๐ฆ belong to?",
choices: ["USA", "Canada", "UK", "Australia"],
answer: 1
}, {
q: "Which country does this flag ๐ซ๐ท belong to?",
choices: ["Italy", "France", "Netherlands", "Russia"],
answer: 1
}, {
q: "Which country does this flag ๐ฎ๐ณ belong to?",
choices: ["Pakistan", "India", "Bangladesh", "Nepal"],
answer: 1
}, {
q: "Which country does this flag ๐ฆ๐บ belong to?",
choices: ["New Zealand", "Australia", "UK", "USA"],
answer: 1
}, {
q: "Which country does this flag ๐ฉ๐ช belong to?",
choices: ["Belgium", "Germany", "Austria", "Switzerland"],
answer: 1
}, {
q: "Which country does this flag ๐ช๐ฌ belong to?",
choices: ["Egypt", "Morocco", "Turkey", "Greece"],
answer: 0
}, {
q: "Which country does this flag ๐ฎ๐น belong to?",
choices: ["Ireland", "Italy", "Mexico", "Hungary"],
answer: 1
}, {
q: "Which country does this flag ๐ช๐ธ belong to?",
choices: ["Portugal", "Spain", "France", "Chile"],
answer: 1
},
// Animal Facts
{
q: "Which animal is the largest land animal?",
choices: ["Elephant", "Giraffe", "Rhino", "Hippo"],
answer: 0
}, {
q: "Which animal is known for changing its color?",
choices: ["Chameleon", "Frog", "Snake", "Lizard"],
answer: 0
}, {
q: "Which animal is the fastest on land?",
choices: ["Cheetah", "Lion", "Horse", "Kangaroo"],
answer: 0
}, {
q: "Which animal can fly backwards?",
choices: ["Hummingbird", "Eagle", "Bat", "Sparrow"],
answer: 0
}, {
q: "Which animal is known as the king of the jungle?",
choices: ["Lion", "Tiger", "Bear", "Wolf"],
answer: 0
}, {
q: "Which animal sleeps standing up?",
choices: ["Horse", "Dog", "Cat", "Rabbit"],
answer: 0
}, {
q: "Which animal has black and white stripes?",
choices: ["Zebra", "Tiger", "Panda", "Skunk"],
answer: 0
}, {
q: "Which animal is the tallest in the world?",
choices: ["Giraffe", "Elephant", "Camel", "Ostrich"],
answer: 0
}, {
q: "Which animal is famous for its memory?",
choices: ["Elephant", "Dog", "Cat", "Dolphin"],
answer: 0
}, {
q: "Which animal is a marsupial?",
choices: ["Kangaroo", "Horse", "Cow", "Sheep"],
answer: 0
}];
// --- Game State ---
var questions = []; // The 30 questions for this round
var currentQuestion = 0;
var score = 0;
var answerButtons = [];
var questionText = null;
var scoreText = null;
var progressText = null;
var canAnswer = true;
// --- Utility: Shuffle and pick N ---
function pickRandomQuestions(pool, n) {
var arr = [];
var used = [];
var len = pool.length;
for (var i = 0; i < n; i++) {
var idx;
do {
idx = Math.floor(Math.random() * len);
} while (used.indexOf(idx) !== -1);
used.push(idx);
arr.push(pool[idx]);
}
return arr;
}
// --- UI Setup ---
// Score display (top right, away from top left menu)
scoreText = new Text2("Score: 0", {
size: 80,
fill: 0x222222
});
scoreText.anchor.set(1, 0); // right, top
LK.gui.topRight.addChild(scoreText);
// Progress display (top center)
progressText = new Text2("1 / 50", {
size: 70,
fill: 0x444444
});
progressText.anchor.set(0.5, 0);
LK.gui.top.addChild(progressText);
// Question text (centered, top 1/3 of screen)
questionText = new Text2("", {
size: 110,
fill: 0x222222,
wordWrap: true,
wordWrapWidth: 1800
});
questionText.anchor.set(0.5, 0.5);
questionText.x = 2048 / 2;
questionText.y = 700;
game.addChild(questionText);
// Answer buttons (4, vertically stacked, centered)
var buttonWidth = 1400;
var buttonHeight = 220;
var buttonSpacing = 80;
var buttonStartY = 1100;
var buttonColor = 0xeeeeee;
var buttonColorCorrect = 0x8be78b;
var buttonColorWrong = 0xf77b7b;
var buttonTextColor = "#222222";
function createAnswerButton(i) {
var btn = new Container();
var bg = btn.attachAsset('answerBtn' + i, {
width: buttonWidth,
height: buttonHeight,
color: buttonColor,
shape: 'box',
anchorX: 0.5,
anchorY: 0.5
});
var txt = new Text2("", {
size: 80,
fill: buttonTextColor,
wordWrap: true,
wordWrapWidth: buttonWidth - 80
});
txt.anchor.set(0.5, 0.5);
txt.x = 0;
txt.y = 0;
btn.addChild(txt);
btn.x = 2048 / 2;
btn.y = buttonStartY + i * (buttonHeight + buttonSpacing);
btn.interactive = true;
btn.buttonIndex = i;
btn.bg = bg;
btn.txt = txt;
btn.down = function (x, y, obj) {
if (!canAnswer) return;
handleAnswer(btn.buttonIndex);
};
game.addChild(btn);
return btn;
}
for (var i = 0; i < 4; i++) {
answerButtons.push(createAnswerButton(i));
}
// --- Game Logic ---
function startGame() {
questions = pickRandomQuestions(questionPool, 10);
currentQuestion = 0;
score = 0;
canAnswer = true;
scoreText.setText("Score: 0");
showQuestion();
}
function showQuestion() {
canAnswer = true;
var q = questions[currentQuestion];
questionText.setText(q.q);
progressText.setText(currentQuestion + 1 + " / 10");
for (var i = 0; i < 4; i++) {
answerButtons[i].txt.setText(q.choices[i]);
answerButtons[i].bg.color = buttonColor;
answerButtons[i].bg.tint = buttonColor;
answerButtons[i].visible = true;
}
}
function handleAnswer(selected) {
canAnswer = false;
var q = questions[currentQuestion];
var correct = q.answer;
// Color feedback
for (var i = 0; i < 4; i++) {
if (i === correct) {
tween(answerButtons[i].bg, {
tint: buttonColorCorrect
}, {
duration: 200,
easing: tween.easeIn
});
} else if (i === selected) {
tween(answerButtons[i].bg, {
tint: buttonColorWrong
}, {
duration: 200,
easing: tween.easeIn
});
} else {
tween(answerButtons[i].bg, {
tint: buttonColor
}, {
duration: 200,
easing: tween.easeIn
});
}
}
// Update score if correct, otherwise trigger game over immediately
if (selected === correct) {
score++;
scoreText.setText("Score: " + score);
// --- Play correct answer sound ---
LK.getSound('correct').play();
// --- Confetti burst effect from bottom ---
var confetti = new ConfettiBurst();
game.addChild(confetti);
// Wait, then next question or end
LK.setTimeout(function () {
currentQuestion++;
if (currentQuestion < 10) {
showQuestion();
} else {
showEnd();
}
}, 700);
} else {
// Wrong answer: show feedback, then game over
// --- Play wrong answer sound ---
LK.getSound('wrong').play();
LK.setTimeout(function () {
showEnd();
}, 700);
}
}
function showEnd() {
// Hide answer buttons
for (var i = 0; i < 4; i++) {
answerButtons[i].visible = false;
}
questionText.setText("Quiz Over!\nYou scored " + score + " out of 10.");
progressText.setText("Done!");
// Show game over popup (handled by LK)
LK.setScore(score);
LK.showGameOver();
}
// --- Start the game ---
startGame();
// Play chill background music
LK.playMusic('chill_song'); /****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
// --- Optional: Allow restart on game over (handled by LK) ---
// --- Touchscreen compatibility: all controls are via .down events on buttons ---
// --- No music, sound, or pause ---
// --- No elements in top left 100x100 px (all UI is top, topRight, or center) ---
// --- No background art, just clean white ---
// --- All elements are visible and centered for mobile ---
// --- No keyboard controls ---
// --- No dynamic resizing code needed ---
// --- MVP complete ---
// ConfettiBurst: A visual effect of confetti exploding from the bottom of the screen
var ConfettiBurst = Container.expand(function () {
var self = Container.call(this);
// Number of confetti pieces
var pieces = 32 + Math.floor(Math.random() * 12); // 32-43 pieces
var centerX = 2048 / 2;
var baseY = 2732 - 60; // 60px from bottom
var minLen = 600,
maxLen = 1200;
var minSize = 40,
maxSize = 80;
var colors = [0xff5e5e, 0x5ecbff, 0xffe15e, 0x7cff5e, 0xb95eff, 0xff5edb, 0x5effb9, 0xffffff];
for (var i = 0; i < pieces; i++) {
var angle = -Math.PI / 2 + (Math.random() - 0.5) * Math.PI * 0.9; // -80deg to +80deg
var len = minLen + Math.random() * (maxLen - minLen);
var size = minSize + Math.random() * (maxSize - minSize);
var color = colors[Math.floor(Math.random() * colors.length)];
var conf = self.attachAsset('confetti' + i, {
width: size * (0.7 + Math.random() * 0.6),
height: size * (0.7 + Math.random() * 0.6),
color: color,
shape: 'box',
anchorX: 0.5,
anchorY: 1
});
conf.x = centerX + (Math.random() - 0.5) * 200;
conf.y = baseY;
conf.rotation = angle + (Math.random() - 0.5) * 0.5;
conf.alpha = 0.85 + Math.random() * 0.15;
// Animate: move out, rotate, fall, and fade
(function (confetti, angle, len) {
var targetX = confetti.x + Math.cos(angle) * len;
var targetY = confetti.y + Math.sin(angle) * len + 200 + Math.random() * 200;
var rot = confetti.rotation + (Math.random() - 0.5) * 2.5;
tween(confetti, {
x: targetX,
y: targetY,
rotation: rot,
alpha: 0
}, {
duration: 900 + Math.random() * 200,
easing: tween.easeOut,
onComplete: function onComplete() {
if (confetti.parent) confetti.parent.removeChild(confetti);
}
});
})(conf, angle, len);
}
// Remove the whole effect after animation
LK.setTimeout(function () {
if (self.parent) self.parent.removeChild(self);
}, 1200);
return self;
});
/****
* Initialize Game
****/
// No custom classes needed for MVP, as all elements are UI and static.
var game = new LK.Game({
backgroundColor: 0x87ceeb // Sky blue background for a friendly quiz look
});
/****
* Game Code
****/
// Background image asset (2048x2732, covers full game area)
// --- Add background image ---
var backgroundImg = LK.getAsset('background', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 0,
width: 2048,
height: 2732
});
game.addChild(backgroundImg);
// --- Question Pool ---
// Initialize chill background music asset
var questionPool = [
// Emoji
{
q: "What does the ๐ฆ emoji represent?",
choices: ["Unicorn", "Horse", "Rhino", "Dragon"],
answer: 0
}, {
q: "What does the ๐ emoji mean?",
choices: ["Crying", "Laughing with tears", "Angry", "Surprised"],
answer: 1
}, {
q: "What does the ๐ emoji represent?",
choices: ["Cake", "Pizza", "Sandwich", "Pie"],
answer: 1
}, {
q: "What does the ๐ฆ emoji represent?",
choices: ["Tiger", "Lion", "Bear", "Dog"],
answer: 1
}, {
q: "What does the ๐ง emoji represent?",
choices: ["Penguin", "Duck", "Chicken", "Ostrich"],
answer: 0
}, {
q: "What does the ๐ฅ emoji represent?",
choices: ["Avocado", "Pear", "Apple", "Kiwi"],
answer: 0
}, {
q: "What does the ๐ฆ emoji represent?",
choices: ["Bee", "Butterfly", "Moth", "Dragonfly"],
answer: 1
}, {
q: "What does the ๐ emoji represent?",
choices: ["Soccer", "Basketball", "Tennis", "Baseball"],
answer: 1
}, {
q: "What does the ๐ฐ emoji represent?",
choices: ["Palace", "Castle", "Hotel", "Temple"],
answer: 1
}, {
q: "What does the ๐ฆ emoji represent?",
choices: ["Camel", "Giraffe", "Horse", "Deer"],
answer: 1
},
// Flags
{
q: "Which country does this flag ๐ฏ๐ต belong to?",
choices: ["China", "Japan", "South Korea", "Vietnam"],
answer: 1
}, {
q: "Which country does this flag ๐ง๐ท belong to?",
choices: ["Argentina", "Brazil", "Mexico", "Colombia"],
answer: 1
}, {
q: "Which country does this flag ๐จ๐ฆ belong to?",
choices: ["USA", "Canada", "UK", "Australia"],
answer: 1
}, {
q: "Which country does this flag ๐ซ๐ท belong to?",
choices: ["Italy", "France", "Netherlands", "Russia"],
answer: 1
}, {
q: "Which country does this flag ๐ฎ๐ณ belong to?",
choices: ["Pakistan", "India", "Bangladesh", "Nepal"],
answer: 1
}, {
q: "Which country does this flag ๐ฆ๐บ belong to?",
choices: ["New Zealand", "Australia", "UK", "USA"],
answer: 1
}, {
q: "Which country does this flag ๐ฉ๐ช belong to?",
choices: ["Belgium", "Germany", "Austria", "Switzerland"],
answer: 1
}, {
q: "Which country does this flag ๐ช๐ฌ belong to?",
choices: ["Egypt", "Morocco", "Turkey", "Greece"],
answer: 0
}, {
q: "Which country does this flag ๐ฎ๐น belong to?",
choices: ["Ireland", "Italy", "Mexico", "Hungary"],
answer: 1
}, {
q: "Which country does this flag ๐ช๐ธ belong to?",
choices: ["Portugal", "Spain", "France", "Chile"],
answer: 1
},
// Animal Facts
{
q: "Which animal is the largest land animal?",
choices: ["Elephant", "Giraffe", "Rhino", "Hippo"],
answer: 0
}, {
q: "Which animal is known for changing its color?",
choices: ["Chameleon", "Frog", "Snake", "Lizard"],
answer: 0
}, {
q: "Which animal is the fastest on land?",
choices: ["Cheetah", "Lion", "Horse", "Kangaroo"],
answer: 0
}, {
q: "Which animal can fly backwards?",
choices: ["Hummingbird", "Eagle", "Bat", "Sparrow"],
answer: 0
}, {
q: "Which animal is known as the king of the jungle?",
choices: ["Lion", "Tiger", "Bear", "Wolf"],
answer: 0
}, {
q: "Which animal sleeps standing up?",
choices: ["Horse", "Dog", "Cat", "Rabbit"],
answer: 0
}, {
q: "Which animal has black and white stripes?",
choices: ["Zebra", "Tiger", "Panda", "Skunk"],
answer: 0
}, {
q: "Which animal is the tallest in the world?",
choices: ["Giraffe", "Elephant", "Camel", "Ostrich"],
answer: 0
}, {
q: "Which animal is famous for its memory?",
choices: ["Elephant", "Dog", "Cat", "Dolphin"],
answer: 0
}, {
q: "Which animal is a marsupial?",
choices: ["Kangaroo", "Horse", "Cow", "Sheep"],
answer: 0
}];
// --- Game State ---
var questions = []; // The 30 questions for this round
var currentQuestion = 0;
var score = 0;
var answerButtons = [];
var questionText = null;
var scoreText = null;
var progressText = null;
var canAnswer = true;
// --- Utility: Shuffle and pick N ---
function pickRandomQuestions(pool, n) {
var arr = [];
var used = [];
var len = pool.length;
for (var i = 0; i < n; i++) {
var idx;
do {
idx = Math.floor(Math.random() * len);
} while (used.indexOf(idx) !== -1);
used.push(idx);
arr.push(pool[idx]);
}
return arr;
}
// --- UI Setup ---
// Score display (top right, away from top left menu)
scoreText = new Text2("Score: 0", {
size: 80,
fill: 0x222222
});
scoreText.anchor.set(1, 0); // right, top
LK.gui.topRight.addChild(scoreText);
// Progress display (top center)
progressText = new Text2("1 / 50", {
size: 70,
fill: 0x444444
});
progressText.anchor.set(0.5, 0);
LK.gui.top.addChild(progressText);
// Question text (centered, top 1/3 of screen)
questionText = new Text2("", {
size: 110,
fill: 0x222222,
wordWrap: true,
wordWrapWidth: 1800
});
questionText.anchor.set(0.5, 0.5);
questionText.x = 2048 / 2;
questionText.y = 700;
game.addChild(questionText);
// Answer buttons (4, vertically stacked, centered)
var buttonWidth = 1400;
var buttonHeight = 220;
var buttonSpacing = 80;
var buttonStartY = 1100;
var buttonColor = 0xeeeeee;
var buttonColorCorrect = 0x8be78b;
var buttonColorWrong = 0xf77b7b;
var buttonTextColor = "#222222";
function createAnswerButton(i) {
var btn = new Container();
var bg = btn.attachAsset('answerBtn' + i, {
width: buttonWidth,
height: buttonHeight,
color: buttonColor,
shape: 'box',
anchorX: 0.5,
anchorY: 0.5
});
var txt = new Text2("", {
size: 80,
fill: buttonTextColor,
wordWrap: true,
wordWrapWidth: buttonWidth - 80
});
txt.anchor.set(0.5, 0.5);
txt.x = 0;
txt.y = 0;
btn.addChild(txt);
btn.x = 2048 / 2;
btn.y = buttonStartY + i * (buttonHeight + buttonSpacing);
btn.interactive = true;
btn.buttonIndex = i;
btn.bg = bg;
btn.txt = txt;
btn.down = function (x, y, obj) {
if (!canAnswer) return;
handleAnswer(btn.buttonIndex);
};
game.addChild(btn);
return btn;
}
for (var i = 0; i < 4; i++) {
answerButtons.push(createAnswerButton(i));
}
// --- Game Logic ---
function startGame() {
questions = pickRandomQuestions(questionPool, 10);
currentQuestion = 0;
score = 0;
canAnswer = true;
scoreText.setText("Score: 0");
showQuestion();
}
function showQuestion() {
canAnswer = true;
var q = questions[currentQuestion];
questionText.setText(q.q);
progressText.setText(currentQuestion + 1 + " / 10");
for (var i = 0; i < 4; i++) {
answerButtons[i].txt.setText(q.choices[i]);
answerButtons[i].bg.color = buttonColor;
answerButtons[i].bg.tint = buttonColor;
answerButtons[i].visible = true;
}
}
function handleAnswer(selected) {
canAnswer = false;
var q = questions[currentQuestion];
var correct = q.answer;
// Color feedback
for (var i = 0; i < 4; i++) {
if (i === correct) {
tween(answerButtons[i].bg, {
tint: buttonColorCorrect
}, {
duration: 200,
easing: tween.easeIn
});
} else if (i === selected) {
tween(answerButtons[i].bg, {
tint: buttonColorWrong
}, {
duration: 200,
easing: tween.easeIn
});
} else {
tween(answerButtons[i].bg, {
tint: buttonColor
}, {
duration: 200,
easing: tween.easeIn
});
}
}
// Update score if correct, otherwise trigger game over immediately
if (selected === correct) {
score++;
scoreText.setText("Score: " + score);
// --- Play correct answer sound ---
LK.getSound('correct').play();
// --- Confetti burst effect from bottom ---
var confetti = new ConfettiBurst();
game.addChild(confetti);
// Wait, then next question or end
LK.setTimeout(function () {
currentQuestion++;
if (currentQuestion < 10) {
showQuestion();
} else {
showEnd();
}
}, 700);
} else {
// Wrong answer: show feedback, then game over
// --- Play wrong answer sound ---
LK.getSound('wrong').play();
LK.setTimeout(function () {
showEnd();
}, 700);
}
}
function showEnd() {
// Hide answer buttons
for (var i = 0; i < 4; i++) {
answerButtons[i].visible = false;
}
questionText.setText("Quiz Over!\nYou scored " + score + " out of 10.");
progressText.setText("Done!");
// Show game over popup (handled by LK)
LK.setScore(score);
LK.showGameOver();
}
// --- Start the game ---
startGame();
// Play chill background music
LK.playMusic('chill_song');