User prompt
ajusta la dirección donde apunta spaceShip para que parezca que se dirige al siguiente sistema solar
User prompt
haz que siempre aparezca un solarSystem en el medio
User prompt
cambia el nombre areapunter a spaceShip
User prompt
haz que el nombre de cada system sea aleatorio de la lista, pero que no se repitan
User prompt
agrega hasta 100 posibles nombres
User prompt
haz que en vez de solar system
User prompt
haz que cada system solar tenga un nombre unico y se muestre en el texto en vez del numero
User prompt
aumenta en un 50% el rango de aparición de los system
User prompt
elimina textdisplay de punter system
User prompt
Please fix the bug: 'ReferenceError: punterPreviousSystemText is not defined' in or related to this line: 'punterPreviousSystemText.setText(punterPreviousSystem.toString()); // Update the text display' Line Number: 107
User prompt
elimina el text display de punterSystem
User prompt
haz que la conexión se haga despues de que se termine la animación de visitedsystem
User prompt
ajusta la posición de creación de los system para que siempre sea posible conectar a todos
User prompt
Please fix the bug: 'initialSolarSystem is not defined' in or related to this line: 'var dxInitial = initialSolarSystem.x - x;' Line Number: 183
User prompt
elimina todo lo relacionado con initialsystem
User prompt
Please fix the bug: 'Cannot read properties of null (reading 'y')' in or related to this line: 'var dyInitial = initialSolarSystem.y - y;' Line Number: 196
User prompt
Please fix the bug: 'Cannot read properties of null (reading 'y')' in or related to this line: 'var dyInitial = initialSolarSystem.y - y;' Line Number: 194
User prompt
Please fix the bug: 'Cannot read properties of null (reading 'y')' in or related to this line: 'var dyInitial = initialSolarSystem.y - y;' Line Number: 194
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'x')' in or related to this line: 'var dxInitial = initialSolarSystem.x - x;' Line Number: 186
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'x')' in or related to this line: 'var dxInitial = initialSolarSystem.x - x;' Line Number: 185
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading '0')' in or related to this line: 'var initialSolarSystem = solarSystems[0]; // Set initialSolarSystem to SolarSystem0 as the starting point' Line Number: 81
User prompt
establece a Solarsystem0 como punto de inicio
User prompt
Please fix the bug: 'initialSolarSystem is not defined' in or related to this line: 'var dxInitial = initialSolarSystem.x - x;' Line Number: 183
User prompt
elimina initialSystem
User prompt
establece a initial system como Solarsystem0
/****
* 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.5
});
self.addChild(line);
};
// 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];
// Check if a connection already exists
var connectionExists = self.visitedSolarSystems.some(function (system) {
return system.x === previousSystem.x && system.y === previousSystem.y && system.x === currentSystem.x && system.y === currentSystem.y;
});
if (!connectionExists) {
self.drawLine(previousSystem.x, previousSystem.y, currentSystem.x, currentSystem.y);
}
}
};
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 punterPreviousSystem = 0; // Variable to store the planet number where the router is located
var visitedSolarSystems = [];
// Create a text display for punterPreviousSystem
var punterPreviousSystemText = new Text2(punterPreviousSystem.toString(), {
size: 50,
fill: 0xFFFFFF
});
punterPreviousSystemText.anchor.set(0.5, 0); // Center the text horizontally at the top
LK.gui.top.addChild(punterPreviousSystemText); // Add text to the top of the screen
// 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 () {
areaPunter.x = area.x;
areaPunter.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 () {
areaPunter.x = area.x;
areaPunter.y = area.y;
// Check for collision between areaPunter and each solarSystem
solarSystems.forEach(function (solarSystem) {
if (areaPunter.intersects(solarSystem)) {
punterPreviousSystem = solarSystemList.find(function (system) {
return system.solarSystem === solarSystem;
}).id; // Update punterSystem with the ID
punterPreviousSystemText.setText(punterPreviousSystem.toString()); // Update the text display
// 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
visitedSolarSystems.push(solarSystem); // Add to visited list
backgroundContainer.connectVisitedSolarSystems(); // Connect visited solar systems by area
}
});
// Ensure initialSolarSystem is marked as visited and connected
if (punterPreviousSystem === -1 || areaPunter.intersects(initialSolarSystem)) {
if (!initialSolarSystem.visited) {
initialSolarSystem.visited = true;
visitedSolarSystems.push(initialSolarSystem);
}
punterPreviousSystem = -1; // Set punterPreviousSystem to -1
punterPreviousSystemText.setText(punterPreviousSystem.toString()); // Update the text display
backgroundContainer.connectVisitedSolarSystems();
}
};
solarSystems.forEach(function (solarSystem) {
if (areaPunter.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
}
});
};
var initialSolarSystem = midgroundContainer.addChild(LK.getAsset('solarSystem', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1366
}));
// Create a text display for the initial planet number
var initialPlanetNumber = new Text2('0', {
size: 50,
fill: 0xFFFFFF
});
initialPlanetNumber.anchor.set(0.5, 1); // Center the text horizontally above the initial planet
initialPlanetNumber.x = initialSolarSystem.x;
initialPlanetNumber.y = initialSolarSystem.y - initialSolarSystem.height / 2 - 10; // Position above the initial planet
midgroundContainer.addChild(initialPlanetNumber);
// Apply changeSizeOnTouch to the initialSolarSystem object
initialSolarSystem.down = function (x, y, touchedObj) {
changeAreaLocation(initialSolarSystem, area);
changeSizeOnTouch(initialSolarSystem, 0.9);
};
// Apply changeAreaLocation to the initialSolarSystem object
initialSolarSystem.down = function (x, y, touchedObj) {
changeAreaLocation(initialSolarSystem, area);
};
// Add multiple solar system objects
var solarSystems = [];
var solarSystemList = []; // New list to store solar systems
for (var i = 0; i < Math.floor(Math.random() * 6) + 15; i++) {
var x, y, validPosition;
do {
x = Math.random() * 3072;
y = Math.random() * 4098;
validPosition = true;
for (var j = 0; j < solarSystems.length; j++) {
var existingSystem = solarSystems[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 solarSystem = midgroundContainer.addChild(LK.getAsset('solarSystem', {
anchorX: 0.5,
anchorY: 0.5,
x: x,
y: y
}));
solarSystems.push(solarSystem);
solarSystemList.push({
id: i,
solarSystem: solarSystem
}); // Store solar system with an ID
// Create a text display for the solar system number
var solarSystemNumber = new Text2((i + 1).toString(), {
size: 50,
fill: 0xFFFFFF
});
solarSystemNumber.anchor.set(0.5, 1); // Center the text horizontally above the solar system
solarSystemNumber.x = solarSystem.x;
solarSystemNumber.y = solarSystem.y - solarSystem.height / 2 - 10; // Position above the solar system
midgroundContainer.addChild(solarSystemNumber);
// 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 areaPunter = backgroundContainer.addChild(LK.getAsset('areaPunter', {
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
var speed = 0.15; // Set a fixed speed for the movement
var duration = distance / speed; // Calculate duration based on distance and speed
tween(area, {
x: solarSystem.x,
y: solarSystem.y
}, {
duration: duration,
easing: tween.easeInOut,
onFinish: function onFinish() {
area.isMoving = false; // Reset moving flag
}
});
}
// Apply changeAreaLocation to the SolarSystem object
// Apply changeAreaLocation to each SolarSystem object
solarSystems.forEach(function (solarSystem) {
solarSystem.down = function (x, y, touchedObj) {
changeAreaLocation(solarSystem, area);
};
});