Code edit (4 edits merged)
Please save this source code
User prompt
aumenta un 50% la cantidad de sistemas solares
User prompt
Elimina todo lo relacionado con red
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'forEach')' in or related to this line: 'network.forEach(function (solarSystem) {' Line Number: 66
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'forEach')' in or related to this line: 'network.forEach(function (solarSystem) {' Line Number: 66
User prompt
crea logica para trazar los caminos posibles desde ship hasta los sistemas solares
User prompt
haz que ship no pueda viajar al planeta en el que ya esta
User prompt
elimina todo lo relacionado con la conexión de sistemás
User prompt
Ahora la linea se junta con el ultimo sistema de la red y no con el ultimo sistema de ship
User prompt
Hay algo que hace que el juego se lagee mucho cuando se esta mucho tiempo en un sistema
User prompt
elimina el codigo que Change the sprite to visitedSolarSystem
User prompt
deleted Change the sprite to visitedSolarSystem
User prompt
historia no se muestra
User prompt
Deleted Change the sprite to visitedSolarSystem
Code edit (1 edits merged)
Please save this source code
User prompt
haz que al iniciar a un sistema salga un texto contando una historia
User prompt
Crea una función para el text display del nombre de los planetas para que este cambie de color si forma parte de los planetas visitados
User prompt
arregla el bug que hace que conect pkanets aumente sin limite
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'addChild')' in or related to this line: 'foregroundContainer.addChild(connectedPlanetsText);' Line Number: 130
User prompt
crea un texto que diga cuantos planetas estan conectados
User prompt
haz que el text display sobre el sistema cambie del color si este esta visitado
User prompt
agrega una logica para que el texto de cada sistema cambie su color a verde si esta visitado ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
no cambia de color
User prompt
no funciona
User prompt
haz que los planetas visitados su texto de nombre sea verde
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var BackgroundContainer = Container.expand(function () { var self = Container.call(this); // Function to draw a line between two points self.drawLine = function (x1, y1, x2, y2) { var line = LK.getAsset('connectSolarSystem', { x: x1, y: y1, width: Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)), height: LK.getAsset('connectSolarSystem', {}).height, rotation: Math.atan2(y2 - y1, x2 - x1), anchorX: 0, anchorY: 0, alpha: 0.5 }); self.addChild(line); tween(line, { alpha: 0.1 }, { duration: 500, easing: tween.easeInOut, onFinish: function onFinish() { tween(line, { alpha: 0.5 }, { duration: 500, easing: tween.easeInOut, onFinish: function onFinish() { tween(line, { alpha: 0.1 }, { duration: 500, easing: tween.easeInOut, onFinish: function onFinish() { self.drawLine(x1, y1, x2, y2); } }); } }); } }); }; // Array to keep track of visited solar systems self.visitedSolarSystems = []; // Function to connect visited solar systems self.connectVisitedSolarSystems = function () { if (self.visitedSolarSystems.length < 1) { return; } if (self.visitedSolarSystems.length > 1) { var previousSystem = self.visitedSolarSystems[self.visitedSolarSystems.length - 2]; var currentSystem = self.visitedSolarSystems[self.visitedSolarSystems.length - 1]; // Store connections in a list to optimize resource usage self.connections = self.connections || []; var connectionKey = previousSystem.x + ',' + previousSystem.y + '-' + currentSystem.x + ',' + currentSystem.y; if (!self.connections.includes(connectionKey)) { self.drawLine(previousSystem.x, previousSystem.y, currentSystem.x, currentSystem.y); self.connections.push(connectionKey); } } }; return self; }); var ForegroundContainer = Container.expand(function () { var self = Container.call(this); return self; }); var MidgroundContainer = Container.expand(function () { var self = Container.call(this); return self; }); var SolarSystem = Container.expand(function () { var self = Container.call(this); var solarSystemGraphics = self.attachAsset('solarSystem', { anchorX: 0.5, anchorY: 0.5 }); return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000010 }); /**** * Game Code ****/ var initialSolarSystem = { x: 0, y: 0 }; // Define initialSolarSystem with default coordinates var punterPreviousSystem = 0; // Variable to store the planet number where the router is located var visitedSolarSystems = []; // Removed global connectVisitedSolarSystems function and use BackgroundContainer's method var backgroundContainer = game.addChild(new BackgroundContainer()); var midgroundContainer = game.addChild(new MidgroundContainer()); var foregroundContainer = game.addChild(new ForegroundContainer()); game.update = function () { spaceShip.x = area.x; spaceShip.y = area.y; // Update game logic to connect solar systems using BackgroundContainer's methods backgroundContainer.visitedSolarSystems = visitedSolarSystems; backgroundContainer.connectVisitedSolarSystems(); // Update game logic to connect solar systems game.update = function () { spaceShip.x = area.x; spaceShip.y = area.y; // Check for collision between areaPunter and each solarSystem network.forEach(function (solarSystem) { if (spaceShip.intersects(solarSystem)) { punterPreviousSystem = solarSystemList.find(function (system) { return system.solarSystem === solarSystem; }).id; // Update punterSystem with the ID solarSystem.visited = true; // Mark as visited visitedSolarSystems.push(solarSystem); // Add to visited list backgroundContainer.connectVisitedSolarSystems(); // Connect visited solar systems by area } }); }; network.forEach(function (solarSystem) { if (spaceShip.intersects(solarSystem)) { // Change the sprite to visitedSolarSystem tween(solarSystem.children[0], { alpha: 0 }, { duration: 1000, easing: tween.easeInOut, onFinish: function onFinish() { solarSystem.removeChild(solarSystem.children[0]); solarSystem.attachAsset('visitedSolarSystem', { anchorX: 0.5, anchorY: 0.5 }); tween(solarSystem.children[0], { alpha: 1 }, { duration: 1000, easing: tween.easeInOut }); } }); solarSystem.visited = true; // Mark as visited solarSystemText.fill = 0x00FF00; // Change text color to green when visited solarSystemText.setText(solarSystemText.text); // Refresh text to apply color change } }); }; // Add multiple solar system objects var network = []; var solarSystemList = []; // New list to store solar systems for (var i = 0; i < Math.floor(Math.random() * 11) + 30; i++) { var x, y, validPosition; do { var angle = Math.random() * Math.PI * 2; // Random angle var radius = Math.random() * 1500 + 500; // Random radius between 300 and 1100 x = 1024 + Math.cos(angle) * radius; // Centered around 1024 y = 1366 + Math.sin(angle) * radius; // Centered around 1366 validPosition = true; for (var j = 0; j < network.length; j++) { var existingSystem = network[j]; var dx = existingSystem.x - x; var dy = existingSystem.y - y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance < 400) { validPosition = false; break; } } // Ensure solar systems do not appear within 600 pixels of the initial solar system var dxInitial = initialSolarSystem.x - x; var dyInitial = initialSolarSystem.y - y; var distanceInitial = Math.sqrt(dxInitial * dxInitial + dyInitial * dyInitial); if (distanceInitial < 600) { validPosition = false; } } while (!validPosition); var randomAssetIndex = Math.floor(Math.random() * 3) + 1; // Randomly select an asset index between 1 and 3 var randomScale = Math.random() * 0.5 + 0.75; // Random scale between 0.75 and 1.25 var solarSystem = midgroundContainer.addChild(LK.getAsset('solarSystem' + randomAssetIndex, { anchorX: 0.5, anchorY: 0.5, x: x, y: y, scaleX: randomScale, scaleY: randomScale })); network.push(solarSystem); solarSystemList.push({ id: i, solarSystem: solarSystem }); // Generate a unique name for each solar system var solarSystemNames = ["Andromeda", "Orion", "Pegasus", "Phoenix", "Lyra", "Draco", "Cassiopeia", "Hercules", "Perseus", "Cygnus", "Aquarius", "Taurus", "Gemini", "Leo", "Virgo", "Libra", "Scorpius", "Sagittarius", "Capricornus", "Pisces", "Aries", "Cancer", "Ophiuchus", "Ursa Major", "Ursa Minor", "Bootes", "Canis Major", "Canis Minor", "Centaurus", "Cetus", "Corona Borealis", "Corvus", "Crater", "Delphinus", "Equuleus", "Eridanus", "Fornax", "Grus", "Hydra", "Hydrus", "Indus", "Lacerta", "Leo Minor", "Lepus", "Lupus", "Lynx", "Microscopium", "Monoceros", "Musca", "Norma", "Octans", "Pavo", "Pictor", "Puppis", "Pyxis", "Reticulum", "Sagitta", "Sculptor", "Serpens", "Sextans", "Telescopium", "Triangulum", "Triangulum Australe", "Tucana", "Vela", "Volans", "Vulpecula", "Antlia", "Apus", "Ara", "Caelum", "Camelopardalis", "Carina", "Chamaeleon", "Circinus", "Columba", "Coma Berenices", "Crux", "Dorado", "Horologium", "Mensa", "Scutum"]; var shuffledNames = solarSystemNames.slice().sort(function () { return Math.random() - 0.5; }); // Shuffle the names array var solarSystemName = shuffledNames[i % shuffledNames.length]; // Assign a unique name from the shuffled list var solarSystemText = new Text2(solarSystemName, { size: 50, fill: 0xFFFFFF // Default text color }); solarSystemText.anchor.set(0.5, 1); // Center the text horizontally above the solar system solarSystemText.x = solarSystem.x; solarSystemText.y = solarSystem.y - solarSystem.height / 2 - 10; // Position above the solar system midgroundContainer.addChild(solarSystemText); // Apply changeSizeOnTouch to each SolarSystem object solarSystem.down = function (x, y, touchedObj) { changeAreaLocation(solarSystem, area); changeSizeOnTouch(solarSystem, 0.9); }; } // Function to change the size of an object when touched and restore it when released // Also, mark the SolarSystem as visited when touched function changeSizeOnTouch(obj, scale) { var originalScaleX = obj.scaleX; var originalScaleY = obj.scaleY; obj.down = function (x, y, touchedObj) { this.scaleX = originalScaleX * scale; this.scaleY = originalScaleY * scale; }; obj.up = function (x, y, touchedObj) { this.scaleX = originalScaleX; this.scaleY = originalScaleY; }; } // Function to enable optimized galaxy motion for a given object function enableGalaxyMotion(obj) { var dragNode = null; var velocity = { x: 0, y: 0 }; var lastPosition = { x: 0, y: 0 }; obj.down = function (x, y, touchedObj) { dragNode = obj; lastPosition.x = x; lastPosition.y = y; }; obj.move = function (x, y, touchedObj) { if (dragNode) { velocity.x = (x - lastPosition.x) * 0.6 + velocity.x * 0.8; velocity.y = (y - lastPosition.y) * 0.6 + velocity.y * 0.8; dragNode.x += velocity.x; dragNode.y += velocity.y; lastPosition.x = x; lastPosition.y = y; } }; obj.up = function (x, y, touchedObj) { dragNode = null; }; } // Add an area to the galaxy var area = foregroundContainer.addChild(LK.getAsset('area', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 1366, alpha: 0.6 // Add transparency to the area })); // Add a new object called areaPunter var spaceShip = backgroundContainer.addChild(LK.getAsset('spaceShip', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 1366 })); // Add a smooth rotation to the area object in a loop function rotateArea() { tween(area, { rotation: area.rotation + Math.PI * 2 }, { duration: 35000, easing: tween.linear, onFinish: rotateArea }); } rotateArea(); // Function to make the area pulse smoothly function pulseArea() { tween(area, { scaleX: 1.1, scaleY: 1.1 }, { duration: 1000, easing: tween.easeInOut, onFinish: function onFinish() { tween(area, { scaleX: 0.95, scaleY: 0.95 }, { duration: 1500, easing: tween.easeInOut, onFinish: pulseArea }); } }); } pulseArea(); // Apply galaxy motion to the entire game area enableGalaxyMotion(game); // Function to change the area's location to the touched solar system function changeAreaLocation(solarSystem, area) { if (area.isMoving) { return; } // Prevent relocation if already moving // Check if the solar system is within the area var dx = solarSystem.x - area.x; var dy = solarSystem.y - area.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance > area.width / 2) { return; // Do not move if the solar system is outside the area } area.isMoving = true; // Set moving flag // Calculate the angle to the destination var angleToDestination = Math.atan2(dy, dx); spaceShip.rotation = angleToDestination; // Rotate spaceShip to face the destination var speed = 0.15; // Set a fixed speed for the movement var duration = distance / speed; // Calculate duration based on distance and speed LK.getSound('movesound').play({ loop: true }); // Loop movesound while the spaceship is moving tween(area, { x: solarSystem.x, y: solarSystem.y }, { duration: duration, easing: tween.easeInOut, onFinish: function onFinish() { area.isMoving = false; // Reset moving flag LK.getSound('movesound').stop(); // Stop movesound when the spaceship reaches its destination // Calculate a unique pitch based on the solar system's ID var pitch = 1 + punterPreviousSystem % 10 * 0.1; // Example: vary pitch between 1.0 and 2.0 LK.getSound('visitedsound').play({ pitch: pitch }); // Play visitedsound with varying pitch when the area finishes moving } }); } // Apply changeAreaLocation to the SolarSystem object // Apply changeAreaLocation to each SolarSystem object network.forEach(function (solarSystem) { solarSystem.down = function (x, y, touchedObj) { changeAreaLocation(solarSystem, area); }; });
===================================================================
--- original.js
+++ change.js
@@ -150,8 +150,9 @@
}
});
solarSystem.visited = true; // Mark as visited
solarSystemText.fill = 0x00FF00; // Change text color to green when visited
+ solarSystemText.setText(solarSystemText.text); // Refresh text to apply color change
}
});
};
// Add multiple solar system objects