/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ var AnswerButton = Container.expand(function (optionText, index) { var self = Container.call(this); var buttonGraphics = self.attachAsset('button', { anchorX: 0.5, anchorY: 0.5 }); var optionLetter = ['A', 'B', 'C', 'D'][index]; var buttonText = new Text2(optionLetter + ': ' + optionText, { size: 60, fill: 0xFFFFFF }); buttonText.anchor.set(0.5, 0.5); self.addChild(buttonText); self.isCorrect = false; self.optionText = optionText; self.setCorrect = function (correct) { self.isCorrect = correct; }; self.showResult = function (isSelected) { if (isSelected) { if (self.isCorrect) { tween(buttonGraphics, { tint: 0x42f56f }, { duration: 300 }); LK.getSound('correct').play(); } else { tween(buttonGraphics, { tint: 0xf54242 }, { duration: 300 }); LK.getSound('wrong').play(); } } else if (self.isCorrect) { tween(buttonGraphics, { tint: 0x42f56f }, { duration: 300 }); } }; self.reset = function () { tween(buttonGraphics, { tint: 0x4287f5 }, { duration: 300 }); }; self.down = function (x, y, obj) { tween(buttonGraphics, { scaleX: 0.95, scaleY: 0.95 }, { duration: 100 }); }; self.up = function (x, y, obj) { tween(buttonGraphics, { scaleX: 1, scaleY: 1 }, { duration: 100 }); // Handle selection in the game class if (typeof game.onOptionSelected === 'function') { game.onOptionSelected(self); } }; return self; }); var Question = Container.expand(function () { var self = Container.call(this); self.question = ""; self.options = []; self.correctAnswer = 0; self.difficulty = 0; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0xf0f0f0 }); /**** * Game Code ****/ // Game configuration var currentQuestion = 0; var totalQuestions = 20; var questions = []; var answerButtons = []; var questionText = null; var difficultyText = null; var progressText = null; var canAnswer = true; var difficultyLevels = ["Easy", "Medium", "Difficult", "Extreme"]; var currentDifficulty = 0; var wrongAnswerCount = 0; var wrongCountText = null; // Generate questions of increasing difficulty function generateQuestions() { questions = []; // Easy questions (1-5) for (var i = 0; i < 5; i++) { var num1 = Math.floor(Math.random() * 10) + 1; var num2 = Math.floor(Math.random() * 10) + 1; var operation = ['+', '-', '÷'][Math.floor(Math.random() * 3)]; // Add division with proper symbol // Ensure division results in an integer if needed if (operation === '÷' && num1 % num2 !== 0) { num1 = num2 * (Math.floor(Math.random() * 5) + 1); } var correctAnswer = calculateAnswer(num1, num2, operation); questions.push({ question: "".concat(num1, " ").concat(operation, " ").concat(num2, " = ?"), options: generateOptions(correctAnswer, 20), correctAnswer: correctAnswer, difficulty: 0 }); } // Medium questions (6-10) for (var i = 0; i < 5; i++) { var num1 = Math.floor(Math.random() * 20) + 10; var num2 = Math.floor(Math.random() * 20) + 10; var operation = ['+', '-', '÷'][Math.floor(Math.random() * 3)]; // Include division with proper symbol if (operation === '÷' && num1 % num2 !== 0) { // Make sure division results in an integer num1 = num2 * (Math.floor(Math.random() * 10) + 1); } var correctAnswer = calculateAnswer(num1, num2, operation); questions.push({ question: "".concat(num1, " ").concat(operation, " ").concat(num2, " = ?"), options: generateOptions(correctAnswer, 50), correctAnswer: correctAnswer, difficulty: 1 }); } // Difficult questions (11-15) for (var i = 0; i < 5; i++) { var num1 = Math.floor(Math.random() * 50) + 20; var num2 = Math.floor(Math.random() * 30) + 10; var num3 = Math.floor(Math.random() * 10) + 1; // Make sure to include multiplication var op1 = '×'; // Force multiplication for first operation with proper symbol var op2 = ['+', '-', '×'][Math.floor(Math.random() * 3)]; var question = "".concat(num1, " ").concat(op1, " ").concat(num2, " ").concat(op2, " ").concat(num3, " = ?"); var correctAnswer = calculateComplexAnswer(num1, num2, num3, op1, op2); questions.push({ question: question, options: generateOptions(correctAnswer, 100), correctAnswer: correctAnswer, difficulty: 2 }); } // Extreme questions (16-20) for (var i = 0; i < 5; i++) { var question = ""; var correctAnswer = 0; // Always use division for extreme questions var questionType = 2; // Force complex equation with division switch (questionType) { case 0: // Powers and roots var base = Math.floor(Math.random() * 10) + 2; var exponent = Math.floor(Math.random() * 3) + 2; question = "".concat(base, "^").concat(exponent, " = ?"); correctAnswer = Math.pow(base, exponent); break; case 1: // Percentage problems var whole = Math.floor(Math.random() * 100) + 50; var percentage = Math.floor(Math.random() * 90) + 10; question = "".concat(percentage, "% of ").concat(whole, " = ?"); correctAnswer = percentage / 100 * whole; break; case 2: // Complex equation with division var a = Math.floor(Math.random() * 30) + 20; var b = Math.floor(Math.random() * 10) + 2; var c = Math.floor(Math.random() * 5) + 1; var d = Math.floor(Math.random() * 10) + 5; question = "(".concat(a, " ÷ ").concat(b, ") + (").concat(c, " ÷ ").concat(d, ") = ?"); correctAnswer = a / b + c / d; correctAnswer = Math.round(correctAnswer * 100) / 100; // Round to 2 decimal places break; case 3: // Sequence problems var start = Math.floor(Math.random() * 5) + 1; var diff = Math.floor(Math.random() * 5) + 2; var sequence = []; for (var j = 0; j < 5; j++) { sequence.push(start + j * diff); } question = "What comes next: ".concat(sequence.join(", "), ", ?"); correctAnswer = start + 5 * diff; break; } questions.push({ question: question, options: generateOptions(correctAnswer, 200), correctAnswer: correctAnswer, difficulty: 3 }); } } function calculateAnswer(num1, num2, operation) { switch (operation) { case '+': return num1 + num2; case '-': return num1 - num2; case '*': return num1 * num2; case '÷': return num1 / num2; case '/': return num1 / num2; default: return 0; } } function calculateComplexAnswer(num1, num2, num3, op1, op2) { // Follow order of operations (BODMAS) // Convert operators to calculation-compatible format var calcOp1 = op1 === '×' ? '*' : op1 === '÷' ? '/' : op1; var calcOp2 = op2 === '×' ? '*' : op2 === '÷' ? '/' : op2; if ((calcOp1 === '*' || calcOp1 === '/') && (calcOp2 === '+' || calcOp2 === '-')) { // First operation takes precedence var intermediateResult = calculateAnswer(num1, num2, calcOp1); return calculateAnswer(intermediateResult, num3, calcOp2); } else { // Second operation takes precedence var intermediateResult = calculateAnswer(num2, num3, calcOp2); return calculateAnswer(num1, intermediateResult, calcOp1); } } function generateOptions(correctAnswer, range) { var options = [correctAnswer]; // Generate 3 wrong answers while (options.length < 4) { var offset = Math.floor(Math.random() * range) - range / 2; var wrongAnswer = correctAnswer + offset; // Make sure the wrong answer is not the same as any existing options // and is not negative if (offset !== 0 && !options.includes(wrongAnswer) && wrongAnswer >= 0) { options.push(wrongAnswer); } } // Shuffle options for (var i = options.length - 1; i > 0; i--) { var j = Math.floor(Math.random() * (i + 1)); var temp = options[i]; options[i] = options[j]; options[j] = temp; } // Round decimal answers for better display for (var i = 0; i < options.length; i++) { if (options[i] % 1 !== 0) { options[i] = Math.round(options[i] * 100) / 100; } } return options; } function initializeGame() { // Clear any existing elements while (game.children.length > 0) { game.removeChild(game.children[0]); } // Reset variables currentQuestion = 0; currentDifficulty = 0; answerButtons = []; wrongAnswerCount = 0; canAnswer = true; // Generate new questions generateQuestions(); // Create title var titleText = new Text2("Math Challenge Quiz", { size: 100, fill: 0x1A1A1A }); titleText.anchor.set(0.5, 0); titleText.x = 2048 / 2; titleText.y = 100; game.addChild(titleText); // Create difficulty indicator difficultyText = new Text2("Difficulty: ".concat(difficultyLevels[currentDifficulty]), { size: 60, fill: 0x1A1A1A }); difficultyText.anchor.set(0.5, 0); difficultyText.x = 2048 / 2; difficultyText.y = 220; game.addChild(difficultyText); // Create progress indicator progressText = new Text2("Question: ".concat(currentQuestion + 1, "/").concat(totalQuestions), { size: 60, fill: 0x1A1A1A }); progressText.anchor.set(0.5, 0); progressText.x = 2048 / 2; progressText.y = 300; game.addChild(progressText); // Create question text questionText = new Text2("", { size: 80, fill: 0x1A1A1A }); questionText.anchor.set(0.5, 0); questionText.x = 2048 / 2; questionText.y = 450; game.addChild(questionText); // Create answer buttons for (var i = 0; i < 4; i++) { var button = new AnswerButton("", i); // Calculate position var buttonWidth = 600; var buttonHeight = 250; var padding = 100; if (i < 2) { button.x = 2048 / 2 - buttonWidth / 2 - padding / 2 + i * (buttonWidth + padding); button.y = 800; } else { button.x = 2048 / 2 - buttonWidth / 2 - padding / 2 + (i - 2) * (buttonWidth + padding); button.y = 1100; } game.addChild(button); answerButtons.push(button); } // Create score display var scoreText = new Text2("Score: 0", { size: 60, fill: 0x1A1A1A }); scoreText.anchor.set(1, 0); scoreText.x = 2048 - 50; scoreText.y = 50; game.addChild(scoreText); // Create wrong answer counter wrongCountText = new Text2("Mistakes: 0/4", { size: 60, fill: 0xf54242 }); wrongCountText.anchor.set(0, 0); wrongCountText.x = 50; wrongCountText.y = 50; game.addChild(wrongCountText); // Display first question displayQuestion(currentQuestion); // Play background music LK.playMusic('bgMusic'); } function displayQuestion(questionIndex) { if (questionIndex >= questions.length) { return; } var question = questions[questionIndex]; // Update difficulty if needed var newDifficulty = question.difficulty; if (newDifficulty !== currentDifficulty) { currentDifficulty = newDifficulty; difficultyText.setText("Difficulty: ".concat(difficultyLevels[currentDifficulty])); LK.getSound('levelUp').play(); } // Update progress progressText.setText("Question: ".concat(questionIndex + 1, "/").concat(totalQuestions)); // Update question text questionText.setText(question.question); // Reset and update all buttons for (var i = 0; i < 4; i++) { answerButtons[i].reset(); answerButtons[i].setCorrect(question.options[i] === question.correctAnswer); var buttonText = new Text2(['A', 'B', 'C', 'D'][i] + ': ' + question.options[i], { size: 60, fill: 0xFFFFFF }); buttonText.anchor.set(0.5, 0.5); // Remove any existing text while (answerButtons[i].children.length > 1) { answerButtons[i].removeChild(answerButtons[i].children[1]); } answerButtons[i].addChild(buttonText); answerButtons[i].optionText = question.options[i]; } canAnswer = true; } game.onOptionSelected = function (selectedButton) { if (!canAnswer) return; canAnswer = false; // Show results for all buttons for (var i = 0; i < answerButtons.length; i++) { answerButtons[i].showResult(answerButtons[i] === selectedButton); } // Check if the selected answer is correct if (selectedButton.isCorrect) { // Increase score LK.setScore(LK.getScore() + 1); // Move to next question after a delay LK.setTimeout(function () { currentQuestion++; if (currentQuestion >= totalQuestions) { // Game completed LK.showYouWin(); } else { displayQuestion(currentQuestion); } }, 1000); } else { // Increase wrong answer count wrongAnswerCount++; wrongCountText.setText("Mistakes: " + wrongAnswerCount + "/4"); // If 4 wrong answers, show game over after a delay if (wrongAnswerCount >= 4) { LK.setTimeout(function () { LK.showGameOver(); }, 1500); } else { // Otherwise, continue to next question after a delay LK.setTimeout(function () { currentQuestion++; if (currentQuestion >= totalQuestions) { // Game completed LK.showYouWin(); } else { displayQuestion(currentQuestion); } }, 1500); } } }; // On window resize, make sure everything is positioned correctly LK.on('resize', function () { // The engine handles scaling automatically }); // Initialize the game initializeGame();
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/****
* Classes
****/
var AnswerButton = Container.expand(function (optionText, index) {
var self = Container.call(this);
var buttonGraphics = self.attachAsset('button', {
anchorX: 0.5,
anchorY: 0.5
});
var optionLetter = ['A', 'B', 'C', 'D'][index];
var buttonText = new Text2(optionLetter + ': ' + optionText, {
size: 60,
fill: 0xFFFFFF
});
buttonText.anchor.set(0.5, 0.5);
self.addChild(buttonText);
self.isCorrect = false;
self.optionText = optionText;
self.setCorrect = function (correct) {
self.isCorrect = correct;
};
self.showResult = function (isSelected) {
if (isSelected) {
if (self.isCorrect) {
tween(buttonGraphics, {
tint: 0x42f56f
}, {
duration: 300
});
LK.getSound('correct').play();
} else {
tween(buttonGraphics, {
tint: 0xf54242
}, {
duration: 300
});
LK.getSound('wrong').play();
}
} else if (self.isCorrect) {
tween(buttonGraphics, {
tint: 0x42f56f
}, {
duration: 300
});
}
};
self.reset = function () {
tween(buttonGraphics, {
tint: 0x4287f5
}, {
duration: 300
});
};
self.down = function (x, y, obj) {
tween(buttonGraphics, {
scaleX: 0.95,
scaleY: 0.95
}, {
duration: 100
});
};
self.up = function (x, y, obj) {
tween(buttonGraphics, {
scaleX: 1,
scaleY: 1
}, {
duration: 100
});
// Handle selection in the game class
if (typeof game.onOptionSelected === 'function') {
game.onOptionSelected(self);
}
};
return self;
});
var Question = Container.expand(function () {
var self = Container.call(this);
self.question = "";
self.options = [];
self.correctAnswer = 0;
self.difficulty = 0;
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0xf0f0f0
});
/****
* Game Code
****/
// Game configuration
var currentQuestion = 0;
var totalQuestions = 20;
var questions = [];
var answerButtons = [];
var questionText = null;
var difficultyText = null;
var progressText = null;
var canAnswer = true;
var difficultyLevels = ["Easy", "Medium", "Difficult", "Extreme"];
var currentDifficulty = 0;
var wrongAnswerCount = 0;
var wrongCountText = null;
// Generate questions of increasing difficulty
function generateQuestions() {
questions = [];
// Easy questions (1-5)
for (var i = 0; i < 5; i++) {
var num1 = Math.floor(Math.random() * 10) + 1;
var num2 = Math.floor(Math.random() * 10) + 1;
var operation = ['+', '-', '÷'][Math.floor(Math.random() * 3)]; // Add division with proper symbol
// Ensure division results in an integer if needed
if (operation === '÷' && num1 % num2 !== 0) {
num1 = num2 * (Math.floor(Math.random() * 5) + 1);
}
var correctAnswer = calculateAnswer(num1, num2, operation);
questions.push({
question: "".concat(num1, " ").concat(operation, " ").concat(num2, " = ?"),
options: generateOptions(correctAnswer, 20),
correctAnswer: correctAnswer,
difficulty: 0
});
}
// Medium questions (6-10)
for (var i = 0; i < 5; i++) {
var num1 = Math.floor(Math.random() * 20) + 10;
var num2 = Math.floor(Math.random() * 20) + 10;
var operation = ['+', '-', '÷'][Math.floor(Math.random() * 3)]; // Include division with proper symbol
if (operation === '÷' && num1 % num2 !== 0) {
// Make sure division results in an integer
num1 = num2 * (Math.floor(Math.random() * 10) + 1);
}
var correctAnswer = calculateAnswer(num1, num2, operation);
questions.push({
question: "".concat(num1, " ").concat(operation, " ").concat(num2, " = ?"),
options: generateOptions(correctAnswer, 50),
correctAnswer: correctAnswer,
difficulty: 1
});
}
// Difficult questions (11-15)
for (var i = 0; i < 5; i++) {
var num1 = Math.floor(Math.random() * 50) + 20;
var num2 = Math.floor(Math.random() * 30) + 10;
var num3 = Math.floor(Math.random() * 10) + 1;
// Make sure to include multiplication
var op1 = '×'; // Force multiplication for first operation with proper symbol
var op2 = ['+', '-', '×'][Math.floor(Math.random() * 3)];
var question = "".concat(num1, " ").concat(op1, " ").concat(num2, " ").concat(op2, " ").concat(num3, " = ?");
var correctAnswer = calculateComplexAnswer(num1, num2, num3, op1, op2);
questions.push({
question: question,
options: generateOptions(correctAnswer, 100),
correctAnswer: correctAnswer,
difficulty: 2
});
}
// Extreme questions (16-20)
for (var i = 0; i < 5; i++) {
var question = "";
var correctAnswer = 0;
// Always use division for extreme questions
var questionType = 2; // Force complex equation with division
switch (questionType) {
case 0:
// Powers and roots
var base = Math.floor(Math.random() * 10) + 2;
var exponent = Math.floor(Math.random() * 3) + 2;
question = "".concat(base, "^").concat(exponent, " = ?");
correctAnswer = Math.pow(base, exponent);
break;
case 1:
// Percentage problems
var whole = Math.floor(Math.random() * 100) + 50;
var percentage = Math.floor(Math.random() * 90) + 10;
question = "".concat(percentage, "% of ").concat(whole, " = ?");
correctAnswer = percentage / 100 * whole;
break;
case 2:
// Complex equation with division
var a = Math.floor(Math.random() * 30) + 20;
var b = Math.floor(Math.random() * 10) + 2;
var c = Math.floor(Math.random() * 5) + 1;
var d = Math.floor(Math.random() * 10) + 5;
question = "(".concat(a, " ÷ ").concat(b, ") + (").concat(c, " ÷ ").concat(d, ") = ?");
correctAnswer = a / b + c / d;
correctAnswer = Math.round(correctAnswer * 100) / 100; // Round to 2 decimal places
break;
case 3:
// Sequence problems
var start = Math.floor(Math.random() * 5) + 1;
var diff = Math.floor(Math.random() * 5) + 2;
var sequence = [];
for (var j = 0; j < 5; j++) {
sequence.push(start + j * diff);
}
question = "What comes next: ".concat(sequence.join(", "), ", ?");
correctAnswer = start + 5 * diff;
break;
}
questions.push({
question: question,
options: generateOptions(correctAnswer, 200),
correctAnswer: correctAnswer,
difficulty: 3
});
}
}
function calculateAnswer(num1, num2, operation) {
switch (operation) {
case '+':
return num1 + num2;
case '-':
return num1 - num2;
case '*':
return num1 * num2;
case '÷':
return num1 / num2;
case '/':
return num1 / num2;
default:
return 0;
}
}
function calculateComplexAnswer(num1, num2, num3, op1, op2) {
// Follow order of operations (BODMAS)
// Convert operators to calculation-compatible format
var calcOp1 = op1 === '×' ? '*' : op1 === '÷' ? '/' : op1;
var calcOp2 = op2 === '×' ? '*' : op2 === '÷' ? '/' : op2;
if ((calcOp1 === '*' || calcOp1 === '/') && (calcOp2 === '+' || calcOp2 === '-')) {
// First operation takes precedence
var intermediateResult = calculateAnswer(num1, num2, calcOp1);
return calculateAnswer(intermediateResult, num3, calcOp2);
} else {
// Second operation takes precedence
var intermediateResult = calculateAnswer(num2, num3, calcOp2);
return calculateAnswer(num1, intermediateResult, calcOp1);
}
}
function generateOptions(correctAnswer, range) {
var options = [correctAnswer];
// Generate 3 wrong answers
while (options.length < 4) {
var offset = Math.floor(Math.random() * range) - range / 2;
var wrongAnswer = correctAnswer + offset;
// Make sure the wrong answer is not the same as any existing options
// and is not negative
if (offset !== 0 && !options.includes(wrongAnswer) && wrongAnswer >= 0) {
options.push(wrongAnswer);
}
}
// Shuffle options
for (var i = options.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var temp = options[i];
options[i] = options[j];
options[j] = temp;
}
// Round decimal answers for better display
for (var i = 0; i < options.length; i++) {
if (options[i] % 1 !== 0) {
options[i] = Math.round(options[i] * 100) / 100;
}
}
return options;
}
function initializeGame() {
// Clear any existing elements
while (game.children.length > 0) {
game.removeChild(game.children[0]);
}
// Reset variables
currentQuestion = 0;
currentDifficulty = 0;
answerButtons = [];
wrongAnswerCount = 0;
canAnswer = true;
// Generate new questions
generateQuestions();
// Create title
var titleText = new Text2("Math Challenge Quiz", {
size: 100,
fill: 0x1A1A1A
});
titleText.anchor.set(0.5, 0);
titleText.x = 2048 / 2;
titleText.y = 100;
game.addChild(titleText);
// Create difficulty indicator
difficultyText = new Text2("Difficulty: ".concat(difficultyLevels[currentDifficulty]), {
size: 60,
fill: 0x1A1A1A
});
difficultyText.anchor.set(0.5, 0);
difficultyText.x = 2048 / 2;
difficultyText.y = 220;
game.addChild(difficultyText);
// Create progress indicator
progressText = new Text2("Question: ".concat(currentQuestion + 1, "/").concat(totalQuestions), {
size: 60,
fill: 0x1A1A1A
});
progressText.anchor.set(0.5, 0);
progressText.x = 2048 / 2;
progressText.y = 300;
game.addChild(progressText);
// Create question text
questionText = new Text2("", {
size: 80,
fill: 0x1A1A1A
});
questionText.anchor.set(0.5, 0);
questionText.x = 2048 / 2;
questionText.y = 450;
game.addChild(questionText);
// Create answer buttons
for (var i = 0; i < 4; i++) {
var button = new AnswerButton("", i);
// Calculate position
var buttonWidth = 600;
var buttonHeight = 250;
var padding = 100;
if (i < 2) {
button.x = 2048 / 2 - buttonWidth / 2 - padding / 2 + i * (buttonWidth + padding);
button.y = 800;
} else {
button.x = 2048 / 2 - buttonWidth / 2 - padding / 2 + (i - 2) * (buttonWidth + padding);
button.y = 1100;
}
game.addChild(button);
answerButtons.push(button);
}
// Create score display
var scoreText = new Text2("Score: 0", {
size: 60,
fill: 0x1A1A1A
});
scoreText.anchor.set(1, 0);
scoreText.x = 2048 - 50;
scoreText.y = 50;
game.addChild(scoreText);
// Create wrong answer counter
wrongCountText = new Text2("Mistakes: 0/4", {
size: 60,
fill: 0xf54242
});
wrongCountText.anchor.set(0, 0);
wrongCountText.x = 50;
wrongCountText.y = 50;
game.addChild(wrongCountText);
// Display first question
displayQuestion(currentQuestion);
// Play background music
LK.playMusic('bgMusic');
}
function displayQuestion(questionIndex) {
if (questionIndex >= questions.length) {
return;
}
var question = questions[questionIndex];
// Update difficulty if needed
var newDifficulty = question.difficulty;
if (newDifficulty !== currentDifficulty) {
currentDifficulty = newDifficulty;
difficultyText.setText("Difficulty: ".concat(difficultyLevels[currentDifficulty]));
LK.getSound('levelUp').play();
}
// Update progress
progressText.setText("Question: ".concat(questionIndex + 1, "/").concat(totalQuestions));
// Update question text
questionText.setText(question.question);
// Reset and update all buttons
for (var i = 0; i < 4; i++) {
answerButtons[i].reset();
answerButtons[i].setCorrect(question.options[i] === question.correctAnswer);
var buttonText = new Text2(['A', 'B', 'C', 'D'][i] + ': ' + question.options[i], {
size: 60,
fill: 0xFFFFFF
});
buttonText.anchor.set(0.5, 0.5);
// Remove any existing text
while (answerButtons[i].children.length > 1) {
answerButtons[i].removeChild(answerButtons[i].children[1]);
}
answerButtons[i].addChild(buttonText);
answerButtons[i].optionText = question.options[i];
}
canAnswer = true;
}
game.onOptionSelected = function (selectedButton) {
if (!canAnswer) return;
canAnswer = false;
// Show results for all buttons
for (var i = 0; i < answerButtons.length; i++) {
answerButtons[i].showResult(answerButtons[i] === selectedButton);
}
// Check if the selected answer is correct
if (selectedButton.isCorrect) {
// Increase score
LK.setScore(LK.getScore() + 1);
// Move to next question after a delay
LK.setTimeout(function () {
currentQuestion++;
if (currentQuestion >= totalQuestions) {
// Game completed
LK.showYouWin();
} else {
displayQuestion(currentQuestion);
}
}, 1000);
} else {
// Increase wrong answer count
wrongAnswerCount++;
wrongCountText.setText("Mistakes: " + wrongAnswerCount + "/4");
// If 4 wrong answers, show game over after a delay
if (wrongAnswerCount >= 4) {
LK.setTimeout(function () {
LK.showGameOver();
}, 1500);
} else {
// Otherwise, continue to next question after a delay
LK.setTimeout(function () {
currentQuestion++;
if (currentQuestion >= totalQuestions) {
// Game completed
LK.showYouWin();
} else {
displayQuestion(currentQuestion);
}
}, 1500);
}
}
};
// On window resize, make sure everything is positioned correctly
LK.on('resize', function () {
// The engine handles scaling automatically
});
// Initialize the game
initializeGame();