User prompt
Please fix the bug: 'bottomRockAsset is not defined' in or related to this line: 'bottomRockText.x = bottomRockAsset.x;' Line Number: 917
User prompt
Please fix the bug: 'bottomRockAsset is not defined' in or related to this line: 'bottomRockAsset.down = function () {' Line Number: 893
User prompt
Cambie el bottomRock y menurock poe bottomShop y menuShop
User prompt
Optimiza todo el codigo
User prompt
Optimiza el código
User prompt
Optimiza el código
User prompt
Actualiza los nuevos cosméticos
User prompt
Arregla el bug que al inicio de cosmetics pague muestra un cubo que no es un cosmético
User prompt
Pon la velocidad de giro en 0.03
User prompt
Disminuye ls velocidad de giro
User prompt
Haz que el giro tarde 3 segundos en dar la vuelta completa
User prompt
Haz que player gire mss lento
User prompt
Haz que el movimiento del fondo y del giro coordine para parecer más fluido
User prompt
Roca no salta
User prompt
Crea un objeto que al precionarse salte la roca y quita la opcion de tocar pantalla (el nuevo objeto ocupa el mismo espacio y que no se vea)
User prompt
Arregla el error que hace que desaparezca el rockdisplay al momento de tocar select
User prompt
Agrega las nuevas rock15-16-17 en cosméticos
User prompt
Actualiza los cosméticos
User prompt
Arregla el fallo que hace que al seleccionar la skin desaparece el rockdisplay
User prompt
presionar selectbottom cambia el asset de player por la roca mostrada en rockdisplay
User prompt
Rename variable rock for player
User prompt
Please fix the bug: 'playera is not defined' in or related to this line: 'self.playerGraphics = self.attachAsset(playera[0], {' Line Number: 547
User prompt
Please fix the bug: 'Player is not a constructor' in or related to this line: 'var player = midgroundContainer.addChild(new Player());' Line Number: 1030
User prompt
Please fix the bug: 'Player is not a constructor' in or related to this line: 'var player = midgroundContainer.addChild(new Player());' Line Number: 1030
User prompt
Please fix the bug: 'Player is not a constructor' in or related to this line: 'var player = midgroundContainer.addChild(new Player());' Line Number: 1030
/**** * Plugins ****/ var storage = LK.import("@upit/storage.v1", { meters: 0, money: 0, spin: 0 }); /**** * Classes ****/ // Create a BackgroundContainer class var BackgroundContainer = Container.expand(function () { var self = Container.call(this); return self; }); // Create a CosmeticPage class var CosmeticPage = Container.expand(function () { var self = Container.call(this); // Add a background for the cosmetic page var cosmeticBackground = self.attachAsset('menuCosmetic', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 }); // Add a title text for the cosmetic page var titleText = new Text2('Cosmetic Page', { size: 200, fill: 0xFFFFFF, font: "Medieval" }); titleText.anchor.set(0.5, 0.5); titleText.x = 2048 / 2; titleText.y = 200; self.addChild(titleText); // Add a button to return to the main menu var backButton = LK.getAsset('bottom', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 - 200 }); self.addChild(backButton); var backText = new Text2('Back', { size: 150, fill: 0x000000, font: "Medieval" }); backText.anchor.set(0.5, 0.5); backText.x = backButton.x; backText.y = backButton.y; self.addChild(backText); // Add interaction to the back button backButton.down = function () { backButton.isPressed = true; backButton.scaleX *= 1.1; backButton.scaleY *= 1.1; LK.getSound('butomtouch').play(); }; backButton.up = function () { if (backButton.isPressed) { backButton.scaleX /= 1.1; backButton.scaleY /= 1.1; backButton.isPressed = false; // Logic to return to the main menu game.showMainMenu(); } }; // Add a cosmetic changer for rocks var rockIndex = 0; // Start with the first rock var Rock = ['Rock0', 'Rock1', 'Rock2', 'Rock3', 'Rock4', 'Rock5', 'Rock6', 'Rock7', 'Rock8', 'Rock9', 'Rock10', 'Rock11', 'Rock12', 'Rock13', 'Rock14']; var cosmeticDisplay = self.attachAsset('Playera' + rockIndex, { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 - 600 //{X} // Moved 100 pixels lower to avoid collision with bottom }); self.addChild(cosmeticDisplay); // Add left arrow button to change the rock cosmetic var leftArrowButton = LK.getAsset('arrowleft', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2 - 450, y: 2732 / 2 - 300 }); self.addChild(leftArrowButton); leftArrowButton.down = function () { leftArrowButton.isPressed = true; leftArrowButton.scaleX *= 1.1; leftArrowButton.scaleY *= 1.1; LK.getSound('butomtouch').play(); }; leftArrowButton.up = function () { if (leftArrowButton.isPressed) { leftArrowButton.scaleX /= 1.1; leftArrowButton.scaleY /= 1.1; leftArrowButton.isPressed = false; // Change the rock cosmetic to the previous one rockIndex = (rockIndex - 1 + 15) % 15; // Assuming there are 15 rock assets self.removeChild(cosmeticDisplay); cosmeticDisplay = self.attachAsset('Rock' + rockIndex, { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 - 600 }); self.addChild(cosmeticDisplay); } }; // Add a 'Select' button between the left and right arrow buttons var selectButton = LK.getAsset('bottom', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 - 300 }); self.addChild(selectButton); var selectText = new Text2('Select', { size: 150, fill: 0x000000, font: "Medieval" }); selectText.anchor.set(0.5, 0.5); selectText.x = selectButton.x; selectText.y = selectButton.y; self.addChild(selectText); // Add interaction to the select button selectButton.down = function () { selectButton.isPressed = true; selectButton.scaleX *= 1.1; selectButton.scaleY *= 1.1; LK.getSound('butomtouch').play(); }; selectButton.up = function () { if (selectButton.isPressed) { selectButton.scaleX /= 1.1; selectButton.scaleY /= 1.1; selectButton.isPressed = false; // Change the rock to the selected cosmetic self.removeChild(cosmeticDisplay); rock = 'Rock' + rockIndex; // Update the current rock to the selected cosmetic } }; // Add right arrow button to change the rock cosmetic var rightArrowButton = LK.getAsset('arrowright', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2 + 450, y: 2732 / 2 - 300 }); self.addChild(rightArrowButton); rightArrowButton.down = function () { rightArrowButton.isPressed = true; rightArrowButton.scaleX *= 1.1; rightArrowButton.scaleY *= 1.1; LK.getSound('butomtouch').play(); }; rightArrowButton.up = function () { if (rightArrowButton.isPressed) { rightArrowButton.scaleX /= 1.1; rightArrowButton.scaleY /= 1.1; rightArrowButton.isPressed = false; // Change the rock cosmetic to the next one rockIndex = (rockIndex + 1) % 15; // Assuming there are 15 rock assets self.removeChild(cosmeticDisplay); cosmeticDisplay = self.attachAsset('Rock' + rockIndex, { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 - 600 }); self.addChild(cosmeticDisplay); } }; return self; }); // Create a CreditsPage class var CreditsPage = Container.expand(function () { var self = Container.call(this); // Add the Slimy asset to the credits page var slimyAsset = self.attachAsset('Slimy', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 }); // Add interaction to the Slimy asset slimyAsset.down = function () { // Logic to return to the extras page game.showExtrasPage(); }; return self; }); // Create an ExtrasPage class var ExtrasPage = Container.expand(function () { var self = Container.call(this); // Add a background for the extras page var extrasBackground = self.attachAsset('menuExtras', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 }); // Add a title text for the extras page var titleText = new Text2('Extras Page', { size: 200, fill: 0xFFFFFF, font: "Medieval" }); titleText.anchor.set(0.5, 0.5); titleText.x = 2048 / 2; titleText.y = 200; self.addChild(titleText); // Add a button to return to the main menu var backButton = LK.getAsset('bottom', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 - 200 }); self.addChild(backButton); var backText = new Text2('Back', { size: 150, fill: 0x000000, font: "Medieval" }); backText.anchor.set(0.5, 0.5); backText.x = backButton.x; backText.y = backButton.y; self.addChild(backText); // Add interaction to the back button backButton.down = function () { backButton.isPressed = true; backButton.scaleX *= 1.1; backButton.scaleY *= 1.1; LK.getSound('butomtouch').play(); }; backButton.up = function () { if (backButton.isPressed) { backButton.scaleX /= 1.1; backButton.scaleY /= 1.1; backButton.isPressed = false; // Logic to return to the main menu game.showMainMenu(); } }; // Add a reset progress button var resetButton = LK.getAsset('bottom', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 + 200 }); self.addChild(resetButton); var resetText = new Text2('Reset Progress', { size: 100, fill: 0xFF0000, font: "Medieval" }); resetText.anchor.set(0.5, 0.5); resetText.x = resetButton.x; resetText.y = resetButton.y; self.addChild(resetText); // Add interaction to the reset button resetButton.down = function () { resetButton.isPressed = true; resetButton.scaleX *= 1.1; resetButton.scaleY *= 1.1; LK.getSound('butomtouch').play(); }; resetButton.up = function () { if (resetButton.isPressed) { resetButton.scaleX /= 1.1; resetButton.scaleY /= 1.1; resetButton.isPressed = false; // Custom confirmation dialog var confirmReset = new Text2('Are you sure you want to reset your progress?', { size: 100, fill: 0xFFFFFF, font: "Medieval" }); confirmReset.anchor.set(0.5, 0.5); confirmReset.x = 2048 / 2; confirmReset.y = 2732 / 2; self.addChild(confirmReset); var yesButton = LK.getAsset('bottom', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2 - 200, y: 2732 / 2 + 150, scaleX: 0.6, // Further decrease size scaleY: 0.6 // Further decrease size }); self.addChild(yesButton); var noButton = LK.getAsset('bottom', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2 + 200, y: 2732 / 2 + 150, scaleX: 0.6, // Further decrease size scaleY: 0.6 // Further decrease size }); self.addChild(noButton); var yesText = new Text2('Yes', { size: 100, fill: 0x000000, font: "Medieval" }); yesText.anchor.set(0.5, 0.5); yesText.x = yesButton.x; yesText.y = yesButton.y; self.addChild(yesText); var noText = new Text2('No', { size: 100, fill: 0x000000, font: "Medieval" }); noText.anchor.set(0.5, 0.5); noText.x = noButton.x; noText.y = noButton.y; self.addChild(noText); yesButton.down = function () { yesButton.isPressed = true; yesButton.scaleX *= 1.1; yesButton.scaleY *= 1.1; LK.getSound('butomtouch').play(); }; yesButton.up = function () { if (yesButton.isPressed) { yesButton.scaleX /= 1.1; yesButton.scaleY /= 1.1; yesButton.isPressed = false; // Logic to reset progress storage.meters = 0; storage.money = 0; meters = 0; money = 0; currentRockIndex = 0; console.log("Progress reset"); background.removeChild(background.playerGraphics); background.playerGraphics = background.attachAsset('Background0', { anchorX: 0.5, anchorY: 0.5 }); backgroundClone.removeChild(backgroundClone.playerGraphics); backgroundClone.playerGraphics = backgroundClone.attachAsset('Background0', { anchorX: 0.5, anchorY: 0.5 }); backgroundClone2.removeChild(backgroundClone2.playerGraphics); backgroundClone2.playerGraphics = backgroundClone2.attachAsset('Background0', { anchorX: 0.5, anchorY: 0.5 }); self.removeChild(confirmReset); self.removeChild(yesButton); self.removeChild(noButton); self.removeChild(yesText); self.removeChild(noText); // Wait 1 second and then end the game LK.setTimeout(function () { LK.showGameOver(); }, 1000); } }; noButton.down = function () { noButton.isPressed = true; noButton.scaleX *= 1.1; noButton.scaleY *= 1.1; LK.getSound('butomtouch').play(); }; noButton.up = function () { if (noButton.isPressed) { noButton.scaleX /= 1.1; noButton.scaleY /= 1.1; noButton.isPressed = false; console.log("Reset canceled"); self.removeChild(confirmReset); self.removeChild(yesButton); self.removeChild(noButton); self.removeChild(yesText); self.removeChild(noText); } }; } }; // Add a credits button var creditsButton = LK.getAsset('bottom', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 + 550 }); self.addChild(creditsButton); var creditsText = new Text2('Credits', { size: 150, fill: 0x000000, font: "Medieval" }); creditsText.anchor.set(0.5, 0.5); creditsText.x = creditsButton.x; creditsText.y = creditsButton.y; self.addChild(creditsText); // Add interaction to the credits button creditsButton.down = function () { creditsButton.isPressed = true; creditsButton.scaleX *= 1.1; creditsButton.scaleY *= 1.1; LK.getSound('butomtouch').play(); }; creditsButton.up = function () { if (creditsButton.isPressed) { creditsButton.scaleX /= 1.1; creditsButton.scaleY /= 1.1; creditsButton.isPressed = false; // Logic to show credits game.showCreditsPage(); } }; return self; }); // Create a ForegroundContainer class var ForegroundContainer = Container.expand(function () { var self = Container.call(this); return self; }); // Create an IntroductionPage class var IntroductionPage = Container.expand(function () { var self = Container.call(this); // Add a background for the introduction page var introductionBackground = self.attachAsset('Introduction', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 }); // Add a title text for the introduction page var titleText = new Text2('Introduction Page', { size: 200, fill: 0xFFFFFF, font: "Medieval" }); titleText.anchor.set(0.5, 0.5); titleText.x = 2048 / 2; titleText.y = 200; self.addChild(titleText); // Add a button to return to the main menu var backButton = LK.getAsset('bottom', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 - 200 }); self.addChild(backButton); var backText = new Text2('Back', { size: 150, fill: 0x000000, font: "Medieval" }); backText.anchor.set(0.5, 0.5); backText.x = backButton.x; backText.y = backButton.y; self.addChild(backText); // Add interaction to the back button backButton.down = function () { backButton.isPressed = true; backButton.scaleX *= 1.1; backButton.scaleY *= 1.1; LK.getSound('butomtouch').play(); }; backButton.up = function () { if (backButton.isPressed) { backButton.scaleX /= 1.1; backButton.scaleY /= 1.1; backButton.isPressed = false; // Logic to return to the main menu game.showMainMenu(); } }; return self; }); // Create a MidgroundContainer class var MidgroundContainer = Container.expand(function () { var self = Container.call(this); return self; }); // Create a Player class var Player = Container.expand(function () { var self = Container.call(this); // Create a list named 'rock' and add the 'Rock0' asset to it var Rock = ['Rock0', 'Rock1', 'Rock2', 'Rock3', 'Rock4', 'Rock5', 'Rock6', 'Rock7', 'Rock8', 'Rock9', 'Rock10', 'Rock11', 'Rock12', 'Rock13', 'Rock14']; self.playerGraphics = self.attachAsset(playera[0], { anchorX: 0.5, anchorY: 0.5 }); // Set player speed self.speed = 5; // This is automatically called every game tick, if the player is attached! self.update = function () { self.y += self.speed; // Add gravity to the player if (self.y < 2732 / 2 - self.height / 2 + 50) { self.speed += 0.5; } else { self.speed = 0; self.y = 2732 / 2 - self.height / 2 + 50; // Ensure player lands correctly jump = 2; // Reset jump count when player lands } // Add rotation to the player self.rotation += 0.05; // Play or pause rockmovement sound based on rock's position if (self.y < 2732 / 2 - self.height / 2 + 50) { LK.getSound('rockmovement').stop(); // Stop sound when rock is in the air self.lastWasOnGround = false; // Track if the rock was on the ground } else { if (!self.lastWasOnGround) { LK.getSound('rockFall').play(); // Play rockfall sound when rock lands LK.setTimeout(function () { LK.getSound('rockmovement').play({ loop: true }); // Play sound when rock is on the ground after rockfall }, 100); // Delay rockmovement sound by 100ms after rockfall } else { LK.getSound('rockmovement').play({ loop: true }); // Ensure rockmovement sound loops continuously } self.lastWasOnGround = true; // Update the state to indicate rock is on the ground } }; }); // Create a RockPage class var RockPage = Container.expand(function () { var self = Container.call(this); // Add a background for the rock page var rockBackground = self.attachAsset('menuRock', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 }); // Add a title text for the rock page var titleText = new Text2('Rock Page', { size: 200, fill: 0xFFFFFF, font: "Medieval" }); titleText.anchor.set(0.5, 0.5); titleText.x = 2048 / 2; titleText.y = 200; self.addChild(titleText); // Add a button to return to the main menu var backButton = LK.getAsset('bottom', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 - 200 }); self.addChild(backButton); var backText = new Text2('Back', { size: 150, fill: 0x000000, font: "Medieval" }); backText.anchor.set(0.5, 0.5); backText.x = backButton.x; backText.y = backButton.y; self.addChild(backText); // Add interaction to the back button backButton.down = function () { backButton.isPressed = true; backButton.scaleX *= 1.1; backButton.scaleY *= 1.1; LK.getSound('butomtouch').play(); }; backButton.up = function () { if (backButton.isPressed) { backButton.scaleX /= 1.1; backButton.scaleY /= 1.1; backButton.isPressed = false; // Logic to return to the main menu game.showMainMenu(); } }; return self; }); // Create an UpgradePage class var UpgradePage = Container.expand(function () { var self = Container.call(this); // Add a background for the upgrade page var upgradeBackground = self.attachAsset('menuUpgrade', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 }); // Add a title text for the upgrade page var titleText = new Text2('Upgrade Page', { size: 200, fill: 0xFFFFFF, font: "Medieval" }); titleText.anchor.set(0.5, 0.5); titleText.x = 2048 / 2; titleText.y = 200; self.addChild(titleText); // Add a button to return to the main menu var backButton = LK.getAsset('bottom', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 - 200 }); self.addChild(backButton); var backText = new Text2('Back', { size: 150, fill: 0x000000, font: "Medieval" }); backText.anchor.set(0.5, 0.5); backText.x = backButton.x; backText.y = backButton.y; self.addChild(backText); // Add interaction to the back button backButton.down = function () { backButton.isPressed = true; backButton.scaleX *= 1.1; backButton.scaleY *= 1.1; LK.getSound('butomtouch').play(); }; backButton.up = function () { if (backButton.isPressed) { backButton.scaleX /= 1.1; backButton.scaleY /= 1.1; backButton.isPressed = false; // Logic to return to the main menu game.showMainMenu(); } }; return self; }); // Create a Text class to display the meters covered var MeterText = Text2.expand(function () { var self = Text2.call(this, '0', { size: 100, fill: 0xFFFFFF }); self.update = function () { self.setText('Meters: ' + (meters / 1000).toFixed(2) + ' km'); }; }); // Create a MoneyText class to display the amount of 'money' var MoneyText = Text2.expand(function () { var self = Text2.call(this, '0', { size: 100, fill: 0xFFFFFF }); self.update = function () { self.setText('Money: ' + money); }; }); /**** * Initialize Game ****/ // Initialize BackgroundContainer, MidgroundContainer, and ForegroundContainer var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ // Method to show the introduction page game.showIntroductionPage = function () { // Logic to display the introduction page foregroundContainer.visible = false; introductionPage.visible = true; // Hide all other game elements to ensure only the introduction page is visible backgroundContainer.visible = false; midgroundContainer.visible = false; jump = 0; // Set jump to 0 when on the introduction page }; // Initialize the introduction page var introductionPage = new IntroductionPage(); game.addChild(introductionPage); introductionPage.visible = false; // Start with the introduction page hidden // Initialize the extras page var extrasPage = new ExtrasPage(); game.addChild(extrasPage); extrasPage.visible = false; // Start with the extras page hidden // Initialize the credits page var creditsPage = new CreditsPage(); game.addChild(creditsPage); creditsPage.visible = false; // Start with the credits page hidden // Method to show the credits page game.showCreditsPage = function () { // Logic to display the credits page foregroundContainer.visible = false; creditsPage.visible = true; // Hide all other game elements to ensure only the credits page is visible backgroundContainer.visible = false; midgroundContainer.visible = false; extrasPage.visible = false; // Ensure the extras page is hidden when credits page is visible jump = 0; // Set jump to 0 when on the credits page }; // Method to show the extras page game.showExtrasPage = function () { // Logic to display the extras page foregroundContainer.visible = false; extrasPage.visible = true; // Hide all other game elements to ensure only the extras page is visible backgroundContainer.visible = false; midgroundContainer.visible = false; creditsPage.visible = false; // Ensure the credits page is hidden when extras page is visible jump = 0; // Set jump to 0 when on the extras page }; // Method to show the rock page game.showRockPage = function () { // Logic to display the rock page foregroundContainer.visible = false; rockPage.visible = true; // Hide all other game elements to ensure only the rock page is visible backgroundContainer.visible = false; midgroundContainer.visible = false; jump = 0; // Set jump to 0 when on the rock page }; // Method to show the main menu game.showMainMenu = function () { // Logic to display the main menu foregroundContainer.visible = true; upgradePage.visible = false; rockPage.visible = false; // Ensure the rock page is hidden cosmeticPage.visible = false; // Ensure the cosmetic page is hidden extrasPage.visible = false; // Ensure the extras page is hidden // Show all other game elements to ensure the main menu is fully visible backgroundContainer.visible = true; midgroundContainer.visible = true; jump = 2; // Reset jump count when on the main menu }; // Method to show the upgrade page game.showUpgradePage = function () { // Logic to display the upgrade page foregroundContainer.visible = false; upgradePage.visible = true; // Hide all other game elements to ensure only the upgrade page is visible backgroundContainer.visible = false; midgroundContainer.visible = false; jump = 0; // Set jump to 0 when on the upgrade page }; // Method to show the cosmetic page game.showCosmeticPage = function () { // Logic to display the cosmetic page foregroundContainer.visible = false; cosmeticPage.visible = true; // Hide all other game elements to ensure only the cosmetic page is visible backgroundContainer.visible = false; midgroundContainer.visible = false; jump = 0; // Set jump to 0 when on the cosmetic page }; // Initialize the upgrade page var upgradePage = new UpgradePage(); game.addChild(upgradePage); upgradePage.visible = false; // Start with the upgrade page hidden // Initialize the rock page var rockPage = new RockPage(); game.addChild(rockPage); rockPage.visible = false; // Start with the rock page hidden // Initialize the cosmetic page var cosmeticPage = new CosmeticPage(); game.addChild(cosmeticPage); cosmeticPage.visible = false; // Start with the cosmetic page hidden // Initialize BackgroundContainer, MidgroundContainer, and ForegroundContainer var backgroundContainer = new BackgroundContainer(); var midgroundContainer = new MidgroundContainer(); var foregroundContainer = new ForegroundContainer(); // Add containers to the game in the correct order game.addChild(backgroundContainer); game.addChild(midgroundContainer); game.addChild(foregroundContainer); // Add the 'bottom' asset to the foreground container var bottomAsset = LK.getAsset('bottom', { anchorX: 0.5, anchorY: 0.5, x: 550, y: 1870 }); foregroundContainer.addChild(bottomAsset); // Add interaction to increase size by 10% on press and revert on release bottomAsset.down = function () { bottomAsset.isPressed = true; bottomAsset.scaleX *= 1.1; bottomAsset.scaleY *= 1.1; LK.getSound('butomtouch').play(); }; bottomAsset.up = function () { if (bottomAsset.isPressed) { bottomAsset.scaleX /= 1.1; bottomAsset.scaleY /= 1.1; bottomAsset.isPressed = false; // Logic to switch to the Upgrade page game.showUpgradePage(); } }; // Add text to the bottom asset var bottomText = new Text2('Upgrade', { size: 150, // Very large size fill: 0x000000, // Black color font: "Medieval" // Medieval style }); bottomText.anchor.set(0.5, 0.5); // Centered on both axes bottomText.x = bottomAsset.x; bottomText.y = bottomAsset.y; foregroundContainer.addChild(bottomText); // Add the 'bottomRock' asset parallel to 'bottomUpgrade' on the right side var bottomRockAsset = LK.getAsset('bottom', { anchorX: 0.5, anchorY: 0.5, x: 1500, // Positioned parallel to bottomUpgrade on the right side y: 1870 }); foregroundContainer.addChild(bottomRockAsset); // Add interaction to increase size by 10% on press and revert on release bottomRockAsset.down = function () { bottomRockAsset.isPressed = true; bottomRockAsset.scaleX *= 1.1; bottomRockAsset.scaleY *= 1.1; LK.getSound('butomtouch').play(); }; bottomRockAsset.up = function () { if (bottomRockAsset.isPressed) { bottomRockAsset.scaleX /= 1.1; bottomRockAsset.scaleY /= 1.1; bottomRockAsset.isPressed = false; // Logic to switch to the Rock page game.showRockPage(); } }; // Add text to the bottomRock asset var bottomRockText = new Text2('Rock', { size: 150, // Very large size fill: 0x000000, // Black color font: "Medieval" // Medieval style }); bottomRockText.anchor.set(0.5, 0.5); // Centered on both axes bottomRockText.x = bottomRockAsset.x; bottomRockText.y = bottomRockAsset.y; foregroundContainer.addChild(bottomRockText); // Add the 'bottomCosmetic' asset 450 pixels below 'bottomUpgrade' var bottomCosmeticAsset = LK.getAsset('bottom', { anchorX: 0.5, anchorY: 0.5, x: 550, y: 1870 + 430 }); foregroundContainer.addChild(bottomCosmeticAsset); // Add interaction to increase size by 10% on press and revert on release bottomCosmeticAsset.down = function () { bottomCosmeticAsset.isPressed = true; bottomCosmeticAsset.scaleX *= 1.1; bottomCosmeticAsset.scaleY *= 1.1; LK.getSound('butomtouch').play(); }; bottomCosmeticAsset.up = function () { if (bottomCosmeticAsset.isPressed) { bottomCosmeticAsset.scaleX /= 1.1; bottomCosmeticAsset.scaleY /= 1.1; bottomCosmeticAsset.isPressed = false; // Logic to switch to the Cosmetic page game.showCosmeticPage(); } }; // Add text to the bottomCosmetic asset var bottomCosmeticText = new Text2('Cosmetic', { size: 150, // Very large size fill: 0x000000, // Black color font: "Medieval" // Medieval style }); bottomCosmeticText.anchor.set(0.5, 0.5); // Centered on both axes bottomCosmeticText.x = bottomCosmeticAsset.x; bottomCosmeticText.y = bottomCosmeticAsset.y; foregroundContainer.addChild(bottomCosmeticText); // Add the 'bottomExtras' asset 430 pixels below 'bottomRock' var bottomExtrasAsset = LK.getAsset('bottom', { anchorX: 0.5, anchorY: 0.5, x: 1500, y: 1870 + 430 }); foregroundContainer.addChild(bottomExtrasAsset); // Add interaction to increase size by 10% on press and revert on release bottomExtrasAsset.down = function () { bottomExtrasAsset.isPressed = true; bottomExtrasAsset.scaleX *= 1.1; bottomExtrasAsset.scaleY *= 1.1; LK.getSound('butomtouch').play(); }; bottomExtrasAsset.up = function () { if (bottomExtrasAsset.isPressed) { bottomExtrasAsset.scaleX /= 1.1; bottomExtrasAsset.scaleY /= 1.1; bottomExtrasAsset.isPressed = false; // Logic to switch to the Extras page game.showExtrasPage(); } }; // Add text to the bottomExtras asset var bottomExtrasText = new Text2('Extras', { size: 150, // Very large size fill: 0x000000, // Black color font: "Medieval" // Medieval style }); bottomExtrasText.anchor.set(0.5, 0.5); // Centered on both axes bottomExtrasText.x = bottomExtrasAsset.x; bottomExtrasText.y = bottomExtrasAsset.y; foregroundContainer.addChild(bottomExtrasText); var currentRockIndex = storage.currentRockIndex || 0; // Load saved background skin index or default to 0 var meters = storage.meters || 0; // Load saved meters or default to 0 var money = storage.money || 0; // Load saved money or default to 0 // Initialize a rock asset with a design var Player = LK.getAsset('Playera0', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 }); backgroundContainer.addChild(Rock); // Make the rock jump when the screen is touched game.down = function (x, y, obj) { if (jump > 0 && y < 2732 / 2 + 200) { LK.getSound('rockjump').play(); // Play rockjump sound when the rock jumps player.speed = -18; // Give an initial upward speed for the jump player.y -= 10; // Adjust position slightly to ensure jump effect player.update(); // Ensure the update method is called to apply the jump jump--; // Decrease jump count } }; // Create a background asset using the saved skin index var background = LK.getAsset('Background' + currentRockIndex, { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 }); // Add the background to the game backgroundContainer.addChild(background); // Create a clone of the background asset var backgroundClone = LK.getAsset('Background' + currentRockIndex, { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2 + background.width, y: 2732 / 2 }); // Add the clone to the game backgroundContainer.addChild(backgroundClone); // Create a second clone of the background asset var backgroundClone2 = LK.getAsset('Background' + currentRockIndex, { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2 + 2 * background.width, y: 2732 / 2 }); // Add the second clone to the game backgroundContainer.addChild(backgroundClone2); // Create a player instance and add it to the game var player = midgroundContainer.addChild(new Player()); // Position player more towards the center of the screen player.x = 2048 / 4; player.y = 2732 / 2 + 10; // Initialize a variable to track 'meters' // Initialize a variable to track available jumps var jump = 2; // Initialize a variable to track 'giros' // Create a MeterText instance and add it to the game var meterText = foregroundContainer.addChild(new MeterText()); // Position MeterText further down on the screen meterText.x = 0; meterText.y = 200; // Adjusted Y position for MeterText // Create a GirosText instance and add it to the game var moneyText = foregroundContainer.addChild(new MoneyText()); // Position MoneyText below the MeterText further down on the screen moneyText.x = 0; moneyText.y = meterText.y + meterText.height + 50; // Adjusted Y position for MoneyText // Initialize a variable to track 'money' // Create a list named 'rock' and add all the 'rock<number>' assets to it // Ensure rock array is initialized with all rock assets var Rock = ['Rock0', 'Rock1', 'Rock2', 'Rock3', 'Rock4', 'Rock5', 'Rock6', 'Rock7', 'Rock8', 'Rock9']; // Create a list named 'SkinSelect' var SkinSelect = []; var assets = LK.assets; if (assets) { for (var i = 0; i < assets.length; i++) { if (assets[i].id.startsWith('Playera')) { playera.push(assets[i].id); } } playera.sort(function (a, b) { return parseInt(a.replace('Playera', '')) - parseInt(b.replace('Playera', '')); }); } game.update = function () { background.x -= 5; backgroundClone.x -= 5; backgroundClone2.x -= 5; if (background.x + background.width < 0) { background.x = backgroundClone2.x + background.width; } if (backgroundClone.x + backgroundClone.width < 0) { backgroundClone.x = background.x + background.width; } if (backgroundClone2.x + backgroundClone2.width < 0) { backgroundClone2.x = backgroundClone.x + backgroundClone.width; } // Increment 'meters' every second if (LK.ticks % 60 == 0) { meters += 1; // Log every time 1000 meters are advanced if (meters % 1000 === 0) { console.log('Advanced 1000 meters'); // Play the 'HoundreMeters' sound every 1000 meters LK.getSound('HoundreMeters').play(); // money += 25; // Removed money increment when meters increase by 250 // Change background sprite currentRockIndex = (currentRockIndex + 1) % 8; // Cycle through 0 to 7 background.removeChild(background.playerGraphics); background.playerGraphics = background.attachAsset('Background' + currentRockIndex, { anchorX: 0.5, anchorY: 0.5 }); backgroundClone.removeChild(backgroundClone.playerGraphics); backgroundClone.playerGraphics = backgroundClone.attachAsset('Background' + currentRockIndex, { anchorX: 0.5, anchorY: 0.5 }); backgroundClone2.removeChild(backgroundClone2.playerGraphics); backgroundClone2.playerGraphics = backgroundClone2.attachAsset('Background' + currentRockIndex, { anchorX: 0.5, anchorY: 0.5 }); } // Play the 'HoundreMeters' sound at 250 meters if (meters === 250) { LK.getSound('HoundreMeters').play(); } } // Save progress every 1 second if (LK.ticks % 60 == 0) { storage.meters = meters; storage.money = money; storage.currentRockIndex = currentRockIndex; // Save current background skin index } };
/****
* Plugins
****/
var storage = LK.import("@upit/storage.v1", {
meters: 0,
money: 0,
spin: 0
});
/****
* Classes
****/
// Create a BackgroundContainer class
var BackgroundContainer = Container.expand(function () {
var self = Container.call(this);
return self;
});
// Create a CosmeticPage class
var CosmeticPage = Container.expand(function () {
var self = Container.call(this);
// Add a background for the cosmetic page
var cosmeticBackground = self.attachAsset('menuCosmetic', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2
});
// Add a title text for the cosmetic page
var titleText = new Text2('Cosmetic Page', {
size: 200,
fill: 0xFFFFFF,
font: "Medieval"
});
titleText.anchor.set(0.5, 0.5);
titleText.x = 2048 / 2;
titleText.y = 200;
self.addChild(titleText);
// Add a button to return to the main menu
var backButton = LK.getAsset('bottom', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 - 200
});
self.addChild(backButton);
var backText = new Text2('Back', {
size: 150,
fill: 0x000000,
font: "Medieval"
});
backText.anchor.set(0.5, 0.5);
backText.x = backButton.x;
backText.y = backButton.y;
self.addChild(backText);
// Add interaction to the back button
backButton.down = function () {
backButton.isPressed = true;
backButton.scaleX *= 1.1;
backButton.scaleY *= 1.1;
LK.getSound('butomtouch').play();
};
backButton.up = function () {
if (backButton.isPressed) {
backButton.scaleX /= 1.1;
backButton.scaleY /= 1.1;
backButton.isPressed = false;
// Logic to return to the main menu
game.showMainMenu();
}
};
// Add a cosmetic changer for rocks
var rockIndex = 0; // Start with the first rock
var Rock = ['Rock0', 'Rock1', 'Rock2', 'Rock3', 'Rock4', 'Rock5', 'Rock6', 'Rock7', 'Rock8', 'Rock9', 'Rock10', 'Rock11', 'Rock12', 'Rock13', 'Rock14'];
var cosmeticDisplay = self.attachAsset('Playera' + rockIndex, {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2 - 600 //{X} // Moved 100 pixels lower to avoid collision with bottom
});
self.addChild(cosmeticDisplay);
// Add left arrow button to change the rock cosmetic
var leftArrowButton = LK.getAsset('arrowleft', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2 - 450,
y: 2732 / 2 - 300
});
self.addChild(leftArrowButton);
leftArrowButton.down = function () {
leftArrowButton.isPressed = true;
leftArrowButton.scaleX *= 1.1;
leftArrowButton.scaleY *= 1.1;
LK.getSound('butomtouch').play();
};
leftArrowButton.up = function () {
if (leftArrowButton.isPressed) {
leftArrowButton.scaleX /= 1.1;
leftArrowButton.scaleY /= 1.1;
leftArrowButton.isPressed = false;
// Change the rock cosmetic to the previous one
rockIndex = (rockIndex - 1 + 15) % 15; // Assuming there are 15 rock assets
self.removeChild(cosmeticDisplay);
cosmeticDisplay = self.attachAsset('Rock' + rockIndex, {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2 - 600
});
self.addChild(cosmeticDisplay);
}
};
// Add a 'Select' button between the left and right arrow buttons
var selectButton = LK.getAsset('bottom', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2 - 300
});
self.addChild(selectButton);
var selectText = new Text2('Select', {
size: 150,
fill: 0x000000,
font: "Medieval"
});
selectText.anchor.set(0.5, 0.5);
selectText.x = selectButton.x;
selectText.y = selectButton.y;
self.addChild(selectText);
// Add interaction to the select button
selectButton.down = function () {
selectButton.isPressed = true;
selectButton.scaleX *= 1.1;
selectButton.scaleY *= 1.1;
LK.getSound('butomtouch').play();
};
selectButton.up = function () {
if (selectButton.isPressed) {
selectButton.scaleX /= 1.1;
selectButton.scaleY /= 1.1;
selectButton.isPressed = false;
// Change the rock to the selected cosmetic
self.removeChild(cosmeticDisplay);
rock = 'Rock' + rockIndex; // Update the current rock to the selected cosmetic
}
};
// Add right arrow button to change the rock cosmetic
var rightArrowButton = LK.getAsset('arrowright', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2 + 450,
y: 2732 / 2 - 300
});
self.addChild(rightArrowButton);
rightArrowButton.down = function () {
rightArrowButton.isPressed = true;
rightArrowButton.scaleX *= 1.1;
rightArrowButton.scaleY *= 1.1;
LK.getSound('butomtouch').play();
};
rightArrowButton.up = function () {
if (rightArrowButton.isPressed) {
rightArrowButton.scaleX /= 1.1;
rightArrowButton.scaleY /= 1.1;
rightArrowButton.isPressed = false;
// Change the rock cosmetic to the next one
rockIndex = (rockIndex + 1) % 15; // Assuming there are 15 rock assets
self.removeChild(cosmeticDisplay);
cosmeticDisplay = self.attachAsset('Rock' + rockIndex, {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2 - 600
});
self.addChild(cosmeticDisplay);
}
};
return self;
});
// Create a CreditsPage class
var CreditsPage = Container.expand(function () {
var self = Container.call(this);
// Add the Slimy asset to the credits page
var slimyAsset = self.attachAsset('Slimy', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2
});
// Add interaction to the Slimy asset
slimyAsset.down = function () {
// Logic to return to the extras page
game.showExtrasPage();
};
return self;
});
// Create an ExtrasPage class
var ExtrasPage = Container.expand(function () {
var self = Container.call(this);
// Add a background for the extras page
var extrasBackground = self.attachAsset('menuExtras', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2
});
// Add a title text for the extras page
var titleText = new Text2('Extras Page', {
size: 200,
fill: 0xFFFFFF,
font: "Medieval"
});
titleText.anchor.set(0.5, 0.5);
titleText.x = 2048 / 2;
titleText.y = 200;
self.addChild(titleText);
// Add a button to return to the main menu
var backButton = LK.getAsset('bottom', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 - 200
});
self.addChild(backButton);
var backText = new Text2('Back', {
size: 150,
fill: 0x000000,
font: "Medieval"
});
backText.anchor.set(0.5, 0.5);
backText.x = backButton.x;
backText.y = backButton.y;
self.addChild(backText);
// Add interaction to the back button
backButton.down = function () {
backButton.isPressed = true;
backButton.scaleX *= 1.1;
backButton.scaleY *= 1.1;
LK.getSound('butomtouch').play();
};
backButton.up = function () {
if (backButton.isPressed) {
backButton.scaleX /= 1.1;
backButton.scaleY /= 1.1;
backButton.isPressed = false;
// Logic to return to the main menu
game.showMainMenu();
}
};
// Add a reset progress button
var resetButton = LK.getAsset('bottom', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2 + 200
});
self.addChild(resetButton);
var resetText = new Text2('Reset Progress', {
size: 100,
fill: 0xFF0000,
font: "Medieval"
});
resetText.anchor.set(0.5, 0.5);
resetText.x = resetButton.x;
resetText.y = resetButton.y;
self.addChild(resetText);
// Add interaction to the reset button
resetButton.down = function () {
resetButton.isPressed = true;
resetButton.scaleX *= 1.1;
resetButton.scaleY *= 1.1;
LK.getSound('butomtouch').play();
};
resetButton.up = function () {
if (resetButton.isPressed) {
resetButton.scaleX /= 1.1;
resetButton.scaleY /= 1.1;
resetButton.isPressed = false;
// Custom confirmation dialog
var confirmReset = new Text2('Are you sure you want to reset your progress?', {
size: 100,
fill: 0xFFFFFF,
font: "Medieval"
});
confirmReset.anchor.set(0.5, 0.5);
confirmReset.x = 2048 / 2;
confirmReset.y = 2732 / 2;
self.addChild(confirmReset);
var yesButton = LK.getAsset('bottom', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2 - 200,
y: 2732 / 2 + 150,
scaleX: 0.6,
// Further decrease size
scaleY: 0.6 // Further decrease size
});
self.addChild(yesButton);
var noButton = LK.getAsset('bottom', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2 + 200,
y: 2732 / 2 + 150,
scaleX: 0.6,
// Further decrease size
scaleY: 0.6 // Further decrease size
});
self.addChild(noButton);
var yesText = new Text2('Yes', {
size: 100,
fill: 0x000000,
font: "Medieval"
});
yesText.anchor.set(0.5, 0.5);
yesText.x = yesButton.x;
yesText.y = yesButton.y;
self.addChild(yesText);
var noText = new Text2('No', {
size: 100,
fill: 0x000000,
font: "Medieval"
});
noText.anchor.set(0.5, 0.5);
noText.x = noButton.x;
noText.y = noButton.y;
self.addChild(noText);
yesButton.down = function () {
yesButton.isPressed = true;
yesButton.scaleX *= 1.1;
yesButton.scaleY *= 1.1;
LK.getSound('butomtouch').play();
};
yesButton.up = function () {
if (yesButton.isPressed) {
yesButton.scaleX /= 1.1;
yesButton.scaleY /= 1.1;
yesButton.isPressed = false;
// Logic to reset progress
storage.meters = 0;
storage.money = 0;
meters = 0;
money = 0;
currentRockIndex = 0;
console.log("Progress reset");
background.removeChild(background.playerGraphics);
background.playerGraphics = background.attachAsset('Background0', {
anchorX: 0.5,
anchorY: 0.5
});
backgroundClone.removeChild(backgroundClone.playerGraphics);
backgroundClone.playerGraphics = backgroundClone.attachAsset('Background0', {
anchorX: 0.5,
anchorY: 0.5
});
backgroundClone2.removeChild(backgroundClone2.playerGraphics);
backgroundClone2.playerGraphics = backgroundClone2.attachAsset('Background0', {
anchorX: 0.5,
anchorY: 0.5
});
self.removeChild(confirmReset);
self.removeChild(yesButton);
self.removeChild(noButton);
self.removeChild(yesText);
self.removeChild(noText);
// Wait 1 second and then end the game
LK.setTimeout(function () {
LK.showGameOver();
}, 1000);
}
};
noButton.down = function () {
noButton.isPressed = true;
noButton.scaleX *= 1.1;
noButton.scaleY *= 1.1;
LK.getSound('butomtouch').play();
};
noButton.up = function () {
if (noButton.isPressed) {
noButton.scaleX /= 1.1;
noButton.scaleY /= 1.1;
noButton.isPressed = false;
console.log("Reset canceled");
self.removeChild(confirmReset);
self.removeChild(yesButton);
self.removeChild(noButton);
self.removeChild(yesText);
self.removeChild(noText);
}
};
}
};
// Add a credits button
var creditsButton = LK.getAsset('bottom', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2 + 550
});
self.addChild(creditsButton);
var creditsText = new Text2('Credits', {
size: 150,
fill: 0x000000,
font: "Medieval"
});
creditsText.anchor.set(0.5, 0.5);
creditsText.x = creditsButton.x;
creditsText.y = creditsButton.y;
self.addChild(creditsText);
// Add interaction to the credits button
creditsButton.down = function () {
creditsButton.isPressed = true;
creditsButton.scaleX *= 1.1;
creditsButton.scaleY *= 1.1;
LK.getSound('butomtouch').play();
};
creditsButton.up = function () {
if (creditsButton.isPressed) {
creditsButton.scaleX /= 1.1;
creditsButton.scaleY /= 1.1;
creditsButton.isPressed = false;
// Logic to show credits
game.showCreditsPage();
}
};
return self;
});
// Create a ForegroundContainer class
var ForegroundContainer = Container.expand(function () {
var self = Container.call(this);
return self;
});
// Create an IntroductionPage class
var IntroductionPage = Container.expand(function () {
var self = Container.call(this);
// Add a background for the introduction page
var introductionBackground = self.attachAsset('Introduction', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2
});
// Add a title text for the introduction page
var titleText = new Text2('Introduction Page', {
size: 200,
fill: 0xFFFFFF,
font: "Medieval"
});
titleText.anchor.set(0.5, 0.5);
titleText.x = 2048 / 2;
titleText.y = 200;
self.addChild(titleText);
// Add a button to return to the main menu
var backButton = LK.getAsset('bottom', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 - 200
});
self.addChild(backButton);
var backText = new Text2('Back', {
size: 150,
fill: 0x000000,
font: "Medieval"
});
backText.anchor.set(0.5, 0.5);
backText.x = backButton.x;
backText.y = backButton.y;
self.addChild(backText);
// Add interaction to the back button
backButton.down = function () {
backButton.isPressed = true;
backButton.scaleX *= 1.1;
backButton.scaleY *= 1.1;
LK.getSound('butomtouch').play();
};
backButton.up = function () {
if (backButton.isPressed) {
backButton.scaleX /= 1.1;
backButton.scaleY /= 1.1;
backButton.isPressed = false;
// Logic to return to the main menu
game.showMainMenu();
}
};
return self;
});
// Create a MidgroundContainer class
var MidgroundContainer = Container.expand(function () {
var self = Container.call(this);
return self;
});
// Create a Player class
var Player = Container.expand(function () {
var self = Container.call(this);
// Create a list named 'rock' and add the 'Rock0' asset to it
var Rock = ['Rock0', 'Rock1', 'Rock2', 'Rock3', 'Rock4', 'Rock5', 'Rock6', 'Rock7', 'Rock8', 'Rock9', 'Rock10', 'Rock11', 'Rock12', 'Rock13', 'Rock14'];
self.playerGraphics = self.attachAsset(playera[0], {
anchorX: 0.5,
anchorY: 0.5
});
// Set player speed
self.speed = 5;
// This is automatically called every game tick, if the player is attached!
self.update = function () {
self.y += self.speed;
// Add gravity to the player
if (self.y < 2732 / 2 - self.height / 2 + 50) {
self.speed += 0.5;
} else {
self.speed = 0;
self.y = 2732 / 2 - self.height / 2 + 50; // Ensure player lands correctly
jump = 2; // Reset jump count when player lands
}
// Add rotation to the player
self.rotation += 0.05;
// Play or pause rockmovement sound based on rock's position
if (self.y < 2732 / 2 - self.height / 2 + 50) {
LK.getSound('rockmovement').stop(); // Stop sound when rock is in the air
self.lastWasOnGround = false; // Track if the rock was on the ground
} else {
if (!self.lastWasOnGround) {
LK.getSound('rockFall').play(); // Play rockfall sound when rock lands
LK.setTimeout(function () {
LK.getSound('rockmovement').play({
loop: true
}); // Play sound when rock is on the ground after rockfall
}, 100); // Delay rockmovement sound by 100ms after rockfall
} else {
LK.getSound('rockmovement').play({
loop: true
}); // Ensure rockmovement sound loops continuously
}
self.lastWasOnGround = true; // Update the state to indicate rock is on the ground
}
};
});
// Create a RockPage class
var RockPage = Container.expand(function () {
var self = Container.call(this);
// Add a background for the rock page
var rockBackground = self.attachAsset('menuRock', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2
});
// Add a title text for the rock page
var titleText = new Text2('Rock Page', {
size: 200,
fill: 0xFFFFFF,
font: "Medieval"
});
titleText.anchor.set(0.5, 0.5);
titleText.x = 2048 / 2;
titleText.y = 200;
self.addChild(titleText);
// Add a button to return to the main menu
var backButton = LK.getAsset('bottom', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 - 200
});
self.addChild(backButton);
var backText = new Text2('Back', {
size: 150,
fill: 0x000000,
font: "Medieval"
});
backText.anchor.set(0.5, 0.5);
backText.x = backButton.x;
backText.y = backButton.y;
self.addChild(backText);
// Add interaction to the back button
backButton.down = function () {
backButton.isPressed = true;
backButton.scaleX *= 1.1;
backButton.scaleY *= 1.1;
LK.getSound('butomtouch').play();
};
backButton.up = function () {
if (backButton.isPressed) {
backButton.scaleX /= 1.1;
backButton.scaleY /= 1.1;
backButton.isPressed = false;
// Logic to return to the main menu
game.showMainMenu();
}
};
return self;
});
// Create an UpgradePage class
var UpgradePage = Container.expand(function () {
var self = Container.call(this);
// Add a background for the upgrade page
var upgradeBackground = self.attachAsset('menuUpgrade', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2
});
// Add a title text for the upgrade page
var titleText = new Text2('Upgrade Page', {
size: 200,
fill: 0xFFFFFF,
font: "Medieval"
});
titleText.anchor.set(0.5, 0.5);
titleText.x = 2048 / 2;
titleText.y = 200;
self.addChild(titleText);
// Add a button to return to the main menu
var backButton = LK.getAsset('bottom', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 - 200
});
self.addChild(backButton);
var backText = new Text2('Back', {
size: 150,
fill: 0x000000,
font: "Medieval"
});
backText.anchor.set(0.5, 0.5);
backText.x = backButton.x;
backText.y = backButton.y;
self.addChild(backText);
// Add interaction to the back button
backButton.down = function () {
backButton.isPressed = true;
backButton.scaleX *= 1.1;
backButton.scaleY *= 1.1;
LK.getSound('butomtouch').play();
};
backButton.up = function () {
if (backButton.isPressed) {
backButton.scaleX /= 1.1;
backButton.scaleY /= 1.1;
backButton.isPressed = false;
// Logic to return to the main menu
game.showMainMenu();
}
};
return self;
});
// Create a Text class to display the meters covered
var MeterText = Text2.expand(function () {
var self = Text2.call(this, '0', {
size: 100,
fill: 0xFFFFFF
});
self.update = function () {
self.setText('Meters: ' + (meters / 1000).toFixed(2) + ' km');
};
});
// Create a MoneyText class to display the amount of 'money'
var MoneyText = Text2.expand(function () {
var self = Text2.call(this, '0', {
size: 100,
fill: 0xFFFFFF
});
self.update = function () {
self.setText('Money: ' + money);
};
});
/****
* Initialize Game
****/
// Initialize BackgroundContainer, MidgroundContainer, and ForegroundContainer
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
// Method to show the introduction page
game.showIntroductionPage = function () {
// Logic to display the introduction page
foregroundContainer.visible = false;
introductionPage.visible = true;
// Hide all other game elements to ensure only the introduction page is visible
backgroundContainer.visible = false;
midgroundContainer.visible = false;
jump = 0; // Set jump to 0 when on the introduction page
};
// Initialize the introduction page
var introductionPage = new IntroductionPage();
game.addChild(introductionPage);
introductionPage.visible = false; // Start with the introduction page hidden
// Initialize the extras page
var extrasPage = new ExtrasPage();
game.addChild(extrasPage);
extrasPage.visible = false; // Start with the extras page hidden
// Initialize the credits page
var creditsPage = new CreditsPage();
game.addChild(creditsPage);
creditsPage.visible = false; // Start with the credits page hidden
// Method to show the credits page
game.showCreditsPage = function () {
// Logic to display the credits page
foregroundContainer.visible = false;
creditsPage.visible = true;
// Hide all other game elements to ensure only the credits page is visible
backgroundContainer.visible = false;
midgroundContainer.visible = false;
extrasPage.visible = false; // Ensure the extras page is hidden when credits page is visible
jump = 0; // Set jump to 0 when on the credits page
};
// Method to show the extras page
game.showExtrasPage = function () {
// Logic to display the extras page
foregroundContainer.visible = false;
extrasPage.visible = true;
// Hide all other game elements to ensure only the extras page is visible
backgroundContainer.visible = false;
midgroundContainer.visible = false;
creditsPage.visible = false; // Ensure the credits page is hidden when extras page is visible
jump = 0; // Set jump to 0 when on the extras page
};
// Method to show the rock page
game.showRockPage = function () {
// Logic to display the rock page
foregroundContainer.visible = false;
rockPage.visible = true;
// Hide all other game elements to ensure only the rock page is visible
backgroundContainer.visible = false;
midgroundContainer.visible = false;
jump = 0; // Set jump to 0 when on the rock page
};
// Method to show the main menu
game.showMainMenu = function () {
// Logic to display the main menu
foregroundContainer.visible = true;
upgradePage.visible = false;
rockPage.visible = false; // Ensure the rock page is hidden
cosmeticPage.visible = false; // Ensure the cosmetic page is hidden
extrasPage.visible = false; // Ensure the extras page is hidden
// Show all other game elements to ensure the main menu is fully visible
backgroundContainer.visible = true;
midgroundContainer.visible = true;
jump = 2; // Reset jump count when on the main menu
};
// Method to show the upgrade page
game.showUpgradePage = function () {
// Logic to display the upgrade page
foregroundContainer.visible = false;
upgradePage.visible = true;
// Hide all other game elements to ensure only the upgrade page is visible
backgroundContainer.visible = false;
midgroundContainer.visible = false;
jump = 0; // Set jump to 0 when on the upgrade page
};
// Method to show the cosmetic page
game.showCosmeticPage = function () {
// Logic to display the cosmetic page
foregroundContainer.visible = false;
cosmeticPage.visible = true;
// Hide all other game elements to ensure only the cosmetic page is visible
backgroundContainer.visible = false;
midgroundContainer.visible = false;
jump = 0; // Set jump to 0 when on the cosmetic page
};
// Initialize the upgrade page
var upgradePage = new UpgradePage();
game.addChild(upgradePage);
upgradePage.visible = false; // Start with the upgrade page hidden
// Initialize the rock page
var rockPage = new RockPage();
game.addChild(rockPage);
rockPage.visible = false; // Start with the rock page hidden
// Initialize the cosmetic page
var cosmeticPage = new CosmeticPage();
game.addChild(cosmeticPage);
cosmeticPage.visible = false; // Start with the cosmetic page hidden
// Initialize BackgroundContainer, MidgroundContainer, and ForegroundContainer
var backgroundContainer = new BackgroundContainer();
var midgroundContainer = new MidgroundContainer();
var foregroundContainer = new ForegroundContainer();
// Add containers to the game in the correct order
game.addChild(backgroundContainer);
game.addChild(midgroundContainer);
game.addChild(foregroundContainer);
// Add the 'bottom' asset to the foreground container
var bottomAsset = LK.getAsset('bottom', {
anchorX: 0.5,
anchorY: 0.5,
x: 550,
y: 1870
});
foregroundContainer.addChild(bottomAsset);
// Add interaction to increase size by 10% on press and revert on release
bottomAsset.down = function () {
bottomAsset.isPressed = true;
bottomAsset.scaleX *= 1.1;
bottomAsset.scaleY *= 1.1;
LK.getSound('butomtouch').play();
};
bottomAsset.up = function () {
if (bottomAsset.isPressed) {
bottomAsset.scaleX /= 1.1;
bottomAsset.scaleY /= 1.1;
bottomAsset.isPressed = false;
// Logic to switch to the Upgrade page
game.showUpgradePage();
}
};
// Add text to the bottom asset
var bottomText = new Text2('Upgrade', {
size: 150,
// Very large size
fill: 0x000000,
// Black color
font: "Medieval" // Medieval style
});
bottomText.anchor.set(0.5, 0.5); // Centered on both axes
bottomText.x = bottomAsset.x;
bottomText.y = bottomAsset.y;
foregroundContainer.addChild(bottomText);
// Add the 'bottomRock' asset parallel to 'bottomUpgrade' on the right side
var bottomRockAsset = LK.getAsset('bottom', {
anchorX: 0.5,
anchorY: 0.5,
x: 1500,
// Positioned parallel to bottomUpgrade on the right side
y: 1870
});
foregroundContainer.addChild(bottomRockAsset);
// Add interaction to increase size by 10% on press and revert on release
bottomRockAsset.down = function () {
bottomRockAsset.isPressed = true;
bottomRockAsset.scaleX *= 1.1;
bottomRockAsset.scaleY *= 1.1;
LK.getSound('butomtouch').play();
};
bottomRockAsset.up = function () {
if (bottomRockAsset.isPressed) {
bottomRockAsset.scaleX /= 1.1;
bottomRockAsset.scaleY /= 1.1;
bottomRockAsset.isPressed = false;
// Logic to switch to the Rock page
game.showRockPage();
}
};
// Add text to the bottomRock asset
var bottomRockText = new Text2('Rock', {
size: 150,
// Very large size
fill: 0x000000,
// Black color
font: "Medieval" // Medieval style
});
bottomRockText.anchor.set(0.5, 0.5); // Centered on both axes
bottomRockText.x = bottomRockAsset.x;
bottomRockText.y = bottomRockAsset.y;
foregroundContainer.addChild(bottomRockText);
// Add the 'bottomCosmetic' asset 450 pixels below 'bottomUpgrade'
var bottomCosmeticAsset = LK.getAsset('bottom', {
anchorX: 0.5,
anchorY: 0.5,
x: 550,
y: 1870 + 430
});
foregroundContainer.addChild(bottomCosmeticAsset);
// Add interaction to increase size by 10% on press and revert on release
bottomCosmeticAsset.down = function () {
bottomCosmeticAsset.isPressed = true;
bottomCosmeticAsset.scaleX *= 1.1;
bottomCosmeticAsset.scaleY *= 1.1;
LK.getSound('butomtouch').play();
};
bottomCosmeticAsset.up = function () {
if (bottomCosmeticAsset.isPressed) {
bottomCosmeticAsset.scaleX /= 1.1;
bottomCosmeticAsset.scaleY /= 1.1;
bottomCosmeticAsset.isPressed = false;
// Logic to switch to the Cosmetic page
game.showCosmeticPage();
}
};
// Add text to the bottomCosmetic asset
var bottomCosmeticText = new Text2('Cosmetic', {
size: 150,
// Very large size
fill: 0x000000,
// Black color
font: "Medieval" // Medieval style
});
bottomCosmeticText.anchor.set(0.5, 0.5); // Centered on both axes
bottomCosmeticText.x = bottomCosmeticAsset.x;
bottomCosmeticText.y = bottomCosmeticAsset.y;
foregroundContainer.addChild(bottomCosmeticText);
// Add the 'bottomExtras' asset 430 pixels below 'bottomRock'
var bottomExtrasAsset = LK.getAsset('bottom', {
anchorX: 0.5,
anchorY: 0.5,
x: 1500,
y: 1870 + 430
});
foregroundContainer.addChild(bottomExtrasAsset);
// Add interaction to increase size by 10% on press and revert on release
bottomExtrasAsset.down = function () {
bottomExtrasAsset.isPressed = true;
bottomExtrasAsset.scaleX *= 1.1;
bottomExtrasAsset.scaleY *= 1.1;
LK.getSound('butomtouch').play();
};
bottomExtrasAsset.up = function () {
if (bottomExtrasAsset.isPressed) {
bottomExtrasAsset.scaleX /= 1.1;
bottomExtrasAsset.scaleY /= 1.1;
bottomExtrasAsset.isPressed = false;
// Logic to switch to the Extras page
game.showExtrasPage();
}
};
// Add text to the bottomExtras asset
var bottomExtrasText = new Text2('Extras', {
size: 150,
// Very large size
fill: 0x000000,
// Black color
font: "Medieval" // Medieval style
});
bottomExtrasText.anchor.set(0.5, 0.5); // Centered on both axes
bottomExtrasText.x = bottomExtrasAsset.x;
bottomExtrasText.y = bottomExtrasAsset.y;
foregroundContainer.addChild(bottomExtrasText);
var currentRockIndex = storage.currentRockIndex || 0; // Load saved background skin index or default to 0
var meters = storage.meters || 0; // Load saved meters or default to 0
var money = storage.money || 0; // Load saved money or default to 0
// Initialize a rock asset with a design
var Player = LK.getAsset('Playera0', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2
});
backgroundContainer.addChild(Rock);
// Make the rock jump when the screen is touched
game.down = function (x, y, obj) {
if (jump > 0 && y < 2732 / 2 + 200) {
LK.getSound('rockjump').play(); // Play rockjump sound when the rock jumps
player.speed = -18; // Give an initial upward speed for the jump
player.y -= 10; // Adjust position slightly to ensure jump effect
player.update(); // Ensure the update method is called to apply the jump
jump--; // Decrease jump count
}
};
// Create a background asset using the saved skin index
var background = LK.getAsset('Background' + currentRockIndex, {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2
});
// Add the background to the game
backgroundContainer.addChild(background);
// Create a clone of the background asset
var backgroundClone = LK.getAsset('Background' + currentRockIndex, {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2 + background.width,
y: 2732 / 2
});
// Add the clone to the game
backgroundContainer.addChild(backgroundClone);
// Create a second clone of the background asset
var backgroundClone2 = LK.getAsset('Background' + currentRockIndex, {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2 + 2 * background.width,
y: 2732 / 2
});
// Add the second clone to the game
backgroundContainer.addChild(backgroundClone2);
// Create a player instance and add it to the game
var player = midgroundContainer.addChild(new Player());
// Position player more towards the center of the screen
player.x = 2048 / 4;
player.y = 2732 / 2 + 10;
// Initialize a variable to track 'meters'
// Initialize a variable to track available jumps
var jump = 2;
// Initialize a variable to track 'giros'
// Create a MeterText instance and add it to the game
var meterText = foregroundContainer.addChild(new MeterText());
// Position MeterText further down on the screen
meterText.x = 0;
meterText.y = 200; // Adjusted Y position for MeterText
// Create a GirosText instance and add it to the game
var moneyText = foregroundContainer.addChild(new MoneyText());
// Position MoneyText below the MeterText further down on the screen
moneyText.x = 0;
moneyText.y = meterText.y + meterText.height + 50; // Adjusted Y position for MoneyText
// Initialize a variable to track 'money'
// Create a list named 'rock' and add all the 'rock<number>' assets to it
// Ensure rock array is initialized with all rock assets
var Rock = ['Rock0', 'Rock1', 'Rock2', 'Rock3', 'Rock4', 'Rock5', 'Rock6', 'Rock7', 'Rock8', 'Rock9'];
// Create a list named 'SkinSelect'
var SkinSelect = [];
var assets = LK.assets;
if (assets) {
for (var i = 0; i < assets.length; i++) {
if (assets[i].id.startsWith('Playera')) {
playera.push(assets[i].id);
}
}
playera.sort(function (a, b) {
return parseInt(a.replace('Playera', '')) - parseInt(b.replace('Playera', ''));
});
}
game.update = function () {
background.x -= 5;
backgroundClone.x -= 5;
backgroundClone2.x -= 5;
if (background.x + background.width < 0) {
background.x = backgroundClone2.x + background.width;
}
if (backgroundClone.x + backgroundClone.width < 0) {
backgroundClone.x = background.x + background.width;
}
if (backgroundClone2.x + backgroundClone2.width < 0) {
backgroundClone2.x = backgroundClone.x + backgroundClone.width;
}
// Increment 'meters' every second
if (LK.ticks % 60 == 0) {
meters += 1;
// Log every time 1000 meters are advanced
if (meters % 1000 === 0) {
console.log('Advanced 1000 meters');
// Play the 'HoundreMeters' sound every 1000 meters
LK.getSound('HoundreMeters').play();
// money += 25; // Removed money increment when meters increase by 250
// Change background sprite
currentRockIndex = (currentRockIndex + 1) % 8; // Cycle through 0 to 7
background.removeChild(background.playerGraphics);
background.playerGraphics = background.attachAsset('Background' + currentRockIndex, {
anchorX: 0.5,
anchorY: 0.5
});
backgroundClone.removeChild(backgroundClone.playerGraphics);
backgroundClone.playerGraphics = backgroundClone.attachAsset('Background' + currentRockIndex, {
anchorX: 0.5,
anchorY: 0.5
});
backgroundClone2.removeChild(backgroundClone2.playerGraphics);
backgroundClone2.playerGraphics = backgroundClone2.attachAsset('Background' + currentRockIndex, {
anchorX: 0.5,
anchorY: 0.5
});
}
// Play the 'HoundreMeters' sound at 250 meters
if (meters === 250) {
LK.getSound('HoundreMeters').play();
}
}
// Save progress every 1 second
if (LK.ticks % 60 == 0) {
storage.meters = meters;
storage.money = money;
storage.currentRockIndex = currentRockIndex; // Save current background skin index
}
};
que no contenga sombras ni luces
una cabeza de moai redonda. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Una esfera de hierro. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Una esfera de oro. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
una piedra redonda musgosa. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
la bandera de argentina redonda. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
moneda de cobre. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
moneda de silver. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
moneda de gold. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
diamante Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Una rueda de carretilla medieval. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
pelota de basquetbal modelo Molten. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
pelota de futbol hecha de hielo. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Bola disco. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Una bola de voley de planta. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Una bola de pinchos. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Una bola de lana. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Agrega una esfera que dentro contenga un cielo. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Una esfera con la via láctea. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
proporción 1000-2000, marios más robustos y sin tanto relieve
Un papel medieval con una enorme flecha hacia la izquierda de pintura en medio. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Esfera del dragon. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Esfera demoniaca. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Esfera de hada. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
una manzana redonda. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Un capiraba redondo como una pelota. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Un armadillo hecho bolita. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Una estrella redondita. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Mejorar el diseños de lás casas para que sean más medievales y aumentar su calidad, más arboles y mejorar la calidad del cesped