User prompt
instead of 1 initial energy recovery, put 5
User prompt
energy recovery is still the same
User prompt
upgrade 2 is not doing anything
User prompt
Upgrade 3:(energy_max_button_icon) increases energy limit +10
User prompt
add the gold button in the middle right of the screen
User prompt
The gold button starts gray
User prompt
from the moment it damages wood, 1% of the gold button regains its shine from damage to wood or any other object
User prompt
Pode ser infinito de vida para o ouro também.
User prompt
when the button is at maximum brightness, it can be clicked
User prompt
When you press the button with maximum brightness, any item is changed to gold (object) for a few seconds, because when the button is activated, it loses brightness little by little
User prompt
move the gold button further to the left
User prompt
Não dá pra saber. Então coloque uma variável de brilho que começa de 0%.
User prompt
Coloque a variável global em cima do botão de ouro.
User prompt
Coloque a variável como texto.
User prompt
Add bgmusic
User prompt
make the gold button does not disappear after use
User prompt
Add asset crown in top of screen
User prompt
Add asset crown in top right of screen
User prompt
position the golden button so it is below the crown
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'x')' in or related to this line: 'goldButton.x = crown.x - crown.width / 2; // Align horizontally with the crown' Line Number: 282
User prompt
It is below the crown! Do not overlap the button on the crown
Code edit (4 edits merged)
Please save this source code
User prompt
then just add the text
User prompt
place the text in the middle of the screen, and press the screen to remove the text
User prompt
When you press the crown, a text appears: "break 10 pieces of wood in 30 seconds!"
/****
* Classes
****/
//<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
****/
// Initialize the upgrade button image
var upgradeButton = LK.getAsset('Upgrade_button', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2,
scaleY: 2
});
// Position the upgrade button at the bottom left of the screen
upgradeButton.x = upgradeButton.width / 2;
upgradeButton.y = 2732 - upgradeButton.height / 2;
// 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!");
// Open the upgrade panel
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);
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
// Add a click event to the game
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 = 100; // Initialize the HP of the wooden block
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());
// 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 += 1;
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 coins = 0; // Initialize the coins 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);
// Add a click event to the game
game.down = function (x, y, obj) {
// Check if player energy is 0
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
hpWoodText.setText(hpWood.toString());
// Play the hit sound effect
LK.getSound('Hit').play();
if (hpWood <= 0) {
// Handle wood breaking logic here
console.log("Wood is broken!");
// Play the break sound effect
LK.getSound('Break').play();
// Reset wood HP
hpWood = 100;
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