Code edit (1 edits merged)
Please save this source code
User prompt
примени NewSound при запуске игры и зацикли трек
Code edit (2 edits merged)
Please save this source code
User prompt
сдвинь anvil еще немного влево
User prompt
сдвинь обьект anvil влево
User prompt
отрази фоновую картинку
User prompt
отрази фон
User prompt
зазеркаль фоновую картинку
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'setText')' in or related to this line: 'counterText.setText('Forging skill: ' + self.clickCounter); // Update the text object with the loaded click counter' Line Number: 35
User prompt
Please fix the bug: 'Uncaught ReferenceError: counterText is not defined' in or related to this line: 'counterText.setText('Forging skill: ' + self.clickCounter); // Update the text object with the loaded click counter' Line Number: 35
User prompt
Please fix the bug: 'Uncaught ReferenceError: counterText is not defined' in or related to this line: 'counterText.setText('Forging skill: ' + self.clickCounter); // Update the text object with the loaded click counter' Line Number: 35
User prompt
Please fix the bug: 'Uncaught ReferenceError: counterText is not defined' in or related to this line: 'counterText.setText('Forging skill: ' + self.clickCounter); // Update the text object with the loaded click counter' Line Number: 35
User prompt
Please fix the bug: 'Uncaught ReferenceError: counterText is not defined' in or related to this line: 'counterText.setText('Forging skill: ' + self.clickCounter); // Update the text object with the loaded click counter' Line Number: 35
User prompt
Please fix the bug: 'Uncaught ReferenceError: counterText is not defined' in or related to this line: 'counterText.setText('Forging skill: ' + self.clickCounter); // Update the text object with the loaded click counter' Line Number: 35
User prompt
Please fix the bug: 'Uncaught ReferenceError: counterText is not defined' in or related to this line: 'counterText.setText('Forging skill: ' + self.clickCounter); // Update the text object with the loaded click counter' Line Number: 35
User prompt
Please fix the bug: 'Uncaught ReferenceError: counterText is not defined' in or related to this line: 'counterText.setText('Forging skill: ' + self.clickCounter); // Update the text object with the loaded click counter' Line Number: 35
User prompt
добавь возможность сохранять прогресс счетчика при выходе из игры ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Please fix the bug: 'Uncaught ReferenceError: skillLevelsText is not defined' in or related to this line: 'levelText.x = skillLevelsText.x + xOffset;' Line Number: 156
User prompt
убери текст skill level
User prompt
подними само название skill level на одну строку выше и смести в левую часть экрана, остальной текст пусть останется как есть
Code edit (1 edits merged)
Please save this source code
User prompt
подними только одну надпись slill level на одну строку выше и смести ее в левую часть экрана
User prompt
смести надписи student. Аpprentice. (Master. GrandMaster. Legend на одну строку ниже
User prompt
смести надписи skill level в крайнюю левую часть экрана
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Create a new class for the anvil object var Anvil = Container.expand(function () { var self = Container.call(this); // Attach 'anvil' asset to the 'Anvil' object var anvilGraphics = self.attachAsset('anvil', { anchorX: 0.5, anchorY: 0.5, alpha: 0.0 // Set transparency to 100% }); // Initialize the click counter self.clickCounter = 0; // Make the 'Anvil' object interactive self.interactive = true; // Define the 'down' event handler self.down = function (x, y, obj) { // Increment the click counter self.clickCounter++; // Update the text object with the click counter and label counterText.setText('Forging skill: ' + self.clickCounter); // Change the color of the counter text based on the click counter if (self.clickCounter >= 100 && self.clickCounter < 200) { counterText.tint = 0x00FF00; // Green } else if (self.clickCounter >= 200 && self.clickCounter < 300) { counterText.tint = 0x0000FF; // Blue } else if (self.clickCounter >= 300 && self.clickCounter < 10000) { counterText.tint = 0x800080; // Purple } else if (self.clickCounter >= 10000 && self.clickCounter < 20000) { counterText.tint = 0xFFA500; // Orange } else if (self.clickCounter >= 20000) { counterText.tint = 0xFF0000; // Red } }; }); /**** * Initialize Game ****/ // Create a new text object to display the click counter var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ var growthRateText; var background = game.addChild(new Container()); background.width = 2048; background.height = 2732; background.x = 2048 / 2; background.y = 2732 / 2; var backgroundGraphics = background.attachAsset('background', { anchorX: 0.5, anchorY: 0.5 }); var gameScreen; var newGame = game.addChild(new Container()); newGame.x = 2048 / 2; newGame.y = 2732 * 3 / 4 + 300; // Move the 'New Game' button 300 pixels below its original position // Attach 'newGameText' asset to the 'New Game' object var newGameText = newGame.attachAsset('newGameText', { anchorX: 0.5, anchorY: 0.5, stroke: 0xFFFFFF, // White color strokeThickness: 5 // 5px thickness }); // Make the 'New Game' object clickable newGame.interactive = true; newGame.down = function (x, y, obj) { hammer.destroy(); // Create a new game screen gameScreen = game.addChild(new Container()); gameScreen.x = 2048 / 2; gameScreen.y = 2732 / 2; // Attach 'gameScreenBackground' asset to the 'gameScreen' object var gameScreenBackground = gameScreen.attachAsset('gameScreenBackground', { anchorX: 0.5, anchorY: 0.5 }); // Hide the main menu newGame.visible = false; // Disable the background background.visible = false; // Create a new instance of the Anvil class var anvil = gameScreen.addChild(new Anvil()); // Position 'The anvil' closer to the left center of the game screen anvil.x = 2048 / 10; anvil.y = 2732 / 9; hammer = game.addChild(LK.getAsset('hammer', { anchorX: 0.5, anchorY: 0.5, scaleX: -1 })); // Create a new text object to display the click counter on the anvil screen counterText = new Text2('Forging skill: 0', { size: 100, fill: 0xFFFFFF }); counterText.anchor.set(0.5, 1); counterText.y = gameScreenBackground.y - gameScreenBackground.height / 2 - 50; // Position above the background gameScreen.addChild(counterText); // Create a new text object to display skill levels below the background var skillLevelsText = new Text2('Skill level: ', { size: 50, fill: 0xFFFFFF }); skillLevelsText.anchor.set(0.5, 0); skillLevelsText.y = gameScreenBackground.y + gameScreenBackground.height / 2 + 20; // Position below the background gameScreen.addChild(skillLevelsText); // Add skill level labels with different colors var skillLevels = [{ text: 'Student', color: 0x00FF00 }, // Green { text: 'Apprentice', color: 0x0000FF }, // Blue { text: 'Master', color: 0x800080 }, // Purple { text: 'GrandMaster', color: 0xFFA500 }, // Orange { text: 'Legend', color: 0xFF0000 } // Red ]; var xOffset = -gameScreenBackground.width / 2 + 20; skillLevels.forEach(function (level) { var levelText = new Text2(level.text, { size: 50, fill: level.color }); levelText.anchor.set(0, 0); levelText.x = skillLevelsText.x + xOffset; levelText.y = skillLevelsText.y; gameScreen.addChild(levelText); xOffset += levelText.width + 20; // Add space between labels }); }; // Initialize hammer asset var hammer; hammer = game.addChild(LK.getAsset('hammer', { anchorX: 0.5, anchorY: 0.5, scaleX: -1 })); // Function to make the hammer follow the mouse/touch position function updateHammerPosition(x, y) { if (hammer) { hammer.x = x; hammer.y = y; } } // Make the cursor follow the mouse/touch position game.move = function (x, y, obj) { updateHammerPosition(x, y); }; // Animate cursor rotation on click game.down = function (x, y, obj) { LK.getSound('hammer').play(); tween(hammer, { rotation: -Math.PI / 2 }, { duration: 125, easing: tween.easeInOut, onFinish: function onFinish() { // Create stars around the hammer for 0.25 seconds for (var i = 0; i < 5; i++) { var star = game.addChild(LK.getAsset('star', { anchorX: 0.5, anchorY: 0.5 })); star.x = hammer.x - hammer.width / 2 + Math.random() * 100 - 25; star.y = hammer.y + hammer.height / 2 + Math.random() * 100 - 25; (function (star) { // Randomize the direction and speed of the star var angle = Math.random() * Math.PI * 2; // Random angle in radians var speed = Math.random() * 5 + 2; // Random speed between 2 and 7 // Make the star move in the randomized direction star.update = function () { star.x += Math.cos(angle) * speed; star.y += Math.sin(angle) * speed; }; LK.setTimeout(function () { star.destroy(); }, 250); })(star); } tween(hammer, { rotation: 0 }, { duration: 125, easing: tween.easeInOut }); } }); };
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
// Create a new class for the anvil object
var Anvil = Container.expand(function () {
var self = Container.call(this);
// Attach 'anvil' asset to the 'Anvil' object
var anvilGraphics = self.attachAsset('anvil', {
anchorX: 0.5,
anchorY: 0.5,
alpha: 0.0 // Set transparency to 100%
});
// Initialize the click counter
self.clickCounter = 0;
// Make the 'Anvil' object interactive
self.interactive = true;
// Define the 'down' event handler
self.down = function (x, y, obj) {
// Increment the click counter
self.clickCounter++;
// Update the text object with the click counter and label
counterText.setText('Forging skill: ' + self.clickCounter);
// Change the color of the counter text based on the click counter
if (self.clickCounter >= 100 && self.clickCounter < 200) {
counterText.tint = 0x00FF00; // Green
} else if (self.clickCounter >= 200 && self.clickCounter < 300) {
counterText.tint = 0x0000FF; // Blue
} else if (self.clickCounter >= 300 && self.clickCounter < 10000) {
counterText.tint = 0x800080; // Purple
} else if (self.clickCounter >= 10000 && self.clickCounter < 20000) {
counterText.tint = 0xFFA500; // Orange
} else if (self.clickCounter >= 20000) {
counterText.tint = 0xFF0000; // Red
}
};
});
/****
* Initialize Game
****/
// Create a new text object to display the click counter
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
var growthRateText;
var background = game.addChild(new Container());
background.width = 2048;
background.height = 2732;
background.x = 2048 / 2;
background.y = 2732 / 2;
var backgroundGraphics = background.attachAsset('background', {
anchorX: 0.5,
anchorY: 0.5
});
var gameScreen;
var newGame = game.addChild(new Container());
newGame.x = 2048 / 2;
newGame.y = 2732 * 3 / 4 + 300; // Move the 'New Game' button 300 pixels below its original position
// Attach 'newGameText' asset to the 'New Game' object
var newGameText = newGame.attachAsset('newGameText', {
anchorX: 0.5,
anchorY: 0.5,
stroke: 0xFFFFFF,
// White color
strokeThickness: 5 // 5px thickness
});
// Make the 'New Game' object clickable
newGame.interactive = true;
newGame.down = function (x, y, obj) {
hammer.destroy();
// Create a new game screen
gameScreen = game.addChild(new Container());
gameScreen.x = 2048 / 2;
gameScreen.y = 2732 / 2;
// Attach 'gameScreenBackground' asset to the 'gameScreen' object
var gameScreenBackground = gameScreen.attachAsset('gameScreenBackground', {
anchorX: 0.5,
anchorY: 0.5
});
// Hide the main menu
newGame.visible = false;
// Disable the background
background.visible = false;
// Create a new instance of the Anvil class
var anvil = gameScreen.addChild(new Anvil());
// Position 'The anvil' closer to the left center of the game screen
anvil.x = 2048 / 10;
anvil.y = 2732 / 9;
hammer = game.addChild(LK.getAsset('hammer', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: -1
}));
// Create a new text object to display the click counter on the anvil screen
counterText = new Text2('Forging skill: 0', {
size: 100,
fill: 0xFFFFFF
});
counterText.anchor.set(0.5, 1);
counterText.y = gameScreenBackground.y - gameScreenBackground.height / 2 - 50; // Position above the background
gameScreen.addChild(counterText);
// Create a new text object to display skill levels below the background
var skillLevelsText = new Text2('Skill level: ', {
size: 50,
fill: 0xFFFFFF
});
skillLevelsText.anchor.set(0.5, 0);
skillLevelsText.y = gameScreenBackground.y + gameScreenBackground.height / 2 + 20; // Position below the background
gameScreen.addChild(skillLevelsText);
// Add skill level labels with different colors
var skillLevels = [{
text: 'Student',
color: 0x00FF00
},
// Green
{
text: 'Apprentice',
color: 0x0000FF
},
// Blue
{
text: 'Master',
color: 0x800080
},
// Purple
{
text: 'GrandMaster',
color: 0xFFA500
},
// Orange
{
text: 'Legend',
color: 0xFF0000
} // Red
];
var xOffset = -gameScreenBackground.width / 2 + 20;
skillLevels.forEach(function (level) {
var levelText = new Text2(level.text, {
size: 50,
fill: level.color
});
levelText.anchor.set(0, 0);
levelText.x = skillLevelsText.x + xOffset;
levelText.y = skillLevelsText.y;
gameScreen.addChild(levelText);
xOffset += levelText.width + 20; // Add space between labels
});
};
// Initialize hammer asset
var hammer;
hammer = game.addChild(LK.getAsset('hammer', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: -1
}));
// Function to make the hammer follow the mouse/touch position
function updateHammerPosition(x, y) {
if (hammer) {
hammer.x = x;
hammer.y = y;
}
}
// Make the cursor follow the mouse/touch position
game.move = function (x, y, obj) {
updateHammerPosition(x, y);
};
// Animate cursor rotation on click
game.down = function (x, y, obj) {
LK.getSound('hammer').play();
tween(hammer, {
rotation: -Math.PI / 2
}, {
duration: 125,
easing: tween.easeInOut,
onFinish: function onFinish() {
// Create stars around the hammer for 0.25 seconds
for (var i = 0; i < 5; i++) {
var star = game.addChild(LK.getAsset('star', {
anchorX: 0.5,
anchorY: 0.5
}));
star.x = hammer.x - hammer.width / 2 + Math.random() * 100 - 25;
star.y = hammer.y + hammer.height / 2 + Math.random() * 100 - 25;
(function (star) {
// Randomize the direction and speed of the star
var angle = Math.random() * Math.PI * 2; // Random angle in radians
var speed = Math.random() * 5 + 2; // Random speed between 2 and 7
// Make the star move in the randomized direction
star.update = function () {
star.x += Math.cos(angle) * speed;
star.y += Math.sin(angle) * speed;
};
LK.setTimeout(function () {
star.destroy();
}, 250);
})(star);
}
tween(hammer, {
rotation: 0
}, {
duration: 125,
easing: tween.easeInOut
});
}
});
};