User prompt
cuando este start menu, gameplay no es visible
User prompt
cuando se toque que cambie la pagina de gameplay -> start menu / viceversa
User prompt
haz que todos los objetos sean hijos de la clase gameplay
User prompt
haz que la pagina inicial sea startmenu
User prompt
Please fix the bug: 'gameplayPage.addChild is not a function' in or related to this line: 'var initialSolarSystem = gameplayPage.addChild(LK.getAsset('initialSolarSystem', {' Line Number: 63
User prompt
establece solarsystes/initial,area, etc como parte de gameplay page
User prompt
crea un nuevo page separado de los demas llamado Start menu
User prompt
Create a new separate gameplayPage class var gameplayPage = Container.expand(function () { var self = Container.call(this);
User prompt
Create a gameplayPage class var gameplayPage = Container.expand(function () { var self = Container.call(this);
User prompt
crate a gameplayPage class
User prompt
establece pagina uno como la inicial
User prompt
add page2 separated from the first one, with the name "Start menu"
User prompt
nombra a pagina uno como gameplay
User prompt
crea una nueva pagina independiente de la inicial con el nombre pagina de inicio
User prompt
crea una nueva pagina separa de la inicial llamada inicio
Code edit (1 edits merged)
Please save this source code
User prompt
haz que area solo se pueda trasladar a un sistema solar dentro de su area
User prompt
cuando areapunter colisiona con solarsystem que cambie su sprite a visited
User prompt
busca unaalternativa de aplicar bien el cambio de tamaño a los solarsystem
Code edit (1 edits merged)
Please save this source code
User prompt
elimina todo lo relacionado a cambio de tamaño
User prompt
siguen sin cambiar su tamaño al tocarlos
User prompt
el codigo no funciona
User prompt
haz que al tocar un solarsistem disminuya su tamaño y se reustaure
Code edit (1 edits merged)
Please save this source code
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
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
****/
game.update = function () {
areaPunter.x = area.x;
areaPunter.y = area.y;
};
var initialSolarSystem = game.addChild(LK.getAsset('initialSolarSystem', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1366
}));
// Apply changeSizeOnTouch to the initialSolarSystem object
changeSizeOnTouch(initialSolarSystem, 0.9);
initialSolarSystem.down = function (x, y, touchedObj) {
changeAreaLocation(initialSolarSystem, area);
};
// Apply changeAreaLocation to the initialSolarSystem object
initialSolarSystem.down = function (x, y, touchedObj) {
changeAreaLocation(initialSolarSystem, area);
};
// Add multiple solar system objects
var solarSystems = [];
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 = game.addChild(LK.getAsset('solarSystem', {
anchorX: 0.5,
anchorY: 0.5,
x: x,
y: y
}));
solarSystems.push(solarSystem);
// Apply changeSizeOnTouch to each SolarSystem object
changeSizeOnTouch(solarSystem, 0.9);
solarSystem.down = function (x, y, touchedObj) {
changeAreaLocation(solarSystem, area);
};
}
// 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) {
obj.down = function (x, y, touchedObj) {
obj.scaleX = 0.9;
obj.scaleY = 0.9;
};
obj.up = function (x, y, touchedObj) {
obj.scaleX = 1;
obj.scaleY = 1;
};
}
// 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 = game.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 = game.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.05,
scaleY: 1.05
}, {
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
area.isMoving = true; // Set moving flag
var speed = 0.15; // Set a fixed speed for the movement
var distance = Math.sqrt(Math.pow(solarSystem.x - area.x, 2) + Math.pow(solarSystem.y - area.y, 2));
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);
};
});