Code edit (2 edits merged)
Please save this source code
User prompt
Agrega unión. Este es una linea que conectan las estrellas más cercanas entre ellas dentro de un rango.
User prompt
Mejora la generación de estrellas haciéndolos más natural y variados, con límites minimo de diferencias entre sí
User prompt
Agrega universe limiter con el asset área para tener una bici n de hasta donde llega el universo. Dale una animación de rotación en bucle lineal ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Crea un sistema de arrastre de pantalla, así navegar por el universo. Al mover desde arriba hacia abajo las estrellas irán para abajo. Así par cada dirección
User prompt
Mejora el sistema de espaciado entre planetas, agrega un mínimo entre la distancia permitida entre planetas (con el fin de evitar que estén muy cercas)
Code edit (1 edits merged)
Please save this source code
User prompt
Agruega un área límite de creación de estrellas en un rango circular de 4000 px
User prompt
Hagamos que las estrellas se creen aleatoriamente en un rango entre 5 a 8 con un mínimo de distancia con respecto a otros (600px)
User prompt
Agrega una seccion llamada "inicialización de objetos" así ordenar la posición que se mostrarán los objetos con respecto a otros
User prompt
Haz que la animación bump sea en bucle y suave en una velocidad lineal ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Agruega una animación bump suave a las estrellas ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Agruega hasta 5 variantes de tonos para cada estrella y dale una animación donde cambian suavemente de color en una pequeña variación de su tono original ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Agruegemos aleatoriedad al diseño de la estrella. Agruegemos tamaño entre 0.7 a 1.3 clasificados como pequeñas, medianas y grandes. Asignarles colores rojos, amarillos y azules correspondiente a su tamaño como en la vida real ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Crea un objeto llama Star con el asset solar sistema, ajusta su posición al centro del juego
User prompt
Please fix the bug: 'network is not defined' in or related to this line: 'for (var j = 0; j < network.length; j++) {' Line Number: 185
User prompt
crea una sección para las inicializaciones de los objetos y asi ordenar el orden en el que se mostraran
User prompt
elimina los contenedores
Code edit (1 edits merged)
Please save this source code
User prompt
haz que el texto siempre sea visible
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'addChild')' in or related to this line: 'foregroundContainer.addChild(solarSystemCountText);' Line Number: 75
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'length')' in or related to this line: 'var solarSystemCountText = new Text2('Solar Systems: ' + network.length, {' Line Number: 67
User prompt
agrega un texto que diga la cantidad de sistemas
Code edit (2 edits merged)
Please save this source code
User prompt
galaxymotion fuction excluye Guicontainer
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var BackgroundContainer = Container.expand(function () { var self = Container.call(this); // Array to keep track of visited solar systems self.visitedSolarSystems = []; return self; }); var ForegroundContainer = Container.expand(function () { var self = Container.call(this); return self; }); var GuiContainer = 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 network = []; // Initialize network array before use var solarSystemCountText = new Text2('Solar Systems: ' + network.length, { size: 60, fill: 0xFFFFFF }); solarSystemCountText.anchor.set(0.5, 0); solarSystemCountText.x = 1024; solarSystemCountText.y = 50; var foregroundContainer = game.addChild(new ForegroundContainer()); foregroundContainer.addChild(solarSystemCountText); function connectSolarSystems(systemA, systemB) { // Check if a line already exists between these systems if (systemA.connectedSystems && systemA.connectedSystems.includes(systemB)) { return; } // Create a line between the two systems var randomLineIndex = Math.floor(Math.random() * 5) + 1; // Randomly select an asset index between 1 and 5 var line = backgroundContainer.addChild(LK.getAsset('line' + randomLineIndex, { anchorX: 0.5, anchorY: 0.5, x: (systemA.x + systemB.x) / 2, y: (systemA.y + systemB.y) / 2, scaleX: Math.sqrt(Math.pow(systemA.x - systemB.x, 2) + Math.pow(systemA.y - systemB.y, 2)) / 100, scaleY: 0.1, rotation: Math.atan2(systemB.y - systemA.y, systemB.x - systemA.x) })); // Add a continuous transparency pulse effect to the line function pulseLine(line) { tween(line, { alpha: 0.3 }, { duration: 1500, easing: tween.easeInOut, onFinish: function onFinish() { tween(line, { alpha: 0.8 }, { duration: 1500, easing: tween.easeInOut, onFinish: function onFinish() { pulseLine(line); // Recursively call to continue the pulse effect } }); } }); } pulseLine(line); // Store the connection to avoid duplicate lines if (!systemA.connectedSystems) { systemA.connectedSystems = []; } systemA.connectedSystems.push(systemB); } // Function to make a solar system pulse smoothly function pulseSolarSystem(solarSystem) { tween(solarSystem, { scaleX: solarSystem.scaleX * 1.1, scaleY: solarSystem.scaleY * 1.1 }, { duration: 1000, easing: tween.easeInOut, onFinish: function onFinish() { tween(solarSystem, { scaleX: solarSystem.scaleX / 1.1, scaleY: solarSystem.scaleY / 1.1 }, { duration: 1000, easing: tween.easeInOut, onFinish: function onFinish() { pulseSolarSystem(solarSystem); } }); } }); } // Define foregroundContainer before using it var foregroundContainer = game.addChild(new ForegroundContainer()); // Define galaxySpace object var galaxySpace = foregroundContainer.addChild(LK.getAsset('area', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 1366, alpha: 0.3, scaleX: 4.5, scaleY: 4.5 })); // Function to add a smooth rotation to the galaxySpace object in a loop function rotateGalaxySpace() { tween(galaxySpace, { rotation: galaxySpace.rotation + Math.PI * 2 }, { duration: 600000, easing: tween.linear, onFinish: rotateGalaxySpace }); } rotateGalaxySpace(); 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()); var GuiContainer = game.addChild(new GuiContainer()); game.update = function () { spaceShip.x = area.x; spaceShip.y = area.y; // Iterate over each solar system to check for nearby systems for (var i = 0; i < network.length; i++) { var systemA = network[i]; for (var j = i + 1; j < network.length; j++) { var systemB = network[j]; var dx = systemA.x - systemB.x; var dy = systemA.y - systemB.y; var distance = Math.sqrt(dx * dx + dy * dy); // If the distance is less than 600 pixels, connect them if (distance < 900) { connectSolarSystems(systemA, systemB); } } } }; // Add multiple solar system objects var network = []; var solarSystemList = []; // New list to store solar systems for (var i = 0; i < Math.floor(Math.random() * 30) + 45; i++) { var x, y, validPosition; do { var angle = Math.random() * Math.PI * 2; // Random angle var radius = Math.random() * 2200 + 500; // Random radius between 350 and 1850 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 < 500) { 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.3 + 1; // 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", "Lynx", "Lynx Minor", "Lynx Major", "Lynx Prime", "Lynx Alpha", "Lynx Beta", "Lynx Gamma", "Lynx Delta", "Lynx Epsilon", "Lynx Zeta", "Lynx Eta", "Lynx Theta", "Lynx Iota", "Lynx Kappa", "Lynx Lambda", "Lynx Mu", "Lynx Nu", "Lynx Xi", "Lynx Omicron", "Lynx Pi", "Lynx Rho", "Lynx Sigma", "Lynx Tau", "Lynx Upsilon", "Lynx Phi", "Lynx Chi", "Lynx Psi", "Lynx Omega", "Lynx Alpha Prime", "Lynx Beta Prime", "Lynx Gamma Prime", "Lynx Delta Prime", "Lynx Epsilon Prime", "Lynx Zeta Prime", "Lynx Eta Prime", "Lynx Theta Prime", "Lynx Iota Prime", "Lynx Kappa Prime", "Lynx Lambda Prime", "Lynx Mu Prime", "Lynx Nu Prime", "Lynx Xi Prime", "Lynx Omicron Prime", "Lynx Pi Prime", "Lynx Rho Prime", "Lynx Sigma Prime", "Lynx Tau Prime", "Lynx Upsilon Prime", "Lynx Phi Prime", "Lynx Chi Prime", "Lynx Psi Prime", "Lynx Omega Prime", "Lynx Alpha Major", "Lynx Beta Major", "Lynx Gamma Major", "Lynx Delta Major", "Lynx Epsilon Major", "Lynx Zeta Major", "Lynx Eta Major", "Lynx Theta Major", "Lynx Iota Major", "Lynx Kappa Major", "Lynx Lambda Major", "Lynx Mu Major", "Lynx Nu Major", "Lynx Xi Major", "Lynx Omicron Major", "Lynx Pi Major", "Lynx Rho Major", "Lynx Sigma Major", "Lynx Tau Major", "Lynx Upsilon Major", "Lynx Phi Major", "Lynx Chi Major", "Lynx Psi Major", "Lynx Omega Major", "Lynx Alpha Minor", "Lynx Beta Minor", "Lynx Gamma Minor", "Lynx Delta Minor", "Lynx Epsilon Minor", "Lynx Zeta Minor", "Lynx Eta Minor", "Lynx Theta Minor", "Lynx Iota Minor", "Lynx Kappa Minor", "Lynx Lambda Minor", "Lynx Mu Minor", "Lynx Nu Minor", "Lynx Xi Minor", "Lynx Omicron Minor", "Lynx Pi Minor", "Lynx Rho Minor", "Lynx Sigma Minor", "Lynx Tau Minor", "Lynx Upsilon Minor", "Lynx Phi Minor", "Lynx Chi Minor", "Lynx Psi Minor", "Lynx Omega Minor"]; 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 }); solarSystemText.anchor.set(0.6, 1.2); // 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 foregroundContainer.addChild(solarSystemText); pulseSolarSystem(solarSystem); // Apply changeSizeOnTouch to each SolarSystem object solarSystem.down = function (x, y, touchedObj) { changeAreaLocation(solarSystem, area); }; } // 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 })); // Create a new object with the asset of area called 'Galaxy space' var galaxySpace = foregroundContainer.addChild(LK.getAsset('area', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 1366, alpha: 0, scaleX: 4.5, // Increase the scale on the X-axis scaleY: 4.5 // Increase the scale on the Y-axis })); // Add a new object called areaPunter var spaceShip = midgroundContainer.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 || solarSystem.x === area.x && solarSystem.y === area.y) { return; } // Prevent relocation if already moving or if the spaceship is already at the solar system // 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
@@ -226,9 +226,9 @@
});
solarSystemText.anchor.set(0.6, 1.2); // 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);
+ foregroundContainer.addChild(solarSystemText);
pulseSolarSystem(solarSystem);
// Apply changeSizeOnTouch to each SolarSystem object
solarSystem.down = function (x, y, touchedObj) {
changeAreaLocation(solarSystem, area);