Code edit (12 edits merged)
Please save this source code
User prompt
b şıkkını 970 pixel aşağı 400 pixel sağa götür
Code edit (3 edits merged)
Please save this source code
User prompt
a şıkkını 500 pixel aşağı 200 pixel sola götü ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
a şıkkını 500 pixel aşağı 200 pixel sola götü
Code edit (1 edits merged)
Please save this source code
Code edit (1 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'index')' in or related to this line: 'self.selectFriend(obj.parent.index);' Line Number: 152
Code edit (1 edits merged)
Please save this source code
User prompt
Quiz Master Challenge
Initial prompt
A quiz like game i will upload the background and the template you will place buttons on the template and depend on the situation you will close one photo and upload other photo imagine if there is 10 quesyions there will be 10 templates for each questions and there will be characters when get the question right happy character will appear when lost sad character appears when there is small time left excited character will appear depen on the situation and there will be jokers first joker makes random 2 wrong button disappear second joker is asking to the audience and accuracy of this joker is depending on the question first question has %99 accuracy of showing right choice and all choices has a name like a b c d second question has %94 accuracy getting lower %5 accuracy each question third joker is asking on the qhone if asking the right person player gets the right answer there will be 4 persons to ask, forth joker is giving you an extra try for example you give the wrong asnwer the answer you gave button disappears and you keep playing after the first wrong answer you keep playing just as the before joker and if the person gets the answer right after using the joker joker goes for nothing
/**** * 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 }); 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: 300 }); return true; }; self.reset = function () { self.used = false; self.alpha = 1; }; self.down = function (x, y, obj) { if (!self.used && !gameOver && !answerLocked) { activateJoker(self.type); } }; return self; }); var PhoneFriendPopup = Container.expand(function () { var self = Container.call(this); var background = self.attachAsset('questionCard', { anchorX: 0.5, anchorY: 0.5, width: 1200, height: 800 }); background.tint = 0xF5F5F5; var titleText = new Text2("Phone a Friend", { size: 80, fill: 0x333333 }); titleText.anchor.set(0.5, 0); titleText.position.set(0, -320); self.addChild(titleText); var friends = []; var friendNames = ["Professor", "Scientist", "Artist", "Engineer"]; for (var i = 0; i < 4; i++) { var friendButton = new Container(); var buttonBg = LK.getAsset('buttonBackground', { anchorX: 0.5, anchorY: 0.5, width: 500, height: 100 }); friendButton.addChild(buttonBg); var nameText = new Text2(friendNames[i], { size: 50, fill: 0x333333 }); nameText.anchor.set(0.5, 0.5); friendButton.addChild(nameText); friendButton.position.set(0, -150 + i * 150); friendButton.index = i; friendButton.interactive = true; friendButton.down = function (x, y, obj) { self.selectFriend(i); // Use the value of i from the loop instead of obj.parent.index }; self.addChild(friendButton); friends.push(friendButton); } self.visible = false; self.show = function () { self.visible = true; }; self.hide = function () { self.visible = false; }; self.selectFriend = function (index) { self.hide(); phoneFriendCallback(index); }; 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; var background = self.attachAsset('buttonBackground', { anchorX: 0.5, anchorY: 0.5 }); var buttonText = new Text2(text, { size: 60, fill: 0x333333 }); buttonText.anchor.set(0.5, 0.5); self.addChild(buttonText); var overlay = self.attachAsset('correctAnswerOverlay', { anchorX: 0.5, anchorY: 0.5 }); 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.eliminate = function () { if (self.isCorrect) { return false; } self.isEliminated = true; tween(self, { alpha: 0.3 }, { duration: 300 }); return true; }; self.down = function (x, y, obj) { if (!self.isEliminated && !gameOver && !answerLocked) { self.isSelected = true; submitAnswer(self.index); } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB }); /**** * Game Code ****/ // Game constants // Character images for different emotions/states 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 usedSecondChance = false; 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 questionCard = game.addChild(LK.getAsset('questionCard', { anchorX: 0.5, anchorY: -10.5 })); questionCard.position.set(2048 / 2, 2732 / 2 - 500); var questionText = new Text2("", { size: 70, fill: 0x333333 }); questionText.anchor.set(0.5, 0.5); questionText.position.set(0, 0); questionCard.addChild(questionText); var answerButtons = []; for (var i = 0; i < 4; i++) { var button = new QuestionButton(i, ""); button.position.set(2048 / 2, 2732 / 2 - 100 + i * BUTTON_SPACING); 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(250 + 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: 0xFF0000 }); 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 }); 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 }); counterText.anchor.set(0, 0); counterText.position.set(150, 50); game.addChild(counterText); // Create phone a friend popup var phoneFriendPopup = new PhoneFriendPopup(); phoneFriendPopup.position.set(2048 / 2, 2732 / 2); game.addChild(phoneFriendPopup); // Game timer var gameTimer = LK.setInterval(function () { if (gameOver || answerLocked) { return; } timeLeft--; timerText.setText(timeLeft); // Change character expression when time is running low if (timeLeft <= 5) { character.showExcited(); } 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(); usedSecondChance = false; answerLocked = false; } function submitAnswer(index) { if (answerLocked) { return; } answerLocked = true; var correct = index === currentCorrectIndex; if (correct) { LK.getSound('correctSound').play(); answerButtons[index].markAsCorrect(); character.showHappy(); score++; scoreText.setText("Score: " + score); LK.setTimeout(function () { loadQuestion(currentQuestion + 1); }, 1500); } else { LK.getSound('incorrectSound').play(); answerButtons[index].markAsIncorrect(); answerButtons[currentCorrectIndex].markAsCorrect(); character.showSad(); // Check if second chance joker is available var canUseSecondChance = !usedSecondChance && findJokerByType("second") && !findJokerByType("second").used; if (canUseSecondChance) { LK.setTimeout(function () { activateJoker("second"); }, 1500); } else { LK.setTimeout(function () { endGame(false); }, 2000); } } } function timeExpired() { answerLocked = true; character.showSad(); // Highlight correct answer answerButtons[currentCorrectIndex].markAsCorrect(); LK.setTimeout(function () { endGame(false); }, 2000); } function activateJoker(type) { var joker = findJokerByType(type); if (!joker || joker.used) { return; } LK.getSound('jokerSound').play(); switch (type) { case "fifty": useFiftyFifty(); break; case "audience": useAudienceHelp(); break; case "phone": usePhoneFriend(); break; case "second": useSecondChance(); break; } joker.use(); } 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() { phoneFriendPopup.show(); } function useSecondChance() { usedSecondChance = true; // Reset all buttons for (var i = 0; i < 4; i++) { answerButtons[i].reset(); } // Unlock answer selection answerLocked = false; // Reset character character.showNeutral(); } function phoneFriendCallback(friendIndex) { var friendKnowledge; // Different friends have different knowledge areas switch (friendIndex) { case 0: // Professor - 80% chance of being correct friendKnowledge = 0.8; break; case 1: // Scientist - 70% chance of being correct friendKnowledge = 0.7; break; case 2: // Artist - 60% chance of being correct friendKnowledge = 0.6; break; case 3: // Engineer - 75% chance of being correct friendKnowledge = 0.75; break; } var answerIndex; // Determine if friend gives correct answer based on knowledge if (Math.random() < friendKnowledge) { answerIndex = currentCorrectIndex; } else { // Select a random wrong answer do { answerIndex = Math.floor(Math.random() * 4); } while (answerIndex === currentCorrectIndex); } // Highlight the friend's suggestion var originalColor = answerButtons[answerIndex].children[0].tint; answerButtons[answerIndex].children[0].tint = 0x00FFFF; // Reset the highlight after 5 seconds LK.setTimeout(function () { answerButtons[answerIndex].children[0].tint = originalColor; }, 5000); } 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) { LK.showYouWin(); } else { LK.showGameOver(); } } // Initialize game function initGame() { score = 0; gameOver = false; currentQuestion = 0; // Reset jokers for (var i = 0; i < jokers.length; i++) { jokers[i].reset(); } // Update score text scoreText.setText("Score: " + score); // Start with first question loadQuestion(0); // Play background music LK.playMusic('backgroundMusic'); } // Start the game initGame();
===================================================================
--- original.js
+++ change.js
@@ -97,9 +97,9 @@
});
var PhoneFriendPopup = Container.expand(function () {
var self = Container.call(this);
var background = self.attachAsset('questionCard', {
- anchorX: 110.5,
+ anchorX: 0.5,
anchorY: 0.5,
width: 1200,
height: 800
});
@@ -307,9 +307,9 @@
];
// Create UI elements
var questionCard = game.addChild(LK.getAsset('questionCard', {
anchorX: 0.5,
- anchorY: 0.5
+ anchorY: -10.5
}));
questionCard.position.set(2048 / 2, 2732 / 2 - 500);
var questionText = new Text2("", {
size: 70,