Code edit (1 edits merged)
Please save this source code
User prompt
haz que al tocar el voto record salte un texto en la parte inferior por unos segundos de "Option not yet implemented due to engine errors" en vez de cambiar a la nueva pagina
User prompt
Please fix the bug: 'Uncaught TypeError: LK.showPopup is not a function' in or related to this line: 'LK.showPopup("Option not yet implemented due to engine errors");' Line Number: 404
User prompt
haz que al tocar el voto record salte un mensaje emergente de "Option not yet implemented due to engine errors" en vez de cambiar a la nueva pagina
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'records.push([nameplayer, playerTime]);' Line Number: 139
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'records.push({' Line Number: 139
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'records.push([nameplayer, playerTime]);' Line Number: 139
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'records.push({' Line Number: 139
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'records.push([nameplayer, playerTime]);' Line Number: 139
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'records.push({' Line Number: 139
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'records.push([nameplayer, playerTime]);' Line Number: 139
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'records.push({' Line Number: 139
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'parse')' in or related to this line: 'var records = storage.records && Array.isArray(storage.records) ? JSON.parse(JSON.stringify(storage.records)) : [{' Line Number: 188
User prompt
Please fix the bug: 'Timeout.tick error: Cannot read properties of undefined (reading 'parse')' in or related to this line: 'storage.records = JSON.parse(JSON.stringify(records.map(function (record) {' Line Number: 265
User prompt
Please fix the bug: 'Timeout.tick error: Cannot read properties of undefined (reading 'parse')' in or related to this line: 'storage.records = JSON.parse(JSON.stringify(records.map(function (record) {' Line Number: 262
User prompt
Please fix the bug: 'Timeout.tick error: Cannot read properties of undefined (reading 'parse')' in or related to this line: 'storage.records = JSON.parse(JSON.stringify(records.map(function (record) {' Line Number: 262
User prompt
Please fix the bug: 'Timeout.tick error: Cannot read properties of undefined (reading 'parse')' in or related to this line: 'storage.records = JSON.parse(JSON.stringify(records.map(function (record) {' Line Number: 263
User prompt
Please fix the bug: 'Timeout.tick error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'return {' Line Number: 264
User prompt
Please fix the bug: 'Timeout.tick error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'return {' Line Number: 264
User prompt
Please fix the bug: 'Timeout.tick error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'storage.records = records;' Line Number: 263
User prompt
haz que cada segundo se guarden los valores de records
Code edit (1 edits merged)
Please save this source code
User prompt
haz que finalice el juego cuando termina de agregar los nuevos valores
Code edit (1 edits merged)
Please save this source code
User prompt
el metodo no funciona, busca otra alternativa maΜs funcional
/**** * Plugins ****/ var facekit = LK.import("@upit/facekit.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ var Background = Container.expand(function () { var self = Container.call(this); var backgroundGraphics = self.attachAsset('Background', { anchorX: 0.5, anchorY: 0.5 }); self.x = 2048 / 2; // Set the x position to the center of the screen self.y = 2732 / 2; // Set the y position to the center of the screen }); var EnemyArrow = Container.expand(function () { var self = Container.call(this); var bEnemyArrowGraphics = self.attachAsset('EnemyArrow', { anchorX: 0.5, anchorY: 0.5 }); // Set the x and y position to a random value at the edges of the spawn area enemyLogic(self); var targetX = player.x; var targetY = player.y; self.update = function () { if (!gamestart) { return; } // Ensure enemy logic only executes when gamestart is true var dx = targetX - self.x; var dy = targetY - self.y; var angle = Math.atan2(dy, dx); self.x += Math.cos(angle) * 7.5; self.y += Math.sin(angle) * 7.5; self.rotation = angle; if (Math.abs(self.x - targetX) < 5 && Math.abs(self.y - targetY) < 5) { targetX += Math.cos(angle) * 1000; targetY += Math.sin(angle) * 1000; } // Check if the EnemyArrow has moved to the opposite side of its spawn point if (self.x < 0 || self.x > 3000 || self.y < 0 || self.y > 3000) { self.destroy(); // Remove the EnemyArrow from the game } }; }); var EnemySaw = Container.expand(function () { var self = Container.call(this); var bEnemySawGraphics = self.attachAsset('EnemySaw', { anchorX: 0.5, anchorY: 0.5 }); // Set the x and y position to a random value at the edges of the spawn area enemyLogic(self); var targetX = player.x; var targetY = player.y; self.update = function () { if (!gamestart) { return; } // Ensure enemy logic only executes when gamestart is true var dx = targetX - self.x; var dy = targetY - self.y; var angle = Math.atan2(dy, dx); if (!self.stopSaw && !self.hasStopped && Math.sqrt(dx * dx + dy * dy) < 400) { self.stopSaw = true; self.hasStopped = true; // Ensure it only stops the first time LK.setTimeout(function () { self.stopSaw = false; targetX = player.x; targetY = player.y; }, 2000); } if (!self.stopSaw) { var speedMultiplier = self.hasStopped ? 1.5 : 1; self.x += Math.cos(angle) * 7.5 * speedMultiplier; self.y += Math.sin(angle) * 7.5 * speedMultiplier; } self.rotation += 0.03; // Add constant rotation to EnemySaw if (Math.abs(self.x - targetX) < 5 && Math.abs(self.y - targetY) < 5) { targetX += Math.cos(angle) * 1000; targetY += Math.sin(angle) * 1000; } // Check if the EnemySaw has moved to the opposite side of its spawn point if (self.x < 0 || self.x > 3000 || self.y < 0 || self.y > 3000) { self.destroy(); // Remove the EnemySaw from the game } }; }); var Player = Container.expand(function () { var self = Container.call(this); var faceGraphics = self.attachAsset('faceObject', { anchorX: 0.5, anchorY: 0.5 }); self.update = function () { // Define a smoothing factor if (!gamestart) { return; } // Ensure playe05 movement only occurs when gamestart is true var smoothing = 0.05; // Update the position of the face follower to follow the nose tip with smoothing var targetX = facekit.noseTip.x; var targetY = facekit.noseTip.y; // Adjust the range of movement for the faceFollower object to be within a square in the middle of the screen var leftBound = (2048 - 1000) / 2; var rightBound = leftBound + 1000; var topBound = (2732 - 1000) / 2; var bottomBound = topBound + 1000; // Limit target position within the defined bounds targetX = Math.max(leftBound, Math.min(rightBound, targetX)); targetY = Math.max(topBound, Math.min(bottomBound, targetY)); // Apply smoothing self.x += (targetX - self.x) * smoothing; self.y += (targetY - self.y) * smoothing; // Check for collision with EnemyArrow for (var i = 0; i < enemyArrows.length; i++) { if (self.intersects(enemyArrows[i])) { self.destroy(); // Eliminate player playerTime = elapsedTime; // Set playerTime equal to elapsedTime gamestart = false; // Set gamestart to false // Add player record records.push({ name: nameplayer, time: playerTime }); // Sort records by playertime in descending order records.sort(function (a, b) { return b.time - a.time; }); // Keep only top 10 records if (records.length > 10) { records.pop(); } // End the game after adding new player records LK.showGameOver(); // This will reset the game state break; } } // Check for collision with EnemySaw for (var i = 0; i < enemySaw.length; i++) { if (self.intersects(enemySaw[i])) { self.destroy(); // Eliminate player gamestart = false; // Set gamestart to false LK.showGameOver(); // End the game break; } } }; }); var RangedLimiter = Container.expand(function () { var self = Container.call(this); var limiterGraphics = self.attachAsset('RangedLimiter', { anchorX: 0.5, anchorY: 0.5, alpha: 0.5 }); }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ var nameplayer = "aaa"; // Variable to store the player's name var playerTime = 0; // Variable to track the player's time var records = storage.records || [{ name: "kaoshi", time: 120 }, { name: "Slime", time: 110 }, { name: "Pepe", time: 100 }, { name: "Arturo", time: 90 }, { name: "Juan", time: 80 }, { name: "NoSe", time: 70 }, { name: "JJAJA", time: 60 }, { name: "Alguien", time: 50 }, { name: "Leera", time: 40 }]; // List to store player records records = storage.records || records; var gamestart = false; function enemyLogic(entity) { var edge = Math.random(); if (edge < 0.25) { // Top edge entity.x = Math.random() * 2000; entity.y = 0; } else if (edge < 0.5) { // Bottom edge entity.x = Math.random() * 2000; entity.y = 3000; } else if (edge < 0.75) { // Left edge entity.x = 0; entity.y = Math.random() * 2000; } else { // Right edge entity.x = 3000; entity.y = Math.random() * 2000; } // Allow specifying enemy spawn time, default to random between 2 and 4 seconds if not provided entity.spawnTime = entity.spawnTime || Math.random() * 2000 + 2000; } var background = game.addChild(new Background()); // Create a timer text object var timerTxt = new Text2('0', { size: 100, fill: 0xFFFFFF }); // Set the anchor to the center of the top edge timerTxt.anchor.set(0.5, 0); // Add the timer text to the GUI overlay at the top-center of the screen LK.gui.top.addChild(timerTxt); // Initialize a variable to keep track of elapsed time var elapsedTime = 0; // Create a timer that updates every second var timerInterval = LK.setInterval(function () { if (!gamestart) { return; } // Ensure timer only updates when gamestart is true elapsedTime++; var minutes = Math.floor(elapsedTime / 60); // Calculate minutes var seconds = elapsedTime % 60; // Calculate remaining seconds var timeString = minutes > 0 ? minutes + "m " + seconds + "s" : seconds + "s"; // Format time string timerTxt.setText(timeString); }, 1000); var player = game.addChild(new Player()); player.x = 2048 / 2; // Center the player on the x-axis player.y = 2732 / 2; // Center the player on the y-axis game.up = function (x, y, obj) { player.scaleX = 1; player.scaleY = 1; }; game.down = function (x, y, obj) { player.scaleX = 0.5; player.scaleY = 0.5; }; // Create a list to store EnemyArrow instances var enemyArrows = []; // Create a timer that creates a new EnemyArrow every random interval between 1 and 2 seconds var enemyArrowInterval = LK.setInterval(function () { if (!gamestart) { return; } var enemyArrow = game.addChild(new EnemyArrow()); enemyArrows.push(enemyArrow); // Add the new EnemyArrow to the list // Set a timeout to remove the EnemyArrow after 20 seconds LK.setTimeout(function () { if (enemyArrows.includes(enemyArrow)) { enemyArrow.destroy(); enemyArrows.splice(enemyArrows.indexOf(enemyArrow), 1); } }, 20000); }, Math.random() * 380 + 1000); var enemySaw = []; LK.setTimeout(function () { var enemySawInterval = LK.setInterval(function () { if (!gamestart) { return; } var newEnemySaw = game.addChild(new EnemySaw()); enemySaw.push(newEnemySaw); // Add the new EnemySaw to the list // Set a timeout to remove the EnemySaw after 20 seconds LK.setTimeout(function () { if (enemySaw.includes(newEnemySaw)) { newEnemySaw.destroy(); enemySaw.splice(enemySaw.indexOf(newEnemySaw), 1); } }, 20000); }, 1500 + 1000); }, 5000); // Delay the start by 30 seconds var rangerlimited = game.addChild(new RangedLimiter()); rangerlimited.x = 2048 / 2; // Center the RangedLimiter on the x-axis rangerlimited.y = 2732 / 2; // Center the RangedLimiter on the y-axis // Create an initial menu var menuContainer = new Container(); // Add a black background to the menu var menuBackground = LK.getAsset('BackgroundMenu', { anchorX: 0.5, anchorY: 0.5 }); menuBackground.x = 2048 / 2; menuBackground.y = 2732 / 2; menuContainer.addChild(menuBackground); // Add a title to the menu var title = new Text2('Game Title', { size: 150, fill: 0xFFFFFF, font: "'Press Start 2P', cursive" // Arcade style font }); title.anchor.set(0.5, 0.5); title.x = 2048 / 2; title.y = 500; menuContainer.addChild(title); // Create buttons var startButtonAsset = LK.getAsset('Buttom', { anchorX: 0.5, anchorY: 0.5, alpha: 0 // Set transparency to 0 }); startButtonAsset.x = 2048 / 2; startButtonAsset.y = 1000; menuContainer.addChild(startButtonAsset); var startButton = new Text2('Game Start', { size: 100, fill: 0xFFFFFF, font: "'Press Start 2P', cursive" // Arcade style font }); startButton.anchor.set(0.5, 0.5); startButton.x = 2048 / 2; startButton.y = 1000; menuContainer.addChild(startButton); var recordButtonAsset = LK.getAsset('Buttom', { anchorX: 0.5, anchorY: 0.5, alpha: 0 // Set transparency to 0 }); recordButtonAsset.x = 2048 / 2; recordButtonAsset.y = 1300; menuContainer.addChild(recordButtonAsset); var recordButton = new Text2('Record', { size: 100, fill: 0xFFFFFF, font: "'Press Start 2P', cursive" // Arcade style font }); recordButton.anchor.set(0.5, 0.5); recordButton.x = 2048 / 2; recordButton.y = 1300; menuContainer.addChild(recordButton); var howToPlayButtonAsset = LK.getAsset('Buttom', { anchorX: 0.5, anchorY: 0.5, alpha: 0 // Set transparency to 0 }); howToPlayButtonAsset.x = 2048 / 2; howToPlayButtonAsset.y = 1600; menuContainer.addChild(howToPlayButtonAsset); var howToPlayButton = new Text2('How to Play', { size: 100, fill: 0xFFFFFF, font: "'Press Start 2P', cursive" // Arcade style font }); howToPlayButton.anchor.set(0.5, 0.5); howToPlayButton.x = 2048 / 2; howToPlayButton.y = 1600; menuContainer.addChild(howToPlayButton); var creditsButtonAsset = LK.getAsset('Buttom', { anchorX: 0.5, anchorY: 0.5, alpha: 0 // Set transparency to 0 }); creditsButtonAsset.x = 2048 / 2; creditsButtonAsset.y = 1900; menuContainer.addChild(creditsButtonAsset); var creditsButton = new Text2('Credits', { size: 100, fill: 0xFFFFFF, font: "'Press Start 2P', cursive" // Arcade style font }); creditsButton.anchor.set(0.5, 0.5); creditsButton.x = 2048 / 2; creditsButton.y = 1900; menuContainer.addChild(creditsButton); game.addChild(menuContainer); ; // Add event listener to 'Record' button recordButtonAsset.down = function (x, y, obj) { // Create a temporary text message var tempMessage = new Text2('Option not yet implemented due to engine errors', { size: 30, fill: 0x00FF00, font: "'Press Start 2P', cursive" }); tempMessage.anchor.set(0.5, 0.5); tempMessage.x = 2048 / 2; tempMessage.y = 2732 - 100; // Position at the bottom of the screen game.addChild(tempMessage); // Set a timeout to remove the message after a few seconds LK.setTimeout(function () { game.removeChild(tempMessage); }, 3000); // Display for 3 seconds }; // Function to display the records page function showRecordsPage() { // Create a new container for the records page var recordsContainer = new Container(); // Add a black background to the records page var recordsBackground = LK.getAsset('BackgroundMenu', { anchorX: 0.5, anchorY: 0.5 }); recordsBackground.x = 2048 / 2; recordsBackground.y = 2732 / 2; recordsContainer.addChild(recordsBackground); // Add a title to the records page var recordsTitle = new Text2('Records', { size: 150, fill: 0xFFFFFF, font: "'Press Start 2P', cursive" }); recordsTitle.anchor.set(0.5, 0.5); recordsTitle.x = 2048 / 2; recordsTitle.y = 500; recordsContainer.addChild(recordsTitle); // Create a table for the records var tableStartY = 700; var rowHeight = 150; var columnWidths = [200, 800, 400]; // Widths for Top, Name, Best Time columns // Add table headers var headers = ['Top', 'Name', 'Best Time']; for (var i = 0; i < headers.length; i++) { var header = new Text2(headers[i], { size: 60, fill: 0xFFFFFF, font: "'Press Start 2P', cursive" }); header.anchor.set(0.5, 0.5); header.x = 2048 / 2 - 600 + columnWidths.slice(0, i).reduce(function (a, b) { return a + b; }, 0) + columnWidths[i] / 2; header.y = tableStartY; recordsContainer.addChild(header); } // Add table rows for (var row = 0; row < 10; row++) { for (var col = 0; col < headers.length; col++) { var cellText = ''; if (row < records.length) { if (col === 0) { cellText = "#" + (row + 1).toString(); // Top position } else if (col === 1) { cellText = records[row].name; // Player name } else if (col === 2) { cellText = records[row].time.toString(); // Best time } } var cell = new Text2(cellText, { size: 80, fill: 0xFFFFFF, font: "'Press Start 2P', cursive" }); cell.anchor.set(0.5, 0.5); cell.x = 2048 / 2 - 600 + columnWidths.slice(0, col).reduce(function (a, b) { return a + b; }, 0) + columnWidths[col] / 2; cell.y = tableStartY + (row + 1) * rowHeight; recordsContainer.addChild(cell); } } // Add a back button to return to the main menu var backButtonAsset = LK.getAsset('Buttom', { anchorX: 0.5, anchorY: 0.5, alpha: 0 }); backButtonAsset.x = 2048 / 2; backButtonAsset.y = 2300; recordsContainer.addChild(backButtonAsset); var backButton = new Text2('Back', { size: 100, fill: 0xFFFFFF, font: "'Press Start 2P', cursive" }); backButton.anchor.set(0.5, 0.5); backButton.x = 2048 / 2; backButton.y = 2400; recordsContainer.addChild(backButton); // Add event listener to 'Back' button backButtonAsset.down = function (x, y, obj) { recordsContainer.visible = false; // Hide the records page menuContainer.visible = true; // Show the main menu }; // Add the records page to the game game.addChild(recordsContainer); } // Add event listener to 'Game Start' button startButtonAsset.down = function (x, y, obj) { menuContainer.visible = false; // Hide the menu gamestart = true; // Start the game };
===================================================================
--- original.js
+++ change.js
@@ -387,10 +387,10 @@
// Add event listener to 'Record' button
recordButtonAsset.down = function (x, y, obj) {
// Create a temporary text message
var tempMessage = new Text2('Option not yet implemented due to engine errors', {
- size: 50,
- fill: 0xFFFFFF,
+ size: 30,
+ fill: 0x00FF00,
font: "'Press Start 2P', cursive"
});
tempMessage.anchor.set(0.5, 0.5);
tempMessage.x = 2048 / 2;
ButtomSound
Sound effect
InitialLevel
Sound effect
ArrowCreated
Sound effect
sawcreated
Sound effect
Sawcharge
Sound effect
Ninjacreated
Sound effect
Ninjasepare
Sound effect
StarCreated
Sound effect
CircleCreated
Sound effect
HexagonCreated
Sound effect
GameplayMusic
Music