User prompt
language assetini 100 pixel yukarı taşı
User prompt
how to play assetini 200 pixel yukarı taşı
User prompt
play assetini 300 pixel yukarı taşı
User prompt
play buttonunun üstünde play,onun altındakinde how to play onun altındakinde language onun altındakinde select character yazsın
User prompt
menü açıkken oyun tamamen donar oyunun süre akışı,ses efektleri müzikler her şey donar
Code edit (1 edits merged)
Please save this source code
User prompt
bu şu an oynanabilen kısım playable olsun bir de menu ekranı olsun oyun ilk açıldığında menuscreen asseti ekranın ortasında belirsin ve menu ekranı açıldığında ekranın ortasında menu_play asseti olsun menu_play assetinin 101 pixel altında menu_howtoplay asseti olsun onun 101 pixel altında menu_language asseti olsun onun 101 pixel altında menu_stikman asseti bulunsun
User prompt
You win play again sahnesinin gelmesini 2 saniye delayle
User prompt
You win play again sahnesinin gelmesini 3 saniye delayle
User prompt
score text şu şekilde olsun 1.soruyu bilince 250 2.soru 500 3.soru 1000 4.soru 2500 5.soru 25000 6.soru 50000 7.soru 100000 8.soru 250000 9.soru 500000 10.soru 1000000 puan olsun
User prompt
delay play again screen 3 seconds
User prompt
game over ekranının gelmesini 3 saniye delayle ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Yeni Kod js Kopyala Düzenle if (correct) { LK.getSound('correctSound').play(); answerButtons[index].markAsCorrect(); character.showHappy(); trollFaces.showSad(); // hemen sad score++; scoreText.setText("Score: " + score); // 2 saniye sonra önce happy'e çevir, sonra yeni soruya geç LK.setTimeout(function () { trollFaces.showHappy(); loadQuestion(currentQuestion + 1); }, 2000); } Yapılan değişiklikler: loadQuestion içeren setTimeout süresini 1500 ms ➔ 2000 ms olarak uzattık. setTimeout’un içinde önce trollFaces.showHappy(); çağırıp, hemen ardından loadQuestion ile yeni soruya geçiyoruz. Bu sayede oyuncu doğru cevabı verdikten 2 saniye boyunca trollfacesad görünecek, sonra otomatik olarak trollfacehappy’ye dönecek ve yeni soruya geçilecek.
User prompt
move stickman class 10 pixels left
User prompt
move stickman class 15 pixels left
User prompt
move stickman class 100 pixels left 50 pixels down
User prompt
move stickman class 300 pixels left 100 pixels up
User prompt
make stickman angry when 5 seconds left
User prompt
move stickman class 300 pixels left 100 pixels up ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
create a class named stickman , stickman class includes stickmanhappy stickmanthinking stickmandisappointed stickmanangry stickmanwinner assets and place them middle of the screen mainly stickmanthinking visible the others invisible on the screen when there is 5 seconds left make stickmansad visible make the others invisible when player gets the question right make stickmanhappy visible and the others invisible when player gets the question wrong make stickmandisappointed visible and make the others invisible when player gets all 10 questions right make stickmanwinner visible and make others invisible
User prompt
5 saniye için düşündüm timeExpired() içinde troll yüzü olarak şu satırı: js Kopyala Düzenle trollFaces.showSad(); // eski şununla değiştir: js Kopyala Düzenle trollFaces.showHappy(); Yani tamamı şöyle olacak: js Kopyala Düzenle function timeExpired() { answerLocked = true; character.showSad(); trollFaces.showHappy(); // artık zaman dolunca happy gösteriyor // Highlight correct answer answerButtons[currentCorrectIndex].markAsCorrect(); LK.setTimeout(function () { endGame(false); }, 2000); } Bu sayede süre dolunca trollfacehappy görünür, değil trollfacesad.
User prompt
move troll faces 10 pixels down 5 pixels right
User prompt
move troll faces right by 30 pixels and 50 pixels up
User prompt
Move troll faces right by 50 pixels up 50 pixels right
User prompt
Move troll faces right by 350 pixels annd 100 pixel up
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1", {
highScore: 0,
totalPlayed: 0
});
/****
* Classes
****/
var Character = Container.expand(function () {
var self = Container.call(this);
var happyFace = self.attachAsset('characterHappy', {
anchorX: 0.5,
anchorY: 0.5
});
happyFace.visible = false;
var sadFace = self.attachAsset('characterSad', {
anchorX: 0.5,
anchorY: 0.5
});
sadFace.visible = false;
var excitedFace = self.attachAsset('characterExcited', {
anchorX: 0.5,
anchorY: 0.5
});
excitedFace.visible = false;
var neutralFace = self.attachAsset('characterNeutral', {
anchorX: 0.5,
anchorY: 0.5
});
neutralFace.visible = true;
self.showHappy = function () {
happyFace.visible = true;
sadFace.visible = false;
excitedFace.visible = false;
neutralFace.visible = false;
};
self.showSad = function () {
happyFace.visible = false;
sadFace.visible = true;
excitedFace.visible = false;
neutralFace.visible = false;
};
self.showExcited = function () {
happyFace.visible = false;
sadFace.visible = false;
excitedFace.visible = true;
neutralFace.visible = false;
};
self.showNeutral = function () {
happyFace.visible = false;
sadFace.visible = false;
excitedFace.visible = false;
neutralFace.visible = true;
};
return self;
});
var Joker = Container.expand(function (type, icon) {
var self = Container.call(this);
self.type = type;
self.used = false;
var background = self.attachAsset('jokerButton', {
anchorX: 0.5,
anchorY: 0.5
});
var text = new Text2(icon, {
size: 50,
fill: 0xFFFFFF,
stroke: 0x000000,
strokeThickness: 3
});
text.anchor.set(0.5, 0.5);
self.addChild(text);
self.use = function () {
if (self.used) {
return false;
}
self.used = true;
tween(self, {
alpha: 0.4
}, {
duration: 100
});
return true;
};
self.reset = function () {
self.used = false;
self.alpha = 1;
};
self.down = function (x, y, obj) {
if (!self.used && !gameOver && !answerLocked && !menuOpen) {
activateJoker(self.type);
}
};
return self;
});
var MenuScreen = Container.expand(function () {
var self = Container.call(this);
// Menu background
var background = self.attachAsset('menuscreen', {
anchorX: 0.5,
anchorY: 0.5
});
// Play button
var playButton = self.attachAsset('menu_play', {
anchorX: 0.5,
anchorY: 0.5
});
playButton.position.set(0, -300);
// Add "Play" text to play button
var playText = new Text2("Play", {
size: 70,
fill: 0xFFFFFF,
stroke: 0x000000,
strokeThickness: 4
});
playText.anchor.set(0.5, 0.5);
playText.position.set(0, 0);
playButton.addChild(playText);
// How to play button
var howToPlayButton = self.attachAsset('menu_howtoplay', {
anchorX: 0.5,
anchorY: 0.5
});
howToPlayButton.position.set(0, -100); // Moved 200 pixels up from original position
// Add "How To Play" text to how to play button
var howToPlayText = new Text2("How To Play", {
size: 70,
fill: 0xFFFFFF,
stroke: 0x000000,
strokeThickness: 4
});
howToPlayText.anchor.set(0.5, 0.5);
howToPlayText.position.set(0, 0);
howToPlayButton.addChild(howToPlayText);
// Language button
var languageButton = self.attachAsset('menu_language', {
anchorX: 0.5,
anchorY: 0.5
});
languageButton.position.set(0, 102);
// Add "Language" text to language button
var languageText = new Text2("Language", {
size: 70,
fill: 0xFFFFFF,
stroke: 0x000000,
strokeThickness: 4
});
languageText.anchor.set(0.5, 0.5);
languageText.position.set(0, 0);
languageButton.addChild(languageText);
// Stickman button
var stickmanButton = self.attachAsset('menu_stickman', {
anchorX: 0.5,
anchorY: 0.5
});
stickmanButton.position.set(0, 303);
// Add "Select Character" text to stickman button
var stickmanText = new Text2("Select Character", {
size: 70,
fill: 0xFFFFFF,
stroke: 0x000000,
strokeThickness: 4
});
stickmanText.anchor.set(0.5, 0.5);
stickmanText.position.set(0, 0);
stickmanButton.addChild(stickmanText);
// Handle clicks on play button
playButton.interactive = true;
playButton.down = function () {
self.hide();
initGame();
};
// Show menu
self.show = function () {
self.visible = true;
menuOpen = true; // Set menu state to open
};
// Hide menu
self.hide = function () {
self.visible = false;
menuOpen = false; // Set menu state to closed
};
return self;
});
var PhoneFriendPopup = Container.expand(function () {
var self = Container.call(this);
// background card
var bg = self.attachAsset('phonejokerscreen', {
anchorX: 0.5,
anchorY: 0.5,
width: 1200,
height: 800
});
bg.tint = 0xF5F5F5;
// the single guess text
var guessText = new Text2("", {
size: 70,
fill: 0xFFFFFF,
stroke: 0x000000,
strokeThickness: 4
});
guessText.anchor.set(0.5, 0.5);
guessText.position.set(0, 0);
self.addChild(guessText);
self.visible = false;
// show with the correct answer inserted
self.show = function (answer) {
guessText.setText('Hmm, I guess the answer is "' + answer + '"!');
self.visible = true;
};
self.hide = function () {
self.visible = false;
};
return self;
});
var QuestionButton = Container.expand(function (index, text) {
var self = Container.call(this);
self.index = index;
self.isCorrect = false;
self.isSelected = false;
self.isEliminated = false;
self.isDisabled = false; // Added for second chance joker
// Apply additional 7% height increase while keeping width the same
var background = self.attachAsset('buttonBackground', {
anchorX: 0.5,
anchorY: 0.5,
width: 944,
// 924 + 20 = 944 (adding 10px on each side)
// Extended by 10 pixels on left and right
height: 234,
// 224 + 10 = 234 (adding 5px on top and 5px on bottom)
shape: 'ellipse' // More rounded shape
});
var buttonText = new Text2(text, {
size: 60,
fill: 0xFFFFFF,
stroke: 0x000000,
strokeThickness: 4
});
buttonText.anchor.set(0.5, 0.5);
self.addChild(buttonText);
var overlay = self.attachAsset('correctAnswerOverlay', {
anchorX: 0.5,
anchorY: 0.5,
width: 944,
// 924 + 20 = 944 (adding 10px on each side)
// Extended by 10 pixels on left and right
height: 234,
// 224 + 10 = 234 (adding 5px on top and 5px on bottom)
shape: 'ellipse' // More rounded shape for overlay
});
overlay.alpha = 0;
self.setText = function (newText) {
buttonText.setText(newText);
};
self.setCorrect = function (correct) {
self.isCorrect = correct;
};
self.markAsCorrect = function () {
overlay.tint = 0x00FF00;
tween(overlay, {
alpha: 0.5
}, {
duration: 500
});
};
self.markAsIncorrect = function () {
overlay.tint = 0xFF0000;
tween(overlay, {
alpha: 0.5
}, {
duration: 500
});
};
self.reset = function () {
overlay.alpha = 0;
self.isSelected = false;
self.isEliminated = false;
self.isDisabled = false; // Reset disabled state
self.alpha = 1; // Reset visual appearance back to fully visible
};
self.eliminate = function () {
if (self.isCorrect) {
return false;
}
self.isEliminated = true;
tween(self, {
alpha: 0.3
}, {
duration: 300
});
return true;
};
// New function for second chance joker
self.disable = function () {
self.isDisabled = true;
tween(self, {
alpha: 0.3
}, {
duration: 300
});
};
self.down = function (x, y, obj) {
if (!self.isEliminated && !self.isDisabled && !gameOver && !answerLocked && !menuOpen) {
self.isSelected = true;
submitAnswer(self.index);
}
};
return self;
});
var Stickman = Container.expand(function () {
var self = Container.call(this);
// Create stickman assets with appropriate anchors and properties
var stickmanhappy = self.attachAsset('stickmanhappy', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 3,
scaleY: 3
});
var stickmanthinking = self.attachAsset('stickmanthinking', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 3,
scaleY: 3
});
var stickmandisappointed = self.attachAsset('stickmandisappointed', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 3,
scaleY: 3
});
var stickmanangry = self.attachAsset('stickmanagry', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 3,
scaleY: 3
});
var stickmanwinner = self.attachAsset('stickmanwinner', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 3,
scaleY: 3
});
// Set all to same position
stickmanhappy.position.set(0, 0);
stickmanthinking.position.set(0, 0);
stickmandisappointed.position.set(0, 0);
stickmanangry.position.set(0, 0);
stickmanwinner.position.set(0, 0);
// Helper function to show only one state
function showOnly(target) {
stickmanhappy.visible = target === 'happy';
stickmanthinking.visible = target === 'thinking';
stickmandisappointed.visible = target === 'disappointed';
stickmanangry.visible = target === 'angry';
stickmanwinner.visible = target === 'winner';
}
// Initialize with thinking visible
showOnly('thinking');
// Public methods to change stickman state
self.showHappy = function () {
showOnly('happy');
};
self.showThinking = function () {
showOnly('thinking');
};
self.showDisappointed = function () {
showOnly('disappointed');
};
self.showAngry = function () {
showOnly('angry');
};
self.showWinner = function () {
showOnly('winner');
};
return self;
});
var TrollFaces = Container.expand(function () {
var self = Container.call(this);
var trollFaceHappy = self.attachAsset('trollfacehappy', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 3,
scaleY: 3
});
var trollFaceSad = self.attachAsset('trollfacesad', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 3,
scaleY: 3
});
var trollFaceSmile = self.attachAsset('trollfacesmile', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 3,
scaleY: 3
});
var trollFaceAngry = self.attachAsset('trollfaceangry', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 3,
scaleY: 3
});
// Set all faces to same position
trollFaceHappy.position.set(0, 0);
trollFaceSad.position.set(0, 0);
trollFaceSmile.position.set(0, 0);
trollFaceAngry.position.set(0, 0);
// Helper function to show only one face
function showOnly(target) {
trollFaceHappy.visible = target === 'happy';
trollFaceSad.visible = target === 'sad';
trollFaceSmile.visible = target === 'smile';
trollFaceAngry.visible = target === 'angry';
}
// Initially only show happy face
showOnly('happy');
self.showHappy = function () {
showOnly('happy');
};
self.showSad = function () {
showOnly('sad');
};
self.showSmile = function () {
showOnly('smile');
};
self.showAngry = function () {
showOnly('angry');
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87CEEB
});
/****
* Game Code
****/
// Character images for different emotions/states
// Game constants
var TOTAL_QUESTIONS = 10;
var TIME_PER_QUESTION = 30; // seconds
var BUTTON_SPACING = 180;
// Game state variables
var currentQuestion = 0;
var score = 0;
var timeLeft = TIME_PER_QUESTION;
var gameOver = false;
var answerLocked = false;
var secondChanceActive = false; // Track if second chance is active for current question
var currentCorrectIndex = 0;
// Quiz questions
var questions = [{
question: "What is the capital of France?",
answers: ["Paris", "London", "Berlin", "Madrid"],
correctIndex: 0
}, {
question: "Which planet is known as the Red Planet?",
answers: ["Venus", "Mars", "Jupiter", "Saturn"],
correctIndex: 1
}, {
question: "What is the largest mammal on Earth?",
answers: ["Elephant", "Giraffe", "Blue Whale", "Polar Bear"],
correctIndex: 2
}, {
question: "Which of these is not a programming language?",
answers: ["Java", "Python", "Banana", "Ruby"],
correctIndex: 2
}, {
question: "What year did the Titanic sink?",
answers: ["1912", "1905", "1920", "1931"],
correctIndex: 0
}, {
question: "Which element has the chemical symbol 'O'?",
answers: ["Gold", "Oxygen", "Osmium", "Oganesson"],
correctIndex: 1
}, {
question: "Who painted the Mona Lisa?",
answers: ["Van Gogh", "Picasso", "Michelangelo", "Leonardo da Vinci"],
correctIndex: 3
}, {
question: "What is the smallest prime number?",
answers: ["0", "1", "2", "3"],
correctIndex: 2
}, {
question: "Which country is home to the kangaroo?",
answers: ["New Zealand", "South Africa", "Australia", "Brazil"],
correctIndex: 2
}, {
question: "How many sides does a hexagon have?",
answers: ["5", "6", "7", "8"],
correctIndex: 1
}];
// Background colors for different questions
var backgroundColors = [0x87CEEB,
// Sky blue
0x98FB98,
// Pale green
0xFFB6C1,
// Light pink
0xFFD700,
// Gold
0xE6E6FA,
// Lavender
0xFFA07A,
// Light salmon
0xADD8E6,
// Light blue
0xF0E68C,
// Khaki
0xD8BFD8,
// Thistle
0xAFEEEE // Pale turquoise
];
// Create UI elements
var theset = game.addChild(LK.getAsset('theset', {
anchorX: 0.5,
anchorY: 0.5
}));
theset.position.set(2048 / 2 - 30 + 10, 2732 / 2 - 600 + 400 + 100);
var mainQuestionBoard = game.addChild(LK.getAsset('mainquestionboard', {
anchorX: 0.5,
anchorY: 0.5
}));
mainQuestionBoard.position.set(2048 / 2 + 135, 2732 / 2 + 430);
var questionCard = game.addChild(LK.getAsset('questionCard', {
anchorX: 0.5,
anchorY: -0.8
}));
questionCard.position.set(2048 / 2, 2732 / 2 - 500);
var questionText = new Text2("", {
size: 70,
fill: 0xFFFFFF,
stroke: 0x000000,
strokeThickness: 4
});
questionText.anchor.set(0.5, 0.5);
questionText.position.set(0, 920);
questionCard.addChild(questionText);
var answerButtons = [];
for (var i = 0; i < 4; i++) {
var button = new QuestionButton(i, "");
if (i === 0) {
// Move button A 500 pixels down and 215 pixels left
button.position.set(2048 / 2 - 515, 2732 / 2 - 100 + i * BUTTON_SPACING + 970);
} else if (i === 1) {
// Move button B 970 pixels down and 400 pixels right, then 20 pixels left
button.position.set(2048 / 2 + 510, 2732 / 2 - 100 + i * BUTTON_SPACING + 790);
} else if (i === 2) {
// Move button C 950 pixels down and 510 pixels left
button.position.set(2048 / 2 - 510, 2732 / 2 - 200 + i * BUTTON_SPACING + 1010);
} else {
button.position.set(2048 / 2 + 515, 2732 / 2 - 200 + i * BUTTON_SPACING + 830);
}
answerButtons.push(button);
game.addChild(button);
}
// Create jokers
var jokers = [];
var jokerTypes = ["fifty", "audience", "phone", "second"];
var jokerIcons = ["50/50", "👥", "📞", "🔄"];
for (var i = 0; i < 4; i++) {
var joker = new Joker(jokerTypes[i], jokerIcons[i]);
joker.position.set(280 + i * 150, 200);
jokers.push(joker);
game.addChild(joker);
}
// Create character
var character = new Character();
character.position.set(2048 / 2, 2732 - 300);
game.addChild(character);
// Create timer UI
var timerText = new Text2("", {
size: 100,
fill: 0xFFFFFF,
stroke: 0x000000,
strokeThickness: 5
});
timerText.anchor.set(0.5, 0.5);
timerText.position.set(2048 / 2, 150);
game.addChild(timerText);
// Create score display
var scoreText = new Text2("Score: 0", {
size: 70,
fill: 0xFFFFFF,
stroke: 0x000000,
strokeThickness: 4
});
scoreText.anchor.set(1, 0);
scoreText.position.set(2048 - 50, 50);
game.addChild(scoreText);
// Create question counter
var counterText = new Text2("Question: 1/" + TOTAL_QUESTIONS, {
size: 70,
fill: 0xFFFFFF,
stroke: 0x000000,
strokeThickness: 4
});
counterText.anchor.set(0, 0);
counterText.position.set(205, 50);
game.addChild(counterText);
// Second chance indicator text
var secondChanceText = new Text2("", {
size: 60,
fill: 0xFFFFFF,
stroke: 0x000000,
strokeThickness: 3
});
secondChanceText.anchor.set(0.5, 0.5);
secondChanceText.position.set(2048 / 2, 280);
game.addChild(secondChanceText);
// Create phone a friend popup
var phoneFriendPopup = new PhoneFriendPopup();
phoneFriendPopup.position.set(2048 / 2, 2732 / 2);
game.addChild(phoneFriendPopup);
// Create and add troll faces
var trollFaces = new TrollFaces();
trollFaces.position.set(2048 / 2 + 735, 2732 / 2 - 190);
game.addChild(trollFaces);
// Create and add stickman character
var stickman = new Stickman();
stickman.position.set(2048 / 2 - 725, 2732 / 2 - 150);
game.addChild(stickman);
// Game timer
var gameTimer = LK.setInterval(function () {
if (gameOver || answerLocked || menuOpen) {
return;
}
timeLeft--;
timerText.setText(timeLeft);
// Change character expression when time is running low
if (timeLeft <= 5) {
character.showExcited();
trollFaces.showSmile();
stickman.showAngry(); // Show angry stickman when 5 seconds left
}
if (timeLeft <= 0) {
timeExpired();
}
}, 1000);
// Game functions
function loadQuestion(index) {
if (index >= questions.length) {
endGame(true);
return;
}
// Change background color
game.setBackgroundColor(backgroundColors[index]);
var question = questions[index];
questionText.setText(question.question);
currentCorrectIndex = question.correctIndex;
for (var i = 0; i < 4; i++) {
answerButtons[i].setText(question.answers[i]);
answerButtons[i].setCorrect(i === question.correctIndex);
answerButtons[i].reset();
}
timeLeft = TIME_PER_QUESTION;
timerText.setText(timeLeft);
currentQuestion = index;
counterText.setText("Question: " + (currentQuestion + 1) + "/" + TOTAL_QUESTIONS);
character.showNeutral();
stickman.showThinking(); // Reset stickman to thinking state for new question
secondChanceActive = false; // Reset second chance status for new question
secondChanceText.setText(""); // Clear second chance indicator
answerLocked = false;
}
function submitAnswer(index) {
if (answerLocked || menuOpen) {
return;
}
var correct = index === currentCorrectIndex;
// Special handling for second chance joker
if (secondChanceActive) {
if (correct) {
// If correct answer with second chance active, proceed normally
answerLocked = true;
LK.getSound('correctSound').play();
answerButtons[index].markAsCorrect();
character.showHappy();
trollFaces.showSad(); // Show sad troll face for correct answer
score++;
// Use millionaire prize tiers based on question number
var prizeMoney;
switch (currentQuestion) {
case 0:
prizeMoney = 250;
break;
case 1:
prizeMoney = 500;
break;
case 2:
prizeMoney = 1000;
break;
case 3:
prizeMoney = 2500;
break;
case 4:
prizeMoney = 25000;
break;
case 5:
prizeMoney = 50000;
break;
case 6:
prizeMoney = 100000;
break;
case 7:
prizeMoney = 250000;
break;
case 8:
prizeMoney = 500000;
break;
case 9:
prizeMoney = 1000000;
break;
default:
prizeMoney = 0;
}
scoreText.setText("Score: " + prizeMoney);
// Clear second chance indicator
secondChanceActive = false;
secondChanceText.setText("");
// Load next question after delay
LK.setTimeout(function () {
loadQuestion(currentQuestion + 1);
}, 1500);
} else {
// If wrong answer with second chance active, disable only that button
LK.getSound('incorrectSound').play();
answerButtons[index].disable(); // Make this button unclickable
// Deactivate second chance - one wrong answer protection used
secondChanceActive = false;
secondChanceText.setText(""); // Clear the indicator
// Player can still continue with this question, but will lose on next wrong answer
}
} else {
// Normal answer handling (no second chance active)
answerLocked = true;
if (correct) {
LK.getSound('correctSound').play();
answerButtons[index].markAsCorrect();
character.showHappy();
trollFaces.showSad(); // Show sad troll face for correct answer
stickman.showHappy(); // Show happy stickman for correct answer
score++;
// Use millionaire prize tiers based on question number
var prizeMoney;
switch (currentQuestion) {
case 0:
prizeMoney = 250;
break;
case 1:
prizeMoney = 500;
break;
case 2:
prizeMoney = 1000;
break;
case 3:
prizeMoney = 2500;
break;
case 4:
prizeMoney = 25000;
break;
case 5:
prizeMoney = 50000;
break;
case 6:
prizeMoney = 100000;
break;
case 7:
prizeMoney = 250000;
break;
case 8:
prizeMoney = 500000;
break;
case 9:
prizeMoney = 1000000;
break;
default:
prizeMoney = 0;
}
scoreText.setText("Score: " + prizeMoney);
LK.setTimeout(function () {
trollFaces.showHappy();
loadQuestion(currentQuestion + 1);
}, 2000);
} else {
LK.getSound('incorrectSound').play();
answerButtons[index].markAsIncorrect();
character.showSad();
trollFaces.showHappy(); // Show happy troll face for wrong answer
stickman.showDisappointed(); // Show disappointed stickman for wrong answer
// Show correct answer and end game
answerButtons[currentCorrectIndex].markAsCorrect();
LK.setTimeout(function () {
LK.setTimeout(function () {
endGame(false);
}, 3000);
}, 3000);
}
}
}
function timeExpired() {
answerLocked = true;
character.showSad();
trollFaces.showHappy(); // Show happy troll face when time expires
stickman.showDisappointed(); // Show disappointed stickman when time expires
// Highlight correct answer
answerButtons[currentCorrectIndex].markAsCorrect();
LK.setTimeout(function () {
endGame(false);
}, 3000);
}
function activateJoker(type) {
var joker = findJokerByType(type);
if (!joker || joker.used || menuOpen) {
return;
}
LK.getSound('jokerSound').play();
switch (type) {
case "fifty":
useFiftyFifty();
joker.use();
break;
case "audience":
useAudienceHelp();
joker.use();
break;
case "phone":
usePhoneFriend();
joker.use();
break;
case "second":
useSecondChance();
// For second chance, we don't mark the joker as used yet
// It will be marked as used when the player submits an answer
break;
}
}
function findJokerByType(type) {
for (var i = 0; i < jokers.length; i++) {
if (jokers[i].type === type) {
return jokers[i];
}
}
return null;
}
function useFiftyFifty() {
var eliminated = 0;
var attempts = 0;
// Try to eliminate two wrong answers
while (eliminated < 2 && attempts < 10) {
attempts++;
var randomIndex = Math.floor(Math.random() * 4);
if (answerButtons[randomIndex].eliminate()) {
eliminated++;
}
}
}
function useAudienceHelp() {
// Calculate audience accuracy based on question number
// Accuracy decreases as questions get harder
var baseAccuracy = 0.99 - currentQuestion * 0.05;
for (var i = 0; i < 4; i++) {
var percentage;
if (i === currentCorrectIndex) {
// Correct answer gets higher percentage based on accuracy
percentage = Math.floor(baseAccuracy * 100);
} else {
// Distribute remaining percentage among wrong answers
percentage = Math.floor((1 - baseAccuracy) * 33);
}
// Update button text to show percentage
var originalText = questions[currentQuestion].answers[i];
answerButtons[i].setText(originalText + " (" + percentage + "%)");
}
// Reset the text after 5 seconds
LK.setTimeout(function () {
for (var i = 0; i < 4; i++) {
answerButtons[i].setText(questions[currentQuestion].answers[i]);
}
}, 5000);
}
function usePhoneFriend() {
// hide the normal question card
questionCard.visible = false;
// show our new popup with the real answer
var correctAnswer = questions[currentQuestion].answers[currentCorrectIndex];
phoneFriendPopup.show(correctAnswer);
// mark the joker used
findJokerByType('phone').use();
// Add click handler to close popup when clicked anywhere
game.phoneFriendClickHandler = function (x, y, obj) {
phoneFriendPopup.hide();
questionCard.visible = true;
// Remove the handler by setting it to null
game.phoneFriendClickHandler = null;
};
// Assign the handler to game's down event
game.down = game.phoneFriendClickHandler;
// after 5 seconds, hide popup and go back
LK.setTimeout(function () {
phoneFriendPopup.hide();
questionCard.visible = true;
// Remove click handler if timer expires first
game.phoneFriendClickHandler = null;
}, 5000);
}
function useSecondChance() {
// Only activate if not already active
if (!secondChanceActive) {
// Mark second chance as active for the current question
secondChanceActive = true;
// Display second chance status
secondChanceText.setText("Second Chance Active 🔄");
secondChanceText.visible = true;
// Get the second chance joker
var secondChanceJoker = findJokerByType("second");
// Don't mark as used yet - will be used when player makes a selection
// We only want to mark it visually as active
tween(secondChanceJoker, {
alpha: 0.7
}, {
duration: 300
});
}
}
// Phone friend callback has been replaced by direct handling in usePhoneFriend
function endGame(completed) {
gameOver = true;
// Update high score
if (score > storage.highScore) {
storage.highScore = score;
}
// Update total games played
storage.totalPlayed = (storage.totalPlayed || 0) + 1;
// Show game over screen
if (completed) {
trollFaces.showAngry(); // Show angry troll face when completing all questions
stickman.showWinner(); // Show winner stickman when completing all questions
LK.setTimeout(function () {
LK.showYouWin();
}, 2000);
} else {
LK.showGameOver();
}
}
// Create menu screen
var menuScreen = new MenuScreen();
menuScreen.position.set(2048 / 2, 2732 / 2);
game.addChild(menuScreen);
// Track menu state to freeze game when menu is open
var menuOpen = true;
// Initialize game
function initGame() {
score = 0;
gameOver = false;
currentQuestion = 0;
secondChanceActive = false;
// Reset jokers
for (var i = 0; i < jokers.length; i++) {
jokers[i].reset();
}
// Update score text - starting prize is $0 before first question answered
scoreText.setText("Score: " + 0);
// Clear second chance text
secondChanceText.setText("");
// Reset troll faces
trollFaces.showHappy();
// Reset stickman
stickman.showThinking();
// Start with first question
loadQuestion(0);
// Play background music
LK.playMusic('backgroundMusic');
}
// Initially hide game elements
function hideGameElements() {
// Hide all game UI elements
theset.visible = false;
mainQuestionBoard.visible = false;
questionCard.visible = false;
timerText.visible = false;
scoreText.visible = false;
counterText.visible = false;
character.visible = false;
stickman.visible = false;
trollFaces.visible = false;
secondChanceText.visible = false;
// Hide answer buttons and jokers
for (var i = 0; i < answerButtons.length; i++) {
answerButtons[i].visible = false;
}
for (var i = 0; i < jokers.length; i++) {
jokers[i].visible = false;
}
}
// Show game elements
function showGameElements() {
// Show all game UI elements
theset.visible = true;
mainQuestionBoard.visible = true;
questionCard.visible = true;
timerText.visible = true;
scoreText.visible = true;
counterText.visible = true;
character.visible = true;
stickman.visible = true;
trollFaces.visible = true;
// Show answer buttons and jokers
for (var i = 0; i < answerButtons.length; i++) {
answerButtons[i].visible = true;
}
for (var i = 0; i < jokers.length; i++) {
jokers[i].visible = true;
}
}
// Initially hide game elements and show menu
hideGameElements();
menuScreen.show();
// Modified initGame to show game elements
var originalInitGame = initGame;
initGame = function initGame() {
showGameElements();
originalInitGame();
}; ===================================================================
--- original.js
+++ change.js
@@ -140,9 +140,9 @@
var languageButton = self.attachAsset('menu_language', {
anchorX: 0.5,
anchorY: 0.5
});
- languageButton.position.set(0, 202);
+ languageButton.position.set(0, 102);
// Add "Language" text to language button
var languageText = new Text2("Language", {
size: 70,
fill: 0xFFFFFF,