/**** * Classes ****/ var BlueBar = Container.expand(function () { var self = Container.call(this); var blueBarGraphics = self.attachAsset('blueBar', { anchorX: 0.5, anchorY: 0.5 }); self.transformationPercentage = 0; self.update = function () { // Update the color based on transformation percentage var grayValue = Math.floor(0xFF * self.transformationPercentage / 100); blueBarGraphics.tint = grayValue << 16 | grayValue << 8 | grayValue; }; self.increaseTransformation = function (amount) { self.transformationPercentage = Math.min(100, self.transformationPercentage + amount); }; }); //<Assets used in the game will automatically appear here> // Create the Character class var Character = Container.expand(function () { var self = Container.call(this); // Attach the character asset var playerAssets = ['player_1', 'Player_2', 'Player_3', 'Player_4']; var currentAssetIndex = 0; var characterGraphics = self.attachAsset(playerAssets[currentAssetIndex], { anchorX: 0.85, anchorY: 0.5, scaleX: 5, scaleY: 5, frameRate: 10 // Set the frame rate for the sprite animation }); // Set the character's initial position self.x = 945; self.y = 2732 / 2 - characterGraphics.height / 2; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ function missingFunction() { console.log("This is the missing function."); } function openShopPanel() { console.log("Shop panel opened!"); var shopPanel = new Container(); // Initialize shopPanel before usage // Create a background for the panel var panelBackground = LK.getAsset('Bg', { anchorX: 0.5, anchorY: 0.5, scaleX: 2.0, scaleY: 2.0 }); shopPanel.addChild(panelBackground); // Initialize the close button image var closeButton = LK.getAsset('close_tab_button', { anchorX: 0.5, anchorY: 0.5, scaleX: 1.5, scaleY: 1.5 }); // Position the close button at the top right of the panel closeButton.x = panelBackground.width / 2 - closeButton.width / 2; closeButton.y = -panelBackground.height / 2 + closeButton.height / 2; // Add the close button to the shop panel shopPanel.addChild(closeButton); // Add logic to display shop items and handle purchases here // Initialize the game pass button image var gamePassButton = LK.getAsset('gamepass', { anchorX: 0.5, anchorY: 0.5, scaleX: 1.5, scaleY: 1.5 }); // Position the game pass button below the close button gamePassButton.x = -panelBackground.width / 2 + gamePassButton.width; // Move much further to the left within the panel gamePassButton.y = closeButton.y + closeButton.height + 50; // Position below the close button with some padding // Add logic to update the position of the Game Pass button based on certain conditions gamePassButton.update = function () { // Move the button to the left if a certain condition is met if (gamePassButton.x > -panelBackground.width / 2 + gamePassButton.width) { gamePassButton.x -= 5; // Move to the left } }; // Add the game pass button to the shop panel shopPanel.addChild(gamePassButton); // Add text descriptions and benefits below the Game Pass button var gamePassText = new Text2('Game Pass Benefits:', { size: 80, fill: 0xFFFFFF }); gamePassText.anchor.set(0.5, 0); gamePassText.x = gamePassButton.x + gamePassButton.width / 2; gamePassText.y = gamePassButton.y + gamePassButton.height + 20; shopPanel.addChild(gamePassText); var benefitsText = new Text2('1. Energia Infinita\n2. 2x Dano\n3. 2x Diamantes\n4. Desbloqueia 2 Itens', { size: 60, fill: 0xFFFFFF }); benefitsText.anchor.set(0.5, 0); benefitsText.x = gamePassText.x; benefitsText.y = gamePassText.y + gamePassText.height + 20; shopPanel.addChild(benefitsText); // Add an event listener for the game pass button gamePassButton.down = function (x, y, obj) { console.log("Game pass button pressed!"); // Logic to handle game pass purchase if (diamonds >= 30) { // Cost of 30 diamonds console.log("Game pass purchased!"); diamonds -= 30; // Deduct diamonds diamondsText.setText(diamonds.toString()); // Update diamonds display // Apply game pass benefits playerEnergy = Infinity; // Infinite energy playerDamage *= 2; // Double damage diamonds *= 2; // Double diamonds unlockedObjects += 1; // Unlock an additional item upon challenge completion } else { console.log("Not enough diamonds to purchase game pass."); var insufficientDiamondsText = new Text2('Not enough diamonds!', { size: 80, fill: 0xFF0000 }); insufficientDiamondsText.anchor.set(0.5, 0); insufficientDiamondsText.x = gamePassButton.x; insufficientDiamondsText.y = gamePassButton.y + gamePassButton.height + 20; shopPanel.addChild(insufficientDiamondsText); // Remove the message after a short delay LK.setTimeout(function () { if (insufficientDiamondsText.parent) { insufficientDiamondsText.parent.removeChild(insufficientDiamondsText); } }, 3000); // Display for 3 seconds } }; var shopPanel = new Container(); // Create a background for the panel var panelBackground = LK.getAsset('Bg', { anchorX: 0.5, anchorY: 0.5, scaleX: 2.0, scaleY: 2.0 }); shopPanel.addChild(panelBackground); // Position the panel in the center of the screen shopPanel.x = 2048 / 2; shopPanel.y = 2732 / 2; // Add the panel to the game game.addChild(shopPanel); // Initialize the close button image var closeButton = LK.getAsset('close_tab_button', { anchorX: 0.5, anchorY: 0.5, scaleX: 1.5, scaleY: 1.5 }); // Position the close button at the top right of the panel closeButton.x = panelBackground.width / 2 - closeButton.width / 2; closeButton.y = -panelBackground.height / 2 + closeButton.height / 2; // Add the close button to the shop panel shopPanel.addChild(closeButton); // Initialize the game pass button image var gamePassButton = LK.getAsset('gamepass', { anchorX: 0.5, anchorY: 0.5, scaleX: 1.5, scaleY: 1.5 }); // Position the game pass button below the close button gamePassButton.x = 0; // Center horizontally within the panel gamePassButton.y = closeButton.y + closeButton.height + 50; // Position below the close button with some padding // Add the game pass button to the shop panel shopPanel.addChild(gamePassButton); // Add an event listener for the game pass button gamePassButton.down = function (x, y, obj) { console.log("Game pass button pressed!"); // Logic to handle game pass purchase if (diamonds >= 5) { // Example cost of 5 diamonds console.log("Game pass purchased!"); diamonds -= 5; // Deduct diamonds diamondsText.setText(diamonds.toString()); // Update diamonds display } else { console.log("Not enough diamonds to purchase game pass."); } }; // Add an event listener for the close button closeButton.down = function (x, y, obj) { console.log("Close button pressed!"); // Remove the shop panel from the game game.removeChild(shopPanel); }; // Add logic to display shop items and handle purchases here } if (challengeActive) { woodPiecesBroken++; woodPiecesBrokenText.setText('Wood Broken: ' + woodPiecesBroken); } // Add coins when the wood is broken var woodPiecesBrokenText, globalTimeText; // Start a countdown timer var instructionText = new Text2('Tap to break objects and earn rewards!', { size: 100, fill: 0xFFFFFF }); instructionText.anchor.set(0.5, 0); instructionText.x = 2048 / 2; // Center horizontally instructionText.y = 2732 / 2; // Center vertically LK.gui.top.addChild(instructionText); // Play background music LK.playMusic('Bgmusic', { loop: true }); // Initialize the upgrade button image var upgradeButton = LK.getAsset('Upgrade_button', { anchorX: 0.5, anchorY: 0.5, scaleX: 2, scaleY: 2 }); // Initialize the shop button image var shopButton = LK.getAsset('Shop_icon', { anchorX: 0.5, anchorY: 0.5, scaleX: 2, scaleY: 2 }); // Position the shop button at the bottom right of the screen shopButton.x = 2048 - shopButton.width / 2; shopButton.y = 2732 - shopButton.height / 2; // Add the shop button to the game game.addChild(shopButton); // Add an event listener for the shop button shopButton.down = function (x, y, obj) { console.log("Shop button pressed!"); openShopPanel(); }; // Position the upgrade button at the bottom left of the screen upgradeButton.x = upgradeButton.width / 2; upgradeButton.y = 2732 - upgradeButton.height / 2; // Initialize the object change button image var objectChangeButton = LK.getAsset('Object_change_button', { anchorX: 0.5, anchorY: 0.5, scaleX: 2, scaleY: 2 }); // Position the object change button to the right of the upgrade button objectChangeButton.x = upgradeButton.x + upgradeButton.width + 50; objectChangeButton.y = upgradeButton.y; // Add the object change button to the game game.addChild(objectChangeButton); // Add an event listener for the object change button objectChangeButton.down = function (x, y, obj) { console.log("Object change button pressed!"); openObjectSelectionTab(); }; // Add the upgrade button to the game game.addChild(upgradeButton); // Bring the upgrade button to the front game.setChildIndex(upgradeButton, game.children.length - 1); game.setChildIndex(upgradeButton, game.children.length - 1); // Add an event listener for the upgrade button upgradeButton.down = function (x, y, obj) { console.log("Upgrade button pressed!"); // Handle wood breaking logic here if (challengeActive) { woodPiecesBroken++; woodPiecesBrokenText.setText('Wood Broken: ' + woodPiecesBroken); } openUpgradePanel(); }; // Add an event listener for the hand button icon to increase damage var handButtonIcon = LK.getAsset('Hand_icon_button', { anchorX: 0.5, anchorY: 0.5, scaleX: 2, scaleY: 2 }); // Add the hand button icon to the upgrade panel function addHandButtonIconToPanel(upgradePanel) { upgradePanel.addChild(handButtonIcon); } // Create a background for the panel var panelBackground = LK.getAsset('Bg', { anchorX: 0.5, anchorY: 0.5, scaleX: 2.0, // Increased scale for width scaleY: 2.0 // Increased scale for height }); var upgradePanel = new Container(); // Define upgradePanel upgradePanel.addChild(panelBackground); // Position the hand button icon at the top of the upgrade panel handButtonIcon.x = 0; // Align to the left handButtonIcon.y = -panelBackground.height / 2 + handButtonIcon.height / 2 + 20; // Align to the top with some padding // Add an event listener for the hand button icon handButtonIcon.down = function (x, y, obj) { if (coins >= 10) { console.log("Hand button icon pressed! Increasing damage."); playerDamage += 1; // Increase player damage by 1 coins -= 10; // Deduct 10 coins coinsText.setText(coins.toString()); // Update coins display } else { console.log("Not enough coins to upgrade damage."); } }; // Function to open the upgrade panel function openUpgradePanel() { // Create a new container for the upgrade panel var upgradePanel = new Container(); // Create a background for the panel var panelBackground = LK.getAsset('Bg', { anchorX: 0.5, anchorY: 0.5, scaleX: 2.0, // Increased scale for width scaleY: 2.0 // Increased scale for height }); var upgradePanel = new Container(); upgradePanel.addChild(panelBackground); // Position the panel in the center of the screen upgradePanel.x = 2048 / 2; upgradePanel.y = 2732 / 2; // Add the panel to the game game.addChild(upgradePanel); // Initialize the close button image var closeButton = LK.getAsset('close_tab_button', { anchorX: 0.5, anchorY: 0.5, scaleX: 1.5, scaleY: 1.5 }); // Position the close button at the top right of the panel closeButton.x = panelBackground.width / 2 - closeButton.width / 2; closeButton.y = -panelBackground.height / 2 + closeButton.height / 2; // Add the close button to the upgrade panel upgradePanel.addChild(closeButton); // Add an event listener for the close button closeButton.down = function (x, y, obj) { console.log("Close button pressed!"); // Remove the upgrade panel from the game game.removeChild(upgradePanel); }; addHandButtonIconToPanel(upgradePanel); // Add an event listener for the energy button icon to increase energy recovery var energyButtonIcon = LK.getAsset('Energy_icon_button', { anchorX: 0.5, anchorY: 0.5, scaleX: 2, scaleY: 2 }); upgradePanel.addChild(energyButtonIcon); // Add an event listener for the energy max button icon to increase energy limit var energyMaxButtonIcon = LK.getAsset('Energy_max_button_icon', { anchorX: 0.5, anchorY: 0.5, scaleX: 2, scaleY: 2 }); upgradePanel.addChild(energyMaxButtonIcon); energyMaxButtonIcon.down = function (x, y, obj) { if (coins >= 10) { console.log("Energy max button icon pressed! Increasing energy limit."); playerEnergy += 10; // Increase energy limit by 10 coins -= 10; // Deduct 10 coins coinsText.setText(coins.toString()); // Update coins display } else { console.log("Not enough coins to upgrade energy limit."); } }; // Add an event listener for the upgrade button to increase energy recovery energyButtonIcon.down = function (x, y, obj) { if (coins >= 10) { console.log("Energy button icon pressed! Increasing energy recovery."); energyRecoveryRate += 1; // Increase energy recovery rate by 1 coins -= 10; // Deduct 10 coins coinsText.setText(coins.toString()); // Update coins display } else { console.log("Not enough coins to upgrade energy recovery."); } }; var energyUpgradeNameText = new Text2('Upgrade: Increase Energy Recovery', { size: 100, fill: 0xFFFFFF }); energyUpgradeNameText.anchor.set(0.5, 0); // Add cost and name display for the energy upgrade var energyUpgradeCostText = new Text2('Cost: 10 Coins', { size: 100, fill: 0xFFFFFF }); energyUpgradeCostText.anchor.set(0.5, 0); energyUpgradeCostText.y = energyButtonIcon.y + energyButtonIcon.height / 2 + 10; upgradePanel.addChild(energyUpgradeCostText); energyUpgradeNameText.y = energyUpgradeCostText.y + energyUpgradeCostText.height + 10; upgradePanel.addChild(energyUpgradeNameText); energyButtonIcon.x = panelBackground.width / 2 - energyButtonIcon.width / 2; energyButtonIcon.y = energyUpgradeNameText.y + energyUpgradeNameText.height + 20; energyUpgradeCostText.anchor.set(0.5, 0); energyUpgradeCostText.y = energyButtonIcon.y + energyButtonIcon.height / 2 + 10; upgradePanel.addChild(energyUpgradeCostText); var energyUpgradeNameText = new Text2('Upgrade: Increase Energy Recovery', { size: 100, fill: 0xFFFFFF }); energyUpgradeNameText.anchor.set(0.5, 0); energyUpgradeNameText.y = energyUpgradeCostText.y + energyUpgradeCostText.height + 10; upgradePanel.addChild(energyUpgradeNameText); // Add an event listener for the energy button icon energyButtonIcon.down = function (x, y, obj) { if (coins >= 10) { console.log("Energy button icon pressed! Increasing energy recovery."); energyRecoveryRate += 1; // Increase energy recovery rate by 1 coins -= 10; // Deduct 10 coins coinsText.setText(coins.toString()); // Update coins display } else { console.log("Not enough coins to upgrade energy recovery."); } }; // Add cost and name display for the upgrade var upgradeCostText = new Text2('Cost: 10 Coins', { size: 100, fill: 0xFFFFFF }); upgradeCostText.anchor.set(0.5, 0); upgradeCostText.y = handButtonIcon.y + handButtonIcon.height / 2 + 10; upgradePanel.addChild(upgradeCostText); var upgradeNameText = new Text2('Upgrade: Increase Damage', { size: 100, fill: 0xFFFFFF }); upgradeNameText.anchor.set(0.5, 0); upgradeNameText.y = upgradeCostText.y + upgradeCostText.height + 10; upgradePanel.addChild(upgradeNameText); } var coinGainText; // Define coinGainText in the global scope var scoreText = new Text2('0', { size: 150, fill: 0xFFFFFF }); // Define scoreText // Initialize the gold button image var goldButton = LK.getAsset('Gold_button_icon', { anchorX: 0.3, tint: 0x808080, // Set the initial tint to gray // Center the anchor point horizontally anchorY: -0.4, // Center the anchor point vertically scaleX: 2, // Scale the button size scaleY: 2 // Scale the button size }); // Create a text to display the brightness percentage above the gold button var goldButtonBrightnessText = new Text2(goldButtonBrightness + '%', { size: 50, fill: 0xFFFFFF }); goldButtonBrightnessText.anchor.set(0.5, 1); // Center horizontally, align bottom goldButtonBrightnessText.x = goldButton.x; goldButtonBrightnessText.y = goldButton.y - goldButton.height / 2 - 10; // Position above the button game.addChild(goldButtonBrightnessText); // Update the brightness text whenever the brightness changes function updateGoldButtonBrightnessText() { goldButtonBrightnessText.setText(goldButtonBrightness + '%'); } // Initialize the crown image var crown = LK.getAsset('crown', { anchorX: 1.0, // Right edge anchorY: 0.0, // Top edge scaleX: 2, // Scale the crown size scaleY: 2 // Scale the crown size }); // Position the crown at the top right of the screen crown.x = 2048 - crown.width / 2; crown.y = crown.height / 2; // Add the crown to the game game.addChild(crown); // Position the gold button further to the left goldButton.x = crown.x - crown.width - goldButton.width / 2; // Position to the left of the crown goldButton.y = crown.y + crown.height + goldButton.height / 2; // Position below the crown // Add the gold button to the game game.addChild(goldButton); // Function to open the object selection tab function openObjectSelectionTab() { // Create a new container for the object selection tab var objectSelectionTab = new Container(); // Create a background for the tab var tabBackground = LK.getAsset('Bg', { anchorX: 0.5, anchorY: 0.5, scaleX: 2.0, scaleY: 2.0 }); objectSelectionTab.addChild(tabBackground); // Position the tab in the center of the screen objectSelectionTab.x = 2048 / 2; objectSelectionTab.y = 2732 / 2; // Add the tab to the game game.addChild(objectSelectionTab); // Initialize the close button image var closeButton = LK.getAsset('close_tab_button', { anchorX: 0.5, anchorY: 0.5, scaleX: 1.5, scaleY: 1.5 }); // Position the close button at the top right of the tab closeButton.x = tabBackground.width / 2 - closeButton.width / 2; closeButton.y = -tabBackground.height / 2 + closeButton.height / 2; // Add the close button to the object selection tab objectSelectionTab.addChild(closeButton); // Add an event listener for the close button closeButton.down = function (x, y, obj) { console.log("Close button pressed!"); // Remove the object selection tab from the game game.removeChild(objectSelectionTab); }; // Add logic to display objects and handle unlocking var objects = ['Object_1', 'Object_2', 'Object_3']; // Example object IDs var unlockedObjects = 1; // Number of unlocked objects objects.forEach(function (objectId, index) { var objectIcon = LK.getAsset(objectId, { anchorX: 0.5, anchorY: 0.5, scaleX: 2, scaleY: 2 }); // Position each object icon in the tab objectIcon.x = (index - 1) * 150; // Adjust spacing objectIcon.y = 0; // Add the object icon to the tab objectSelectionTab.addChild(objectIcon); // Add an event listener for each object icon objectIcon.down = function (x, y, obj) { if (index < unlockedObjects) { console.log("Object " + (index + 1) + " selected!"); // Logic to select the object } else { console.log("Object " + (index + 1) + " is locked!"); objectIcon.tint = 0x000000; // Set tint to black if locked } }; }); } // Add a click event to the game // Add an event listener for the crown var challengeActive = false; var woodPiecesBroken = 0; // Track the number of wood pieces broken during the challenge crown.down = function (x, y, obj) { if (challengeActive) { console.log("Challenge is already active or in cooldown."); return; } challengeActive = true; // Create and display the challenge text var challengeText = new Text2('Break 10 pieces of wood in 30 seconds!', { size: 100, fill: 0xFFFFFF }); challengeText.anchor.set(0.5, 0.5); challengeText.x = 2048 / 2; // Center horizontally challengeText.y = 2732 / 2; // Center vertically LK.gui.top.addChild(challengeText); // Add a text timer to the bottom middle of the screen var timerText = new Text2('30', { size: 100, fill: 0xFFFFFF }); timerText.anchor.set(0.5, 0.5); timerText.x = 2048 / 2; // Center horizontally timerText.y = 2732 - 100; // Position near the bottom LK.gui.bottom.addChild(timerText); // Add a global time variable below the coins if the challenge has started globalTimeText = new Text2('Time: 30s', { size: 100, fill: 0xFFFFFF }); globalTimeText.anchor.set(0.5, 0); globalTimeText.x = coinsText.x; globalTimeText.y = coinsText.y + coinsText.height + 10; LK.gui.top.addChild(globalTimeText); // Add a global variable to track wood pieces broken if the challenge has started woodPiecesBrokenText = new Text2('Wood Broken: 0', { size: 100, fill: 0xFFFFFF }); woodPiecesBrokenText.anchor.set(0.5, 0); woodPiecesBrokenText.x = coinsText.x; woodPiecesBrokenText.y = globalTimeText.y + globalTimeText.height + 10; LK.gui.top.addChild(woodPiecesBrokenText); // Start a countdown timer var countdown = 30; var countdownInterval = LK.setInterval(function () { countdown--; timerText.setText(countdown.toString()); globalTimeText.setText('Time: ' + countdown + 's'); // Update global time display if (countdown <= 0) { LK.clearInterval(countdownInterval); if (woodPiecesBroken >= 10) { // Unlock a new item unlockedObjects++; console.log("New item unlocked! Total unlocked items: " + unlockedObjects); // Display success message var successText = new Text2('Challenge Completed!', { size: 100, fill: 0x00FF00 }); successText.anchor.set(0.5, 0.5); successText.x = 2048 / 2; // Center horizontally successText.y = 2732 / 2; // Center vertically LK.gui.top.addChild(successText); // Remove the success text after a short delay LK.setTimeout(function () { if (successText.parent) { successText.parent.removeChild(successText); } }, 3000); // Display for 3 seconds } else { woodPiecesBroken = 0; // Reset wood pieces broken count if (woodPiecesBrokenText.parent) { woodPiecesBrokenText.parent.removeChild(woodPiecesBrokenText); } if (timerText.parent) { timerText.parent.removeChild(timerText); } if (globalTimeText.parent) { globalTimeText.parent.removeChild(globalTimeText); } // Display failure message var failureText = new Text2('You failed the challenge!', { size: 100, fill: 0xFF0000 }); failureText.anchor.set(0.5, 0.5); failureText.x = 2048 / 2; // Center horizontally failureText.y = 2732 / 2; // Center vertically LK.gui.top.addChild(failureText); // Remove the failure text after a short delay LK.setTimeout(function () { if (failureText.parent) { failureText.parent.removeChild(failureText); } }, 3000); // Display for 3 seconds challengeActive = false; // Start cooldown timer if challenge failed var cooldown = 60; var cooldownText = new Text2('Retry in: ' + cooldown + 's', { size: 100, fill: 0xFF0000 }); cooldownText.anchor.set(0.5, 0.5); cooldownText.x = 2048 / 2; cooldownText.y = 2732 - 200; LK.gui.bottom.addChild(cooldownText); var cooldownInterval = LK.setInterval(function () { cooldown--; cooldownText.setText('Retry in: ' + cooldown + 's'); if (cooldown <= 0) { LK.clearInterval(cooldownInterval); if (cooldownText.parent) { cooldownText.parent.removeChild(cooldownText); } } }, 1000); } } }, 1000); // Remove the challenge text after a short delay LK.setTimeout(function () { if (challengeText.parent) { challengeText.parent.removeChild(challengeText); } }, 3000); // Display for 3 seconds }; var hpWood = 100; // Initialize the HP of the wooden block var playerDamage = 10; // Initialize the player's damage to 10 var bg = LK.getAsset('Bg', { anchorX: 0.0, anchorY: 0.0, scaleX: 2048 / 100, // Scale to fit the screen width scaleY: 2732 / 98.44 // Scale to fit the screen height }); // Initialize the rope image var rope = LK.getAsset('Rope', { anchorX: 0.0, anchorY: 0.0, scaleX: 2048 / 400, // Scale to full screen width scaleY: 2732 / 500 // Increase the vertical size of the rope }); // Add the rope image to the game game.addChild(rope); // Initialize the wooden block image var woodenBlockPosition = { x: 0, y: 0 }; // Track the wooden block's position var woodHp = 225; // Initialize the HP of the wooden block var metalHp = 500; // Initialize the HP of the metal block var chairHp = 1600; // Initialize the HP of the chair var chairLegsHp = 1200; // Initialize the total HP of the chair legs var woodenBlock = LK.getAsset('Object_1', { anchorX: 0.1, anchorY: -2, scaleX: 5, scaleY: 5 }); // Position the wooden block further down the rope woodenBlock.x = rope.x + rope.width / 2; woodenBlock.y = rope.y + rope.height * 0.95; // Make the wooden block visible woodenBlock.alpha = 1; // Add the wooden block to the game game.addChild(woodenBlock); // Initialize the HP bar image var hpBar = LK.getAsset('Hp_bar', { anchorX: 0.1, anchorY: -4, scaleX: 5, scaleY: 5 }); // Position the HP bar on top of the wooden block hpBar.x = woodenBlock.x; hpBar.y = woodenBlock.y - woodenBlock.height / 2 - hpBar.height; // Add the HP bar to the game game.addChild(hpBar); // Add the character to the game var character = game.addChild(new Character()); // Add the blue bar to the game var blueBar = game.addChild(new BlueBar()); blueBar.x = 2048 / 2; // Center horizontally blueBar.y = 100; // Position near the top // Update the blue bar transformation on each hit function updateBlueBarOnHit() { blueBar.increaseTransformation(1); // Increase transformation by 1% per hit blueBar.update(); // Check if the blue bar is fully transformed to gray if (blueBar.transformationPercentage >= 100) { diamonds += 1; // Award a diamond diamondsText.setText(diamonds.toString()); // Update diamonds display blueBar.transformationPercentage = 0; // Reset the blue bar blueBar.update(); // Update the blue bar to reflect the reset } } // Define currentAssetIndex in the global scope var playerAssets = ['player_1', 'Player_2', 'Player_3', 'Player_4']; var currentAssetIndex = 0; // Add a new variable to track the state of the game var gameState = "playing"; // Add a variable to display the score at the top of the screen var playerEnergy = 100; // Initialize the player's energy variable // Function to recover player energy every second function recoverEnergy() { if (playerEnergy < 100) { playerEnergy += energyRecoveryRate; energyText.setText(playerEnergy.toString()); } } // Set an interval to call recoverEnergy every second LK.setInterval(recoverEnergy, 1000); var energyText = new Text2(playerEnergy.toString(), { size: 150, fill: 0xFFFFFF }); energyText.anchor.set(0.5, 0); LK.gui.top.addChild(energyText); var hpWoodText = new Text2(hpWood.toString(), { size: 150, fill: 0xFFFFFF }); hpWoodText.anchor.set(0.5, 0); hpWoodText.y = scoreText.height; LK.gui.top.addChild(hpWoodText); var goldButtonBrightness = 0; // Initialize the gold button brightness variable at 0% var coins = 0; // Initialize the coins variable var diamonds = 0; // Initialize the diamonds variable var diamonds = 0; // Initialize the diamonds variable var diamonds = 0; // Initialize the diamonds variable var playerEnergy = 100; // Initialize the player's energy variable var energyRecoveryRate = 5; // Initialize the energy recovery rate to 5 var coinsText = new Text2(coins.toString(), { size: 150, fill: 0xFFFFFF }); coinsText.anchor.set(0.5, 0); coinsText.y = hpWoodText.height + hpWoodText.y; LK.gui.top.addChild(coinsText); var diamondsText = new Text2(diamonds.toString(), { size: 150, fill: 0xFFFFFF }); diamondsText.anchor.set(0.5, 0); diamondsText.y = coinsText.height + coinsText.y; LK.gui.top.addChild(diamondsText); // Initialize the diamond icon image // Add a click event to the game game.down = function (x, y, obj) { // Remove the instructional text when the screen is pressed if (instructionText.parent) { instructionText.parent.removeChild(instructionText); } if (playerEnergy === 0) { // Trigger hurt animation character.removeChildren(); var hurtAnimation = ['player_hurt_hand_1', 'player_hurt_hand_2', 'player_hurt_hand_3'].map(function (asset) { return character.attachAsset(asset, { anchorX: 0.85, anchorY: 0.5, scaleX: 5, scaleY: 5, frameRate: 10 // Set the frame rate for the sprite animation }); }); hurtAnimation.forEach(function (frame, index) { LK.setTimeout(function () { character.removeChildren(); character.addChild(frame); }, index * 100); // Adjust timing for each frame }); // After 3 seconds, transition to lifting animation LK.setTimeout(function () { character.removeChildren(); var liftingAnimation = ['Player_lifting_1', 'Player_lifting_2'].map(function (asset) { return character.attachAsset(asset, { anchorX: 0.85, anchorY: 0.5, scaleX: 5, scaleY: 5, frameRate: 10 // Set the frame rate for the sprite animation }); }); liftingAnimation.forEach(function (frame, index) { LK.setTimeout(function () { character.removeChildren(); character.addChild(frame); }, index * 100); // Adjust timing for each frame }); }, 3000); return; // Exit the function to prevent further actions } // Trigger a character animation sequence currentAssetIndex = (currentAssetIndex + 1) % playerAssets.length; character.removeChildren(); // Remove previous animation var animationSequence = playerAssets.map(function (asset) { return character.attachAsset(asset, { anchorX: 0.85, anchorY: 0.5, scaleX: 5, scaleY: 5, frameRate: 10 // Set the frame rate for the sprite animation }); }); animationSequence.forEach(function (frame, index) { LK.setTimeout(function () { character.removeChildren(); character.addChild(frame); if (index === animationSequence.length - 1) { // Deal damage to the wood when the animation ends var energyConsumption = Math.min(playerEnergy, 10); // Determine energy consumption, max 10 playerEnergy -= energyConsumption; // Reduce player energy energyText.setText(playerEnergy.toString()); // Update energy display hpWood -= playerDamage * (energyConsumption / 10); // Adjust damage based on energy consumption chairHp -= playerDamage * (energyConsumption / 10); // Adjust damage for chair chairLegsHp -= playerDamage * (energyConsumption / 10); // Adjust damage for chair legs // Update the blue bar transformation updateBlueBarOnHit(); // Increase gold button shine by 1% when wood is damaged goldButton.tint = Math.min(0xFFFFFF, goldButton.tint + 0x010101); goldButtonBrightness = Math.min(100, goldButtonBrightness + 1); // Increase brightness percentage updateGoldButtonBrightnessText(); // Update the text display // Enable gold button click when at maximum brightness if (goldButton.tint === 0xFFFFFF) { goldButton.down = function (x, y, obj) { console.log("Gold button clicked at maximum brightness!"); // Change any item to gold for a few seconds woodenBlock.tint = 0xFFD700; // Change the wooden block to gold color LK.setTimeout(function () { woodenBlock.tint = 0xFFFFFF; // Revert the wooden block color back to normal }, 3000); // Change lasts for 3 seconds goldButtonBrightness = 0; // Reset brightness percentage updateGoldButtonBrightnessText(); // Update the text display // Reset the gold button brightness to 0% after use goldButtonBrightness = 0; // Reset brightness percentage updateGoldButtonBrightnessText(); // Update the text display }; } hpWoodText.setText(hpWood.toString()); // Play the hit sound effect LK.getSound('Hit').play(); if (hpWood <= 0 || chairHp <= 0 || chairLegsHp <= 0) { // Handle wood breaking logic here if (challengeActive) { woodPiecesBroken++; woodPiecesBrokenText.setText('Wood Broken: ' + woodPiecesBroken); } console.log("Wood is broken!"); // Play the break sound effect LK.getSound('Break').play(); // Reset wood HP hpWood = 100; chairHp = 1600; // Reset chair HP chairLegsHp = 1200; // Reset chair legs HP hpWoodText.setText(hpWood.toString()); // Reposition the new wooden block woodenBlock.x = rope.x + rope.width / 2; woodenBlock.y = rope.y + rope.height * 0.95; // Add coins when the wood is broken coins += 10; // Add 10 coins coinsText.setText(coins.toString()); // Create a text effect for gaining coins if (!coinGainText) { coinGainText = new Text2('+10', { size: 100, fill: 0xFFFF00 // Yellow color for the coin gain text }); } coinGainText.anchor.set(0.5, 0.5); coinGainText.x = woodenBlock.x + 50; // Move the text effect further to the right coinGainText.y = woodenBlock.y - woodenBlock.height / 2; // Add the coin gain text to the game game.addChild(coinGainText); // Animate the coin gain text to move upwards and fade out LK.setTimeout(function () { // Custom animation to move the text upwards var startY = coinGainText.y; var endY = startY - 100; var duration = 1000; var startTime = Date.now(); function animateMove() { var currentTime = Date.now(); var elapsed = currentTime - startTime; var progress = Math.min(elapsed / duration, 1); coinGainText.y = startY + (endY - startY) * progress; if (progress < 1) { LK.setTimeout(animateMove, 16); // Approximately 60 FPS } } animateMove(); // Custom fade-out animation var fadeDuration = 1000; var fadeStartTime = Date.now(); function animateFadeOut() { var currentTime = Date.now(); var elapsed = currentTime - fadeStartTime; var fadeProgress = Math.min(elapsed / fadeDuration, 1); coinGainText.alpha = 1 - fadeProgress; if (fadeProgress < 1) { LK.setTimeout(animateFadeOut, 16); // Approximately 60 FPS } else { coinGainText.destroy(); // Remove the text after animation } } animateFadeOut(); }, 0); } } }, index * 100); // Adjust timing for each frame }); }; ;
/****
* Classes
****/
var BlueBar = Container.expand(function () {
var self = Container.call(this);
var blueBarGraphics = self.attachAsset('blueBar', {
anchorX: 0.5,
anchorY: 0.5
});
self.transformationPercentage = 0;
self.update = function () {
// Update the color based on transformation percentage
var grayValue = Math.floor(0xFF * self.transformationPercentage / 100);
blueBarGraphics.tint = grayValue << 16 | grayValue << 8 | grayValue;
};
self.increaseTransformation = function (amount) {
self.transformationPercentage = Math.min(100, self.transformationPercentage + amount);
};
});
//<Assets used in the game will automatically appear here>
// Create the Character class
var Character = Container.expand(function () {
var self = Container.call(this);
// Attach the character asset
var playerAssets = ['player_1', 'Player_2', 'Player_3', 'Player_4'];
var currentAssetIndex = 0;
var characterGraphics = self.attachAsset(playerAssets[currentAssetIndex], {
anchorX: 0.85,
anchorY: 0.5,
scaleX: 5,
scaleY: 5,
frameRate: 10 // Set the frame rate for the sprite animation
});
// Set the character's initial position
self.x = 945;
self.y = 2732 / 2 - characterGraphics.height / 2;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
function missingFunction() {
console.log("This is the missing function.");
}
function openShopPanel() {
console.log("Shop panel opened!");
var shopPanel = new Container(); // Initialize shopPanel before usage
// Create a background for the panel
var panelBackground = LK.getAsset('Bg', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2.0,
scaleY: 2.0
});
shopPanel.addChild(panelBackground);
// Initialize the close button image
var closeButton = LK.getAsset('close_tab_button', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.5,
scaleY: 1.5
});
// Position the close button at the top right of the panel
closeButton.x = panelBackground.width / 2 - closeButton.width / 2;
closeButton.y = -panelBackground.height / 2 + closeButton.height / 2;
// Add the close button to the shop panel
shopPanel.addChild(closeButton);
// Add logic to display shop items and handle purchases here
// Initialize the game pass button image
var gamePassButton = LK.getAsset('gamepass', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.5,
scaleY: 1.5
});
// Position the game pass button below the close button
gamePassButton.x = -panelBackground.width / 2 + gamePassButton.width; // Move much further to the left within the panel
gamePassButton.y = closeButton.y + closeButton.height + 50; // Position below the close button with some padding
// Add logic to update the position of the Game Pass button based on certain conditions
gamePassButton.update = function () {
// Move the button to the left if a certain condition is met
if (gamePassButton.x > -panelBackground.width / 2 + gamePassButton.width) {
gamePassButton.x -= 5; // Move to the left
}
};
// Add the game pass button to the shop panel
shopPanel.addChild(gamePassButton);
// Add text descriptions and benefits below the Game Pass button
var gamePassText = new Text2('Game Pass Benefits:', {
size: 80,
fill: 0xFFFFFF
});
gamePassText.anchor.set(0.5, 0);
gamePassText.x = gamePassButton.x + gamePassButton.width / 2;
gamePassText.y = gamePassButton.y + gamePassButton.height + 20;
shopPanel.addChild(gamePassText);
var benefitsText = new Text2('1. Energia Infinita\n2. 2x Dano\n3. 2x Diamantes\n4. Desbloqueia 2 Itens', {
size: 60,
fill: 0xFFFFFF
});
benefitsText.anchor.set(0.5, 0);
benefitsText.x = gamePassText.x;
benefitsText.y = gamePassText.y + gamePassText.height + 20;
shopPanel.addChild(benefitsText);
// Add an event listener for the game pass button
gamePassButton.down = function (x, y, obj) {
console.log("Game pass button pressed!");
// Logic to handle game pass purchase
if (diamonds >= 30) {
// Cost of 30 diamonds
console.log("Game pass purchased!");
diamonds -= 30; // Deduct diamonds
diamondsText.setText(diamonds.toString()); // Update diamonds display
// Apply game pass benefits
playerEnergy = Infinity; // Infinite energy
playerDamage *= 2; // Double damage
diamonds *= 2; // Double diamonds
unlockedObjects += 1; // Unlock an additional item upon challenge completion
} else {
console.log("Not enough diamonds to purchase game pass.");
var insufficientDiamondsText = new Text2('Not enough diamonds!', {
size: 80,
fill: 0xFF0000
});
insufficientDiamondsText.anchor.set(0.5, 0);
insufficientDiamondsText.x = gamePassButton.x;
insufficientDiamondsText.y = gamePassButton.y + gamePassButton.height + 20;
shopPanel.addChild(insufficientDiamondsText);
// Remove the message after a short delay
LK.setTimeout(function () {
if (insufficientDiamondsText.parent) {
insufficientDiamondsText.parent.removeChild(insufficientDiamondsText);
}
}, 3000); // Display for 3 seconds
}
};
var shopPanel = new Container();
// Create a background for the panel
var panelBackground = LK.getAsset('Bg', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2.0,
scaleY: 2.0
});
shopPanel.addChild(panelBackground);
// Position the panel in the center of the screen
shopPanel.x = 2048 / 2;
shopPanel.y = 2732 / 2;
// Add the panel to the game
game.addChild(shopPanel);
// Initialize the close button image
var closeButton = LK.getAsset('close_tab_button', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.5,
scaleY: 1.5
});
// Position the close button at the top right of the panel
closeButton.x = panelBackground.width / 2 - closeButton.width / 2;
closeButton.y = -panelBackground.height / 2 + closeButton.height / 2;
// Add the close button to the shop panel
shopPanel.addChild(closeButton);
// Initialize the game pass button image
var gamePassButton = LK.getAsset('gamepass', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.5,
scaleY: 1.5
});
// Position the game pass button below the close button
gamePassButton.x = 0; // Center horizontally within the panel
gamePassButton.y = closeButton.y + closeButton.height + 50; // Position below the close button with some padding
// Add the game pass button to the shop panel
shopPanel.addChild(gamePassButton);
// Add an event listener for the game pass button
gamePassButton.down = function (x, y, obj) {
console.log("Game pass button pressed!");
// Logic to handle game pass purchase
if (diamonds >= 5) {
// Example cost of 5 diamonds
console.log("Game pass purchased!");
diamonds -= 5; // Deduct diamonds
diamondsText.setText(diamonds.toString()); // Update diamonds display
} else {
console.log("Not enough diamonds to purchase game pass.");
}
};
// Add an event listener for the close button
closeButton.down = function (x, y, obj) {
console.log("Close button pressed!");
// Remove the shop panel from the game
game.removeChild(shopPanel);
};
// Add logic to display shop items and handle purchases here
}
if (challengeActive) {
woodPiecesBroken++;
woodPiecesBrokenText.setText('Wood Broken: ' + woodPiecesBroken);
}
// Add coins when the wood is broken
var woodPiecesBrokenText, globalTimeText;
// Start a countdown timer
var instructionText = new Text2('Tap to break objects and earn rewards!', {
size: 100,
fill: 0xFFFFFF
});
instructionText.anchor.set(0.5, 0);
instructionText.x = 2048 / 2; // Center horizontally
instructionText.y = 2732 / 2; // Center vertically
LK.gui.top.addChild(instructionText);
// Play background music
LK.playMusic('Bgmusic', {
loop: true
});
// Initialize the upgrade button image
var upgradeButton = LK.getAsset('Upgrade_button', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2,
scaleY: 2
});
// Initialize the shop button image
var shopButton = LK.getAsset('Shop_icon', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2,
scaleY: 2
});
// Position the shop button at the bottom right of the screen
shopButton.x = 2048 - shopButton.width / 2;
shopButton.y = 2732 - shopButton.height / 2;
// Add the shop button to the game
game.addChild(shopButton);
// Add an event listener for the shop button
shopButton.down = function (x, y, obj) {
console.log("Shop button pressed!");
openShopPanel();
};
// Position the upgrade button at the bottom left of the screen
upgradeButton.x = upgradeButton.width / 2;
upgradeButton.y = 2732 - upgradeButton.height / 2;
// Initialize the object change button image
var objectChangeButton = LK.getAsset('Object_change_button', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2,
scaleY: 2
});
// Position the object change button to the right of the upgrade button
objectChangeButton.x = upgradeButton.x + upgradeButton.width + 50;
objectChangeButton.y = upgradeButton.y;
// Add the object change button to the game
game.addChild(objectChangeButton);
// Add an event listener for the object change button
objectChangeButton.down = function (x, y, obj) {
console.log("Object change button pressed!");
openObjectSelectionTab();
};
// Add the upgrade button to the game
game.addChild(upgradeButton);
// Bring the upgrade button to the front
game.setChildIndex(upgradeButton, game.children.length - 1);
game.setChildIndex(upgradeButton, game.children.length - 1);
// Add an event listener for the upgrade button
upgradeButton.down = function (x, y, obj) {
console.log("Upgrade button pressed!");
// Handle wood breaking logic here
if (challengeActive) {
woodPiecesBroken++;
woodPiecesBrokenText.setText('Wood Broken: ' + woodPiecesBroken);
}
openUpgradePanel();
};
// Add an event listener for the hand button icon to increase damage
var handButtonIcon = LK.getAsset('Hand_icon_button', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2,
scaleY: 2
});
// Add the hand button icon to the upgrade panel
function addHandButtonIconToPanel(upgradePanel) {
upgradePanel.addChild(handButtonIcon);
}
// Create a background for the panel
var panelBackground = LK.getAsset('Bg', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2.0,
// Increased scale for width
scaleY: 2.0 // Increased scale for height
});
var upgradePanel = new Container(); // Define upgradePanel
upgradePanel.addChild(panelBackground);
// Position the hand button icon at the top of the upgrade panel
handButtonIcon.x = 0; // Align to the left
handButtonIcon.y = -panelBackground.height / 2 + handButtonIcon.height / 2 + 20; // Align to the top with some padding
// Add an event listener for the hand button icon
handButtonIcon.down = function (x, y, obj) {
if (coins >= 10) {
console.log("Hand button icon pressed! Increasing damage.");
playerDamage += 1; // Increase player damage by 1
coins -= 10; // Deduct 10 coins
coinsText.setText(coins.toString()); // Update coins display
} else {
console.log("Not enough coins to upgrade damage.");
}
};
// Function to open the upgrade panel
function openUpgradePanel() {
// Create a new container for the upgrade panel
var upgradePanel = new Container();
// Create a background for the panel
var panelBackground = LK.getAsset('Bg', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2.0,
// Increased scale for width
scaleY: 2.0 // Increased scale for height
});
var upgradePanel = new Container();
upgradePanel.addChild(panelBackground);
// Position the panel in the center of the screen
upgradePanel.x = 2048 / 2;
upgradePanel.y = 2732 / 2;
// Add the panel to the game
game.addChild(upgradePanel);
// Initialize the close button image
var closeButton = LK.getAsset('close_tab_button', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.5,
scaleY: 1.5
});
// Position the close button at the top right of the panel
closeButton.x = panelBackground.width / 2 - closeButton.width / 2;
closeButton.y = -panelBackground.height / 2 + closeButton.height / 2;
// Add the close button to the upgrade panel
upgradePanel.addChild(closeButton);
// Add an event listener for the close button
closeButton.down = function (x, y, obj) {
console.log("Close button pressed!");
// Remove the upgrade panel from the game
game.removeChild(upgradePanel);
};
addHandButtonIconToPanel(upgradePanel);
// Add an event listener for the energy button icon to increase energy recovery
var energyButtonIcon = LK.getAsset('Energy_icon_button', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2,
scaleY: 2
});
upgradePanel.addChild(energyButtonIcon);
// Add an event listener for the energy max button icon to increase energy limit
var energyMaxButtonIcon = LK.getAsset('Energy_max_button_icon', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2,
scaleY: 2
});
upgradePanel.addChild(energyMaxButtonIcon);
energyMaxButtonIcon.down = function (x, y, obj) {
if (coins >= 10) {
console.log("Energy max button icon pressed! Increasing energy limit.");
playerEnergy += 10; // Increase energy limit by 10
coins -= 10; // Deduct 10 coins
coinsText.setText(coins.toString()); // Update coins display
} else {
console.log("Not enough coins to upgrade energy limit.");
}
};
// Add an event listener for the upgrade button to increase energy recovery
energyButtonIcon.down = function (x, y, obj) {
if (coins >= 10) {
console.log("Energy button icon pressed! Increasing energy recovery.");
energyRecoveryRate += 1; // Increase energy recovery rate by 1
coins -= 10; // Deduct 10 coins
coinsText.setText(coins.toString()); // Update coins display
} else {
console.log("Not enough coins to upgrade energy recovery.");
}
};
var energyUpgradeNameText = new Text2('Upgrade: Increase Energy Recovery', {
size: 100,
fill: 0xFFFFFF
});
energyUpgradeNameText.anchor.set(0.5, 0);
// Add cost and name display for the energy upgrade
var energyUpgradeCostText = new Text2('Cost: 10 Coins', {
size: 100,
fill: 0xFFFFFF
});
energyUpgradeCostText.anchor.set(0.5, 0);
energyUpgradeCostText.y = energyButtonIcon.y + energyButtonIcon.height / 2 + 10;
upgradePanel.addChild(energyUpgradeCostText);
energyUpgradeNameText.y = energyUpgradeCostText.y + energyUpgradeCostText.height + 10;
upgradePanel.addChild(energyUpgradeNameText);
energyButtonIcon.x = panelBackground.width / 2 - energyButtonIcon.width / 2;
energyButtonIcon.y = energyUpgradeNameText.y + energyUpgradeNameText.height + 20;
energyUpgradeCostText.anchor.set(0.5, 0);
energyUpgradeCostText.y = energyButtonIcon.y + energyButtonIcon.height / 2 + 10;
upgradePanel.addChild(energyUpgradeCostText);
var energyUpgradeNameText = new Text2('Upgrade: Increase Energy Recovery', {
size: 100,
fill: 0xFFFFFF
});
energyUpgradeNameText.anchor.set(0.5, 0);
energyUpgradeNameText.y = energyUpgradeCostText.y + energyUpgradeCostText.height + 10;
upgradePanel.addChild(energyUpgradeNameText);
// Add an event listener for the energy button icon
energyButtonIcon.down = function (x, y, obj) {
if (coins >= 10) {
console.log("Energy button icon pressed! Increasing energy recovery.");
energyRecoveryRate += 1; // Increase energy recovery rate by 1
coins -= 10; // Deduct 10 coins
coinsText.setText(coins.toString()); // Update coins display
} else {
console.log("Not enough coins to upgrade energy recovery.");
}
};
// Add cost and name display for the upgrade
var upgradeCostText = new Text2('Cost: 10 Coins', {
size: 100,
fill: 0xFFFFFF
});
upgradeCostText.anchor.set(0.5, 0);
upgradeCostText.y = handButtonIcon.y + handButtonIcon.height / 2 + 10;
upgradePanel.addChild(upgradeCostText);
var upgradeNameText = new Text2('Upgrade: Increase Damage', {
size: 100,
fill: 0xFFFFFF
});
upgradeNameText.anchor.set(0.5, 0);
upgradeNameText.y = upgradeCostText.y + upgradeCostText.height + 10;
upgradePanel.addChild(upgradeNameText);
}
var coinGainText; // Define coinGainText in the global scope
var scoreText = new Text2('0', {
size: 150,
fill: 0xFFFFFF
}); // Define scoreText
// Initialize the gold button image
var goldButton = LK.getAsset('Gold_button_icon', {
anchorX: 0.3,
tint: 0x808080,
// Set the initial tint to gray
// Center the anchor point horizontally
anchorY: -0.4,
// Center the anchor point vertically
scaleX: 2,
// Scale the button size
scaleY: 2 // Scale the button size
});
// Create a text to display the brightness percentage above the gold button
var goldButtonBrightnessText = new Text2(goldButtonBrightness + '%', {
size: 50,
fill: 0xFFFFFF
});
goldButtonBrightnessText.anchor.set(0.5, 1); // Center horizontally, align bottom
goldButtonBrightnessText.x = goldButton.x;
goldButtonBrightnessText.y = goldButton.y - goldButton.height / 2 - 10; // Position above the button
game.addChild(goldButtonBrightnessText);
// Update the brightness text whenever the brightness changes
function updateGoldButtonBrightnessText() {
goldButtonBrightnessText.setText(goldButtonBrightness + '%');
}
// Initialize the crown image
var crown = LK.getAsset('crown', {
anchorX: 1.0,
// Right edge
anchorY: 0.0,
// Top edge
scaleX: 2,
// Scale the crown size
scaleY: 2 // Scale the crown size
});
// Position the crown at the top right of the screen
crown.x = 2048 - crown.width / 2;
crown.y = crown.height / 2;
// Add the crown to the game
game.addChild(crown);
// Position the gold button further to the left
goldButton.x = crown.x - crown.width - goldButton.width / 2; // Position to the left of the crown
goldButton.y = crown.y + crown.height + goldButton.height / 2; // Position below the crown
// Add the gold button to the game
game.addChild(goldButton);
// Function to open the object selection tab
function openObjectSelectionTab() {
// Create a new container for the object selection tab
var objectSelectionTab = new Container();
// Create a background for the tab
var tabBackground = LK.getAsset('Bg', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2.0,
scaleY: 2.0
});
objectSelectionTab.addChild(tabBackground);
// Position the tab in the center of the screen
objectSelectionTab.x = 2048 / 2;
objectSelectionTab.y = 2732 / 2;
// Add the tab to the game
game.addChild(objectSelectionTab);
// Initialize the close button image
var closeButton = LK.getAsset('close_tab_button', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.5,
scaleY: 1.5
});
// Position the close button at the top right of the tab
closeButton.x = tabBackground.width / 2 - closeButton.width / 2;
closeButton.y = -tabBackground.height / 2 + closeButton.height / 2;
// Add the close button to the object selection tab
objectSelectionTab.addChild(closeButton);
// Add an event listener for the close button
closeButton.down = function (x, y, obj) {
console.log("Close button pressed!");
// Remove the object selection tab from the game
game.removeChild(objectSelectionTab);
};
// Add logic to display objects and handle unlocking
var objects = ['Object_1', 'Object_2', 'Object_3']; // Example object IDs
var unlockedObjects = 1; // Number of unlocked objects
objects.forEach(function (objectId, index) {
var objectIcon = LK.getAsset(objectId, {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2,
scaleY: 2
});
// Position each object icon in the tab
objectIcon.x = (index - 1) * 150; // Adjust spacing
objectIcon.y = 0;
// Add the object icon to the tab
objectSelectionTab.addChild(objectIcon);
// Add an event listener for each object icon
objectIcon.down = function (x, y, obj) {
if (index < unlockedObjects) {
console.log("Object " + (index + 1) + " selected!");
// Logic to select the object
} else {
console.log("Object " + (index + 1) + " is locked!");
objectIcon.tint = 0x000000; // Set tint to black if locked
}
};
});
}
// Add a click event to the game
// Add an event listener for the crown
var challengeActive = false;
var woodPiecesBroken = 0; // Track the number of wood pieces broken during the challenge
crown.down = function (x, y, obj) {
if (challengeActive) {
console.log("Challenge is already active or in cooldown.");
return;
}
challengeActive = true;
// Create and display the challenge text
var challengeText = new Text2('Break 10 pieces of wood in 30 seconds!', {
size: 100,
fill: 0xFFFFFF
});
challengeText.anchor.set(0.5, 0.5);
challengeText.x = 2048 / 2; // Center horizontally
challengeText.y = 2732 / 2; // Center vertically
LK.gui.top.addChild(challengeText);
// Add a text timer to the bottom middle of the screen
var timerText = new Text2('30', {
size: 100,
fill: 0xFFFFFF
});
timerText.anchor.set(0.5, 0.5);
timerText.x = 2048 / 2; // Center horizontally
timerText.y = 2732 - 100; // Position near the bottom
LK.gui.bottom.addChild(timerText);
// Add a global time variable below the coins if the challenge has started
globalTimeText = new Text2('Time: 30s', {
size: 100,
fill: 0xFFFFFF
});
globalTimeText.anchor.set(0.5, 0);
globalTimeText.x = coinsText.x;
globalTimeText.y = coinsText.y + coinsText.height + 10;
LK.gui.top.addChild(globalTimeText);
// Add a global variable to track wood pieces broken if the challenge has started
woodPiecesBrokenText = new Text2('Wood Broken: 0', {
size: 100,
fill: 0xFFFFFF
});
woodPiecesBrokenText.anchor.set(0.5, 0);
woodPiecesBrokenText.x = coinsText.x;
woodPiecesBrokenText.y = globalTimeText.y + globalTimeText.height + 10;
LK.gui.top.addChild(woodPiecesBrokenText);
// Start a countdown timer
var countdown = 30;
var countdownInterval = LK.setInterval(function () {
countdown--;
timerText.setText(countdown.toString());
globalTimeText.setText('Time: ' + countdown + 's'); // Update global time display
if (countdown <= 0) {
LK.clearInterval(countdownInterval);
if (woodPiecesBroken >= 10) {
// Unlock a new item
unlockedObjects++;
console.log("New item unlocked! Total unlocked items: " + unlockedObjects);
// Display success message
var successText = new Text2('Challenge Completed!', {
size: 100,
fill: 0x00FF00
});
successText.anchor.set(0.5, 0.5);
successText.x = 2048 / 2; // Center horizontally
successText.y = 2732 / 2; // Center vertically
LK.gui.top.addChild(successText);
// Remove the success text after a short delay
LK.setTimeout(function () {
if (successText.parent) {
successText.parent.removeChild(successText);
}
}, 3000); // Display for 3 seconds
} else {
woodPiecesBroken = 0; // Reset wood pieces broken count
if (woodPiecesBrokenText.parent) {
woodPiecesBrokenText.parent.removeChild(woodPiecesBrokenText);
}
if (timerText.parent) {
timerText.parent.removeChild(timerText);
}
if (globalTimeText.parent) {
globalTimeText.parent.removeChild(globalTimeText);
}
// Display failure message
var failureText = new Text2('You failed the challenge!', {
size: 100,
fill: 0xFF0000
});
failureText.anchor.set(0.5, 0.5);
failureText.x = 2048 / 2; // Center horizontally
failureText.y = 2732 / 2; // Center vertically
LK.gui.top.addChild(failureText);
// Remove the failure text after a short delay
LK.setTimeout(function () {
if (failureText.parent) {
failureText.parent.removeChild(failureText);
}
}, 3000); // Display for 3 seconds
challengeActive = false;
// Start cooldown timer if challenge failed
var cooldown = 60;
var cooldownText = new Text2('Retry in: ' + cooldown + 's', {
size: 100,
fill: 0xFF0000
});
cooldownText.anchor.set(0.5, 0.5);
cooldownText.x = 2048 / 2;
cooldownText.y = 2732 - 200;
LK.gui.bottom.addChild(cooldownText);
var cooldownInterval = LK.setInterval(function () {
cooldown--;
cooldownText.setText('Retry in: ' + cooldown + 's');
if (cooldown <= 0) {
LK.clearInterval(cooldownInterval);
if (cooldownText.parent) {
cooldownText.parent.removeChild(cooldownText);
}
}
}, 1000);
}
}
}, 1000);
// Remove the challenge text after a short delay
LK.setTimeout(function () {
if (challengeText.parent) {
challengeText.parent.removeChild(challengeText);
}
}, 3000); // Display for 3 seconds
};
var hpWood = 100; // Initialize the HP of the wooden block
var playerDamage = 10; // Initialize the player's damage to 10
var bg = LK.getAsset('Bg', {
anchorX: 0.0,
anchorY: 0.0,
scaleX: 2048 / 100,
// Scale to fit the screen width
scaleY: 2732 / 98.44 // Scale to fit the screen height
});
// Initialize the rope image
var rope = LK.getAsset('Rope', {
anchorX: 0.0,
anchorY: 0.0,
scaleX: 2048 / 400,
// Scale to full screen width
scaleY: 2732 / 500 // Increase the vertical size of the rope
});
// Add the rope image to the game
game.addChild(rope);
// Initialize the wooden block image
var woodenBlockPosition = {
x: 0,
y: 0
}; // Track the wooden block's position
var woodHp = 225; // Initialize the HP of the wooden block
var metalHp = 500; // Initialize the HP of the metal block
var chairHp = 1600; // Initialize the HP of the chair
var chairLegsHp = 1200; // Initialize the total HP of the chair legs
var woodenBlock = LK.getAsset('Object_1', {
anchorX: 0.1,
anchorY: -2,
scaleX: 5,
scaleY: 5
});
// Position the wooden block further down the rope
woodenBlock.x = rope.x + rope.width / 2;
woodenBlock.y = rope.y + rope.height * 0.95;
// Make the wooden block visible
woodenBlock.alpha = 1;
// Add the wooden block to the game
game.addChild(woodenBlock);
// Initialize the HP bar image
var hpBar = LK.getAsset('Hp_bar', {
anchorX: 0.1,
anchorY: -4,
scaleX: 5,
scaleY: 5
});
// Position the HP bar on top of the wooden block
hpBar.x = woodenBlock.x;
hpBar.y = woodenBlock.y - woodenBlock.height / 2 - hpBar.height;
// Add the HP bar to the game
game.addChild(hpBar);
// Add the character to the game
var character = game.addChild(new Character());
// Add the blue bar to the game
var blueBar = game.addChild(new BlueBar());
blueBar.x = 2048 / 2; // Center horizontally
blueBar.y = 100; // Position near the top
// Update the blue bar transformation on each hit
function updateBlueBarOnHit() {
blueBar.increaseTransformation(1); // Increase transformation by 1% per hit
blueBar.update();
// Check if the blue bar is fully transformed to gray
if (blueBar.transformationPercentage >= 100) {
diamonds += 1; // Award a diamond
diamondsText.setText(diamonds.toString()); // Update diamonds display
blueBar.transformationPercentage = 0; // Reset the blue bar
blueBar.update(); // Update the blue bar to reflect the reset
}
}
// Define currentAssetIndex in the global scope
var playerAssets = ['player_1', 'Player_2', 'Player_3', 'Player_4'];
var currentAssetIndex = 0;
// Add a new variable to track the state of the game
var gameState = "playing";
// Add a variable to display the score at the top of the screen
var playerEnergy = 100; // Initialize the player's energy variable
// Function to recover player energy every second
function recoverEnergy() {
if (playerEnergy < 100) {
playerEnergy += energyRecoveryRate;
energyText.setText(playerEnergy.toString());
}
}
// Set an interval to call recoverEnergy every second
LK.setInterval(recoverEnergy, 1000);
var energyText = new Text2(playerEnergy.toString(), {
size: 150,
fill: 0xFFFFFF
});
energyText.anchor.set(0.5, 0);
LK.gui.top.addChild(energyText);
var hpWoodText = new Text2(hpWood.toString(), {
size: 150,
fill: 0xFFFFFF
});
hpWoodText.anchor.set(0.5, 0);
hpWoodText.y = scoreText.height;
LK.gui.top.addChild(hpWoodText);
var goldButtonBrightness = 0; // Initialize the gold button brightness variable at 0%
var coins = 0; // Initialize the coins variable
var diamonds = 0; // Initialize the diamonds variable
var diamonds = 0; // Initialize the diamonds variable
var diamonds = 0; // Initialize the diamonds variable
var playerEnergy = 100; // Initialize the player's energy variable
var energyRecoveryRate = 5; // Initialize the energy recovery rate to 5
var coinsText = new Text2(coins.toString(), {
size: 150,
fill: 0xFFFFFF
});
coinsText.anchor.set(0.5, 0);
coinsText.y = hpWoodText.height + hpWoodText.y;
LK.gui.top.addChild(coinsText);
var diamondsText = new Text2(diamonds.toString(), {
size: 150,
fill: 0xFFFFFF
});
diamondsText.anchor.set(0.5, 0);
diamondsText.y = coinsText.height + coinsText.y;
LK.gui.top.addChild(diamondsText);
// Initialize the diamond icon image
// Add a click event to the game
game.down = function (x, y, obj) {
// Remove the instructional text when the screen is pressed
if (instructionText.parent) {
instructionText.parent.removeChild(instructionText);
}
if (playerEnergy === 0) {
// Trigger hurt animation
character.removeChildren();
var hurtAnimation = ['player_hurt_hand_1', 'player_hurt_hand_2', 'player_hurt_hand_3'].map(function (asset) {
return character.attachAsset(asset, {
anchorX: 0.85,
anchorY: 0.5,
scaleX: 5,
scaleY: 5,
frameRate: 10 // Set the frame rate for the sprite animation
});
});
hurtAnimation.forEach(function (frame, index) {
LK.setTimeout(function () {
character.removeChildren();
character.addChild(frame);
}, index * 100); // Adjust timing for each frame
});
// After 3 seconds, transition to lifting animation
LK.setTimeout(function () {
character.removeChildren();
var liftingAnimation = ['Player_lifting_1', 'Player_lifting_2'].map(function (asset) {
return character.attachAsset(asset, {
anchorX: 0.85,
anchorY: 0.5,
scaleX: 5,
scaleY: 5,
frameRate: 10 // Set the frame rate for the sprite animation
});
});
liftingAnimation.forEach(function (frame, index) {
LK.setTimeout(function () {
character.removeChildren();
character.addChild(frame);
}, index * 100); // Adjust timing for each frame
});
}, 3000);
return; // Exit the function to prevent further actions
}
// Trigger a character animation sequence
currentAssetIndex = (currentAssetIndex + 1) % playerAssets.length;
character.removeChildren(); // Remove previous animation
var animationSequence = playerAssets.map(function (asset) {
return character.attachAsset(asset, {
anchorX: 0.85,
anchorY: 0.5,
scaleX: 5,
scaleY: 5,
frameRate: 10 // Set the frame rate for the sprite animation
});
});
animationSequence.forEach(function (frame, index) {
LK.setTimeout(function () {
character.removeChildren();
character.addChild(frame);
if (index === animationSequence.length - 1) {
// Deal damage to the wood when the animation ends
var energyConsumption = Math.min(playerEnergy, 10); // Determine energy consumption, max 10
playerEnergy -= energyConsumption; // Reduce player energy
energyText.setText(playerEnergy.toString()); // Update energy display
hpWood -= playerDamage * (energyConsumption / 10); // Adjust damage based on energy consumption
chairHp -= playerDamage * (energyConsumption / 10); // Adjust damage for chair
chairLegsHp -= playerDamage * (energyConsumption / 10); // Adjust damage for chair legs
// Update the blue bar transformation
updateBlueBarOnHit();
// Increase gold button shine by 1% when wood is damaged
goldButton.tint = Math.min(0xFFFFFF, goldButton.tint + 0x010101);
goldButtonBrightness = Math.min(100, goldButtonBrightness + 1); // Increase brightness percentage
updateGoldButtonBrightnessText(); // Update the text display
// Enable gold button click when at maximum brightness
if (goldButton.tint === 0xFFFFFF) {
goldButton.down = function (x, y, obj) {
console.log("Gold button clicked at maximum brightness!");
// Change any item to gold for a few seconds
woodenBlock.tint = 0xFFD700; // Change the wooden block to gold color
LK.setTimeout(function () {
woodenBlock.tint = 0xFFFFFF; // Revert the wooden block color back to normal
}, 3000); // Change lasts for 3 seconds
goldButtonBrightness = 0; // Reset brightness percentage
updateGoldButtonBrightnessText(); // Update the text display
// Reset the gold button brightness to 0% after use
goldButtonBrightness = 0; // Reset brightness percentage
updateGoldButtonBrightnessText(); // Update the text display
};
}
hpWoodText.setText(hpWood.toString());
// Play the hit sound effect
LK.getSound('Hit').play();
if (hpWood <= 0 || chairHp <= 0 || chairLegsHp <= 0) {
// Handle wood breaking logic here
if (challengeActive) {
woodPiecesBroken++;
woodPiecesBrokenText.setText('Wood Broken: ' + woodPiecesBroken);
}
console.log("Wood is broken!");
// Play the break sound effect
LK.getSound('Break').play();
// Reset wood HP
hpWood = 100;
chairHp = 1600; // Reset chair HP
chairLegsHp = 1200; // Reset chair legs HP
hpWoodText.setText(hpWood.toString());
// Reposition the new wooden block
woodenBlock.x = rope.x + rope.width / 2;
woodenBlock.y = rope.y + rope.height * 0.95;
// Add coins when the wood is broken
coins += 10; // Add 10 coins
coinsText.setText(coins.toString());
// Create a text effect for gaining coins
if (!coinGainText) {
coinGainText = new Text2('+10', {
size: 100,
fill: 0xFFFF00 // Yellow color for the coin gain text
});
}
coinGainText.anchor.set(0.5, 0.5);
coinGainText.x = woodenBlock.x + 50; // Move the text effect further to the right
coinGainText.y = woodenBlock.y - woodenBlock.height / 2;
// Add the coin gain text to the game
game.addChild(coinGainText);
// Animate the coin gain text to move upwards and fade out
LK.setTimeout(function () {
// Custom animation to move the text upwards
var startY = coinGainText.y;
var endY = startY - 100;
var duration = 1000;
var startTime = Date.now();
function animateMove() {
var currentTime = Date.now();
var elapsed = currentTime - startTime;
var progress = Math.min(elapsed / duration, 1);
coinGainText.y = startY + (endY - startY) * progress;
if (progress < 1) {
LK.setTimeout(animateMove, 16); // Approximately 60 FPS
}
}
animateMove();
// Custom fade-out animation
var fadeDuration = 1000;
var fadeStartTime = Date.now();
function animateFadeOut() {
var currentTime = Date.now();
var elapsed = currentTime - fadeStartTime;
var fadeProgress = Math.min(elapsed / fadeDuration, 1);
coinGainText.alpha = 1 - fadeProgress;
if (fadeProgress < 1) {
LK.setTimeout(animateFadeOut, 16); // Approximately 60 FPS
} else {
coinGainText.destroy(); // Remove the text after animation
}
}
animateFadeOut();
}, 0);
}
}
}, index * 100); // Adjust timing for each frame
});
};
;
A small piece of wood.
a hanging rope. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
piece_of_wood. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Upgrade button. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Gold_button_icon. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
crown. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
raw piece of wood. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Metal. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Chair. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
create a hand icon breaking a brick in half. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Play_button. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Diamond_icon. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
pixel person with black hair, black pants, black eyes, and blue clothes making a V with hands jumping in a rain of diamonds. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Shop_icon. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows