/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var AnswerButton = Container.expand(function () {
var self = Container.call(this);
var background = self.attachAsset('answerButton', {
anchorX: 0.5,
anchorY: 0.5
});
var answerText = new Text2('0', {
size: 80,
fill: 0xFFFFFF
});
answerText.anchor.set(0.5, 0.5);
self.addChild(answerText);
self.value = 0;
self.isCorrect = false;
self.background = background;
self.answerText = answerText;
self.setValue = function (value, correct) {
self.value = value;
self.isCorrect = correct;
self.answerText.setText(value.toString());
};
self.setCorrectStyle = function () {
self.removeChild(self.background);
self.background = self.attachAsset('answerButtonCorrect', {
anchorX: 0.5,
anchorY: 0.5
});
self.addChildAt(self.background, 0);
};
self.setWrongStyle = function () {
self.removeChild(self.background);
self.background = self.attachAsset('answerButtonWrong', {
anchorX: 0.5,
anchorY: 0.5
});
self.addChildAt(self.background, 0);
};
self.resetStyle = function () {
self.removeChild(self.background);
self.background = self.attachAsset('answerButton', {
anchorX: 0.5,
anchorY: 0.5
});
self.addChildAt(self.background, 0);
};
self.down = function (x, y, obj) {
if (self.isCorrect) {
self.setCorrectStyle();
LK.getSound('correct').play();
LK.setScore(LK.getScore() + 10 * streakMultiplier);
currentStreak++;
updateStreakMultiplier();
correctAnswers++;
generateNewProblem();
} else {
self.setWrongStyle();
LK.getSound('wrong').play();
wrongAnswers++;
currentStreak = 0;
updateStreakMultiplier();
if (wrongAnswers >= maxWrongAnswers) {
LK.showGameOver();
} else {
LK.setTimeout(function () {
generateNewProblem();
}, 1000);
}
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x4a90e2
});
/****
* Game Code
****/
var currentNum1 = 0;
var currentNum2 = 0;
var correctAnswer = 0;
var answerButtons = [];
var currentStreak = 0;
var streakMultiplier = 1;
var wrongAnswers = 0;
var correctAnswers = 0;
var maxWrongAnswers = 3;
var difficultyLevel = 1;
// Create background
var background = game.attachAsset('background', {
x: 0,
y: 0
});
// Create problem display area
var problemArea = game.attachAsset('problemArea', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 400
});
// Create problem text
var problemText = new Text2('5 + 3 = ?', {
size: 120,
fill: 0x333333
});
problemText.anchor.set(0.5, 0.5);
problemArea.addChild(problemText);
// Create answer buttons
for (var i = 0; i < 4; i++) {
var button = new AnswerButton();
button.x = 300 + i % 2 * 450 + i % 2 * 150;
button.y = 800 + Math.floor(i / 2) * 200;
answerButtons.push(button);
game.addChild(button);
}
// Create score display
var scoreText = new Text2('Score: 0', {
size: 60,
fill: 0xFFFFFF
});
scoreText.anchor.set(0, 0);
scoreText.x = 150;
scoreText.y = 150;
LK.gui.topLeft.addChild(scoreText);
// Create streak display
var streakText = new Text2('Streak: 0x', {
size: 50,
fill: 0xFFFFFF
});
streakText.anchor.set(1, 0);
streakText.x = -50;
streakText.y = 150;
LK.gui.topRight.addChild(streakText);
// Create wrong answers display
var wrongText = new Text2('Wrong: 0/3', {
size: 40,
fill: 0xFFFFFF
});
wrongText.anchor.set(0.5, 0);
wrongText.x = 0;
wrongText.y = 220;
LK.gui.top.addChild(wrongText);
function generateNumbers() {
if (difficultyLevel === 1) {
// Single digit numbers
currentNum1 = Math.floor(Math.random() * 9) + 1;
currentNum2 = Math.floor(Math.random() * 9) + 1;
} else if (difficultyLevel === 2) {
// Double digit numbers
currentNum1 = Math.floor(Math.random() * 90) + 10;
currentNum2 = Math.floor(Math.random() * 90) + 10;
} else {
// Triple digit numbers
currentNum1 = Math.floor(Math.random() * 900) + 100;
currentNum2 = Math.floor(Math.random() * 900) + 100;
}
correctAnswer = currentNum1 + currentNum2;
}
function generateWrongAnswers() {
var wrongAnswers = [];
var attempts = 0;
while (wrongAnswers.length < 3 && attempts < 50) {
var wrongAnswer;
var variation = Math.floor(Math.random() * 20) + 1;
if (Math.random() < 0.5) {
wrongAnswer = correctAnswer + variation;
} else {
wrongAnswer = correctAnswer - variation;
}
if (wrongAnswer !== correctAnswer && wrongAnswer > 0 && wrongAnswers.indexOf(wrongAnswer) === -1) {
wrongAnswers.push(wrongAnswer);
}
attempts++;
}
return wrongAnswers;
}
function generateNewProblem() {
// Update difficulty based on correct answers
if (correctAnswers >= 10 && difficultyLevel < 2) {
difficultyLevel = 2;
} else if (correctAnswers >= 25 && difficultyLevel < 3) {
difficultyLevel = 3;
}
generateNumbers();
problemText.setText(currentNum1 + ' + ' + currentNum2 + ' = ?');
var wrongAnswersList = generateWrongAnswers();
var allAnswers = [correctAnswer].concat(wrongAnswersList);
// Shuffle answers
for (var i = allAnswers.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var temp = allAnswers[i];
allAnswers[i] = allAnswers[j];
allAnswers[j] = temp;
}
// Set button values
for (var i = 0; i < 4; i++) {
answerButtons[i].setValue(allAnswers[i], allAnswers[i] === correctAnswer);
answerButtons[i].resetStyle();
}
updateDisplay();
}
function updateStreakMultiplier() {
if (currentStreak >= 10) {
streakMultiplier = 3;
} else if (currentStreak >= 5) {
streakMultiplier = 2;
} else {
streakMultiplier = 1;
}
}
function updateDisplay() {
scoreText.setText('Score: ' + LK.getScore());
streakText.setText('Streak: ' + currentStreak + 'x' + streakMultiplier);
wrongText.setText('Wrong: ' + wrongAnswers + '/' + maxWrongAnswers);
}
// Initialize first problem
generateNewProblem();
game.update = function () {
// Game logic is handled by button events
}; ===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,232 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+var AnswerButton = Container.expand(function () {
+ var self = Container.call(this);
+ var background = self.attachAsset('answerButton', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ var answerText = new Text2('0', {
+ size: 80,
+ fill: 0xFFFFFF
+ });
+ answerText.anchor.set(0.5, 0.5);
+ self.addChild(answerText);
+ self.value = 0;
+ self.isCorrect = false;
+ self.background = background;
+ self.answerText = answerText;
+ self.setValue = function (value, correct) {
+ self.value = value;
+ self.isCorrect = correct;
+ self.answerText.setText(value.toString());
+ };
+ self.setCorrectStyle = function () {
+ self.removeChild(self.background);
+ self.background = self.attachAsset('answerButtonCorrect', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.addChildAt(self.background, 0);
+ };
+ self.setWrongStyle = function () {
+ self.removeChild(self.background);
+ self.background = self.attachAsset('answerButtonWrong', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.addChildAt(self.background, 0);
+ };
+ self.resetStyle = function () {
+ self.removeChild(self.background);
+ self.background = self.attachAsset('answerButton', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.addChildAt(self.background, 0);
+ };
+ self.down = function (x, y, obj) {
+ if (self.isCorrect) {
+ self.setCorrectStyle();
+ LK.getSound('correct').play();
+ LK.setScore(LK.getScore() + 10 * streakMultiplier);
+ currentStreak++;
+ updateStreakMultiplier();
+ correctAnswers++;
+ generateNewProblem();
+ } else {
+ self.setWrongStyle();
+ LK.getSound('wrong').play();
+ wrongAnswers++;
+ currentStreak = 0;
+ updateStreakMultiplier();
+ if (wrongAnswers >= maxWrongAnswers) {
+ LK.showGameOver();
+ } else {
+ LK.setTimeout(function () {
+ generateNewProblem();
+ }, 1000);
+ }
+ }
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x4a90e2
+});
+
+/****
+* Game Code
+****/
+var currentNum1 = 0;
+var currentNum2 = 0;
+var correctAnswer = 0;
+var answerButtons = [];
+var currentStreak = 0;
+var streakMultiplier = 1;
+var wrongAnswers = 0;
+var correctAnswers = 0;
+var maxWrongAnswers = 3;
+var difficultyLevel = 1;
+// Create background
+var background = game.attachAsset('background', {
+ x: 0,
+ y: 0
+});
+// Create problem display area
+var problemArea = game.attachAsset('problemArea', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 1024,
+ y: 400
+});
+// Create problem text
+var problemText = new Text2('5 + 3 = ?', {
+ size: 120,
+ fill: 0x333333
+});
+problemText.anchor.set(0.5, 0.5);
+problemArea.addChild(problemText);
+// Create answer buttons
+for (var i = 0; i < 4; i++) {
+ var button = new AnswerButton();
+ button.x = 300 + i % 2 * 450 + i % 2 * 150;
+ button.y = 800 + Math.floor(i / 2) * 200;
+ answerButtons.push(button);
+ game.addChild(button);
+}
+// Create score display
+var scoreText = new Text2('Score: 0', {
+ size: 60,
+ fill: 0xFFFFFF
+});
+scoreText.anchor.set(0, 0);
+scoreText.x = 150;
+scoreText.y = 150;
+LK.gui.topLeft.addChild(scoreText);
+// Create streak display
+var streakText = new Text2('Streak: 0x', {
+ size: 50,
+ fill: 0xFFFFFF
+});
+streakText.anchor.set(1, 0);
+streakText.x = -50;
+streakText.y = 150;
+LK.gui.topRight.addChild(streakText);
+// Create wrong answers display
+var wrongText = new Text2('Wrong: 0/3', {
+ size: 40,
+ fill: 0xFFFFFF
+});
+wrongText.anchor.set(0.5, 0);
+wrongText.x = 0;
+wrongText.y = 220;
+LK.gui.top.addChild(wrongText);
+function generateNumbers() {
+ if (difficultyLevel === 1) {
+ // Single digit numbers
+ currentNum1 = Math.floor(Math.random() * 9) + 1;
+ currentNum2 = Math.floor(Math.random() * 9) + 1;
+ } else if (difficultyLevel === 2) {
+ // Double digit numbers
+ currentNum1 = Math.floor(Math.random() * 90) + 10;
+ currentNum2 = Math.floor(Math.random() * 90) + 10;
+ } else {
+ // Triple digit numbers
+ currentNum1 = Math.floor(Math.random() * 900) + 100;
+ currentNum2 = Math.floor(Math.random() * 900) + 100;
+ }
+ correctAnswer = currentNum1 + currentNum2;
+}
+function generateWrongAnswers() {
+ var wrongAnswers = [];
+ var attempts = 0;
+ while (wrongAnswers.length < 3 && attempts < 50) {
+ var wrongAnswer;
+ var variation = Math.floor(Math.random() * 20) + 1;
+ if (Math.random() < 0.5) {
+ wrongAnswer = correctAnswer + variation;
+ } else {
+ wrongAnswer = correctAnswer - variation;
+ }
+ if (wrongAnswer !== correctAnswer && wrongAnswer > 0 && wrongAnswers.indexOf(wrongAnswer) === -1) {
+ wrongAnswers.push(wrongAnswer);
+ }
+ attempts++;
+ }
+ return wrongAnswers;
+}
+function generateNewProblem() {
+ // Update difficulty based on correct answers
+ if (correctAnswers >= 10 && difficultyLevel < 2) {
+ difficultyLevel = 2;
+ } else if (correctAnswers >= 25 && difficultyLevel < 3) {
+ difficultyLevel = 3;
+ }
+ generateNumbers();
+ problemText.setText(currentNum1 + ' + ' + currentNum2 + ' = ?');
+ var wrongAnswersList = generateWrongAnswers();
+ var allAnswers = [correctAnswer].concat(wrongAnswersList);
+ // Shuffle answers
+ for (var i = allAnswers.length - 1; i > 0; i--) {
+ var j = Math.floor(Math.random() * (i + 1));
+ var temp = allAnswers[i];
+ allAnswers[i] = allAnswers[j];
+ allAnswers[j] = temp;
+ }
+ // Set button values
+ for (var i = 0; i < 4; i++) {
+ answerButtons[i].setValue(allAnswers[i], allAnswers[i] === correctAnswer);
+ answerButtons[i].resetStyle();
+ }
+ updateDisplay();
+}
+function updateStreakMultiplier() {
+ if (currentStreak >= 10) {
+ streakMultiplier = 3;
+ } else if (currentStreak >= 5) {
+ streakMultiplier = 2;
+ } else {
+ streakMultiplier = 1;
+ }
+}
+function updateDisplay() {
+ scoreText.setText('Score: ' + LK.getScore());
+ streakText.setText('Streak: ' + currentStreak + 'x' + streakMultiplier);
+ wrongText.setText('Wrong: ' + wrongAnswers + '/' + maxWrongAnswers);
+}
+// Initialize first problem
+generateNewProblem();
+game.update = function () {
+ // Game logic is handled by button events
+};
\ No newline at end of file