User prompt
Add a second value to the stats Screen which is supposed to Show the clicks Made in total. This counts for Auto clicks and also manuell clicks and is doesnt get reset when prestiged
User prompt
Bewege den stats Button ein kleines Stück nach rechts zu einem Drittel der Bildschirmbreite
User prompt
Bewege die Stats ein bisschen nach rechts
User prompt
Change Position of the stats Button and the information for the necessary Points to Prestige
User prompt
Fix the stats screen
User prompt
Multiplayer the click value Display by 1% for each Prestige Point
User prompt
Increase the shown value in the statistics Screen by 1% for each current Prestige Point and Display it
User prompt
Multiplayer the shown value in the statistics Screen with the current Prestige value and Display it
User prompt
Update the statistics Screen also after Prestige Button is clicked so the click value gets resetted too
User prompt
Position the statistics Screen above the Prestige Count
User prompt
Position the statistics Screen in Front of everything
User prompt
Fix Bug: 'Uncaught ReferenceError: clickValueDisplay is not defined' in this line: 'clickValueDisplay.x = self.width / 2;' Line Number: 37
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'updateClickValue')' in this line: 'statisticsScreen.clickValueDisplay.updateClickValue(clickValue); // Update the click value display in the statistics screen' Line Number: 132
User prompt
Make IT so IT Displays and Updates the current click value in the statistics Screen
User prompt
Display the current click value in the statistics Screen
User prompt
Position the statistics Button in the top left Corner
User prompt
Make the statistics Screen full width and height
User prompt
Position the statistics Screen in the middle of the Screen
User prompt
Make the statistics Screen max Screen size
User prompt
Create a Button which Shows a toggleble statistics Screen. The Screen should be full width an height
User prompt
Fix Bug: 'TypeError: game.showStatisticsScreen is not a function' in this line: 'game.showStatisticsScreen();' Line Number: 19
User prompt
Create a Button that opens a statistics Screen when clicked.
User prompt
The statistics Button does Not Work fix it
User prompt
Create a statistics Button in the top left Corner which opens a full width Screen where i can Display the following values: total click Count, total Muffin Count, Muffins per second and Muffins per click
User prompt
Make the statistics Screen full width and height.
/****
* Classes
****/
var ClickValueDisplay = Container.expand(function () {
var self = Container.call(this);
var clickValueText = new Text2(clickValue.toString(), {
size: 100,
fill: "#ffffff"
});
clickValueText.anchor.set(0.5, 0); // Center the click value text
self.addChild(clickValueText);
// Function to update the click value display
self.updateClickValue = function (newValue) {
clickValueText.setText(Math.floor(newValue).toString());
};
});
var StatsButton = Container.expand(function () {
var self = Container.call(this);
var buttonGraphics = self.createAsset('statsButton', 'Button to show statistics', 0.5, 0.5);
self.interactive = true; // Make the button clickable
// Function to handle the click on the button
self.on('down', function () {
statisticsScreen.toggleVisibility(); // Toggle the visibility of the statistics screen
});
});
var StatisticsScreen = Container.expand(function () {
var self = Container.call(this);
self.width = 2048; // Full width of the game screen
self.height = 2732; // Full height of the game screen
var background = self.createAsset('statsBackground', 'Statistics screen background', 0.5, 0.5);
self.x = game.width / 2;
self.y = game.height / 2;
self.visible = false; // Initially hidden
var clickValueDisplay = new ClickValueDisplay();
self.addChild(clickValueDisplay);
// Position the click value display within the statistics screen
clickValueDisplay.x = self.width / 2;
clickValueDisplay.y = 200; // Position below the top edge of the statistics screen
// Function to toggle the visibility of the statistics screen
self.toggleVisibility = function () {
self.visible = !self.visible;
};
});
var PrestigeScoreDisplay = Container.expand(function () {
var self = Container.call(this);
var prestigeScoreText = new Text2(prestigeSystem.requiredPrestigeScore.toString(), {
size: 100,
fill: "#ffffff"
});
prestigeScoreText.anchor.set(1, 0); // Anchor to the top right
self.addChild(prestigeScoreText);
// Function to update the prestige score display
self.updatePrestigeScore = function (newScore) {
prestigeScoreText.setText(Math.floor(newScore).toString());
};
});
// PrestigeButton class to represent the button for activating prestige
var PrestigeButton = Container.expand(function () {
var self = Container.call(this);
var buttonGraphics = self.createAsset('prestigeButton', 'Prestige activation button', 0.5, 0.5);
self.interactive = true; // Make the button clickable
// Function to handle the click on the button
self.click = function () {
prestigeSystem.prestige();
scoreDisplay.updateScore(score); // Update the score display after prestige
};
// Add event listener for clicks/taps
self.on('down', function () {
self.click();
});
});
// Auto Click Upgrade Button class to represent the button for upgrading auto clicks
var AutoClickUpgradeButton = Container.expand(function () {
var self = Container.call(this);
var buttonGraphics = self.createAsset('autoClickUpgradeButton', 'Upgrade button for auto click', 0.5, 0.5);
this.autoClickUpgradePrice = 50; // Initial price for auto click upgrade
var priceTag = new Text2(this.autoClickUpgradePrice.toString(), {
size: 100,
fill: "#ffffff"
});
priceTag.anchor.set(0.5, 0);
priceTag.y = -buttonGraphics.height / 2 - 20;
self.addChild(priceTag);
self.interactive = true; // Make the button clickable
// Function to handle the click on the button
self.click = function () {
if (score >= this.autoClickUpgradePrice) {
// Check if the player has enough score to purchase the upgrade
score -= this.autoClickUpgradePrice; // Deduct the cost of the upgrade
this.autoClickUpgradePrice *= 2; // Double the price for the next upgrade
autoClickValue += 1; // Increase the auto click value
scoreDisplay.updateScore(score); // Update the score display
priceTag.setText(Math.floor(this.autoClickUpgradePrice).toString()); // Update the price display
// Start auto clicker if not already started and there is at least one auto click
if (autoClickValue > 0 && !game.autoClicker) {
game.autoClicker = LK.setInterval(function () {
game.incrementScore(autoClickValue);
}, 1000);
}
}
};
// Add event listener for clicks/taps
self.on('down', function () {
self.click();
});
});
// Click Upgrade Button class to represent the button for upgrading click value
var ClickUpgradeButton = Container.expand(function () {
var self = Container.call(this);
self.updatePriceTag = function () {
priceTag.setText(Math.floor(this.clickUpgradePrice).toString());
};
var buttonGraphics = self.createAsset('clickUpgradeButton', 'Upgrade button for +1 click', 0.5, 0.5);
this.clickUpgradePrice = 20; // Initial price for click upgrade
var priceTag = new Text2(this.clickUpgradePrice.toString(), {
size: 100,
fill: "#ffffff"
});
priceTag.anchor.set(0.5, 0);
priceTag.y = -buttonGraphics.height / 2 - 20;
self.addChild(priceTag);
self.interactive = true; // Make the button clickable
// Function to handle the click on the button
self.click = function () {
if (score >= this.clickUpgradePrice) {
// Check if the player has enough score to purchase the upgrade
score -= this.clickUpgradePrice; // Deduct the cost of the upgrade
this.clickUpgradePrice *= 2; // Double the price for the next upgrade
clickValue += 1; // Increase the click value
scoreDisplay.updateScore(score); // Update the score display
priceTag.setText(this.clickUpgradePrice.toString()); // Update the price display
statisticsScreen.clickValueDisplay.updateClickValue(clickValue); // Update the click value display in the statistics screen
}
};
// Add event listener for clicks/taps
self.on('down', function () {
self.click();
});
});
// Background class to represent the game background asset
var Background = Container.expand(function () {
var self = Container.call(this);
var backgroundGraphics = self.createAsset('background', 'Game background', 0.5, 0.5);
self.width = 2048; // Full width of the game screen
self.height = 2732; // Full height of the game screen
// Position the background in the center of the screen
self.x = 2048 / 2;
self.y = 2732 / 2;
});
// Muffin class to represent the main clickable muffin
var Muffin = Container.expand(function () {
var self = Container.call(this);
var muffinGraphics = self.createAsset('muffin', 'Main clickable muffin', 0.5, 0.5);
self.interactive = true; // Make the muffin clickable
// Function to handle the click on the muffin
self.click = function () {
game.incrementScore(Math.floor(clickValue * (1 + 0.01 * prestigeSystem.prestigePoints)));
var fallingMuffin = new FallingMuffin();
// Set the y position to spawn further down from the top of the screen
fallingMuffin.y = -muffinGraphics.height / 2;
game.addChild(fallingMuffin);
if (!game.fallingMuffins) {
game.fallingMuffins = [];
}
game.fallingMuffins.push(fallingMuffin);
};
// Add event listener for clicks/taps
self.on('down', function () {
self.click();
});
});
// ScoreDisplay class to show the current score
var ScoreDisplay = Container.expand(function () {
var self = Container.call(this);
var scoreText = new Text2('0', {
size: 150,
fill: "#ffffff"
});
scoreText.anchor.set(0.5, 0); // Center the score text
self.addChild(scoreText);
// Function to update the score display
self.updateScore = function (newScore) {
scoreText.setText(Math.floor(newScore).toString());
};
});
var Prestige = Container.expand(function () {
var self = Container.call(this);
self.prestigePoints = 0;
self.requiredPrestigeScore = 100; // Initial score required to prestige
var prestigeDisplay = new Text2('Prestige Points: 0', {
size: 100,
fill: "#ffffff"
});
prestigeDisplay.anchor.set(2, 0);
prestigeDisplay.y = -100; // Position above the score display
self.addChild(prestigeDisplay);
// Function to update the prestige display
self.updatePrestige = function (points) {
self.prestigePoints = points;
prestigeDisplay.setText('Prestige Points: ' + Math.floor(points).toString());
};
// Function to handle prestige
self.prestige = function () {
if (score >= self.requiredPrestigeScore) {
// Dynamic threshold for prestige based on a factor
self.prestigePoints += Math.floor(score / 100);
score = 0; // Reset score
clickValue = 1; // Reset click value to default
clickUpgradeButton.clickUpgradePrice = 20; // Reset the cost of click upgrade to its initial value
// Update the click upgrade button's price display
clickUpgradeButton.updatePriceTag();
// Reset the cost of click upgrade to its initial value
clickUpgradeButton.clickUpgradePrice = 20;
autoClickUpgradeButton.autoClickUpgradePrice = 50; // Reset auto click upgrade cost to initial value
self.requiredPrestigeScore *= 1.5; // Increase the required score for the next prestige
prestigeScoreDisplay.updatePrestigeScore(self.requiredPrestigeScore); // Update the required prestige score display
scoreDisplay.updateScore(score); // Update the score display
self.updatePrestige(self.prestigePoints); // Update the prestige display
}
};
});
var FallingMuffin = Container.expand(function () {
var self = Container.call(this);
var muffinGraphics = self.createAsset('smallMuffin', 'Falling muffin', 0.5, 0.5);
self.speed = 5;
// Set a random x position when the muffin is created
self.x = Math.random() * 2048;
// Start above the visible area
self.y = -muffinGraphics.height * 2;
self.move = function () {
self.y += self.speed;
self.alpha -= 0.005;
if (self.y > 2732) {
self.destroy();
}
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 // Init game with black background
});
/****
* Game Code
****/
var background = game.addChild(new Background());
// Initialize important asset arrays and game variables
var score = 0;
var clickValue = 1; // Default click value
var autoClickValue = 0; // Default auto click value per second
game.fallingMuffins = [];
var muffin = game.addChild(new Muffin());
var scoreDisplay = LK.gui.top.addChild(new ScoreDisplay());
// Position the muffin in the center of the screen
muffin.x = 2048 / 2;
muffin.y = 2732 / 2;
var prestigeSystem = game.addChild(new Prestige());
var prestigeScoreDisplay = LK.gui.topRight.addChild(new PrestigeScoreDisplay());
prestigeSystem.x = 2048 / 2; // Center the prestige display
prestigeSystem.y = LK.gui.top.height + scoreDisplay.height + 50; // Position below the score display, accounting for its height
LK.gui.top.addChild(prestigeSystem);
// Create and position the upgrade buttons
var clickUpgradeButton = game.addChild(new ClickUpgradeButton());
// Create and position the prestige button
var prestigeButton = game.addChild(new PrestigeButton());
prestigeButton.x = 2048 / 2; // Center the prestige button horizontally
prestigeButton.y = muffin.y + muffin.height / 2 + prestigeButton.height / 2 + 250; // Position below the muffin container
clickUpgradeButton.x = 2048 / 3; // Position at bottom center-left and move a little to the left
clickUpgradeButton.y = 2732 - clickUpgradeButton.height / 2; // Position at the bottom with half height margin
var autoClickUpgradeButton = game.addChild(new AutoClickUpgradeButton());
autoClickUpgradeButton.x = 2048 * (2 / 3); // Position at bottom center-right and move a little to the right
autoClickUpgradeButton.y = 2732 - autoClickUpgradeButton.height / 2; // Position at the bottom with half height margin
// Game logic functions
game.incrementScore = function (value) {
score += value; // Increment the score by the value parameter
scoreDisplay.updateScore(score); // Update the score display
};
// Main game loop
LK.on('tick', function () {
// Game logic that needs to be executed every frame
for (var i = game.fallingMuffins.length - 1; i >= 0; i--) {
game.fallingMuffins[i].move();
if (game.fallingMuffins[i].alpha <= 0) {
game.fallingMuffins.splice(i, 1);
}
}
});
// Start the game with the muffin and score display initialized
// The score is already initialized to 0, so no need to increment it here.
var statisticsScreen = game.addChild(new StatisticsScreen());
var statsButton = game.addChild(new StatsButton());
// Position the stats button at the top left corner
statsButton.x = statsButton.width / 2;
statsButton.y = statsButton.height / 2; ===================================================================
--- original.js
+++ change.js
@@ -1,7 +1,20 @@
/****
* Classes
****/
+var ClickValueDisplay = Container.expand(function () {
+ var self = Container.call(this);
+ var clickValueText = new Text2(clickValue.toString(), {
+ size: 100,
+ fill: "#ffffff"
+ });
+ clickValueText.anchor.set(0.5, 0); // Center the click value text
+ self.addChild(clickValueText);
+ // Function to update the click value display
+ self.updateClickValue = function (newValue) {
+ clickValueText.setText(Math.floor(newValue).toString());
+ };
+});
var StatsButton = Container.expand(function () {
var self = Container.call(this);
var buttonGraphics = self.createAsset('statsButton', 'Button to show statistics', 0.5, 0.5);
self.interactive = true; // Make the button clickable
@@ -17,20 +30,13 @@
var background = self.createAsset('statsBackground', 'Statistics screen background', 0.5, 0.5);
self.x = game.width / 2;
self.y = game.height / 2;
self.visible = false; // Initially hidden
- // Display for the current click value
- var clickValueDisplay = new Text2('Click Value: ' + clickValue.toString(), {
- size: 100,
- fill: "#ffffff"
- });
- clickValueDisplay.anchor.set(0.5, 0);
- clickValueDisplay.y = background.height / 2 + 100; // Position below the background center
+ var clickValueDisplay = new ClickValueDisplay();
self.addChild(clickValueDisplay);
- // Function to update the click value display
- self.updateClickValueDisplay = function (newValue) {
- clickValueDisplay.setText('Click Value: ' + newValue.toString());
- };
+ // Position the click value display within the statistics screen
+ clickValueDisplay.x = self.width / 2;
+ clickValueDisplay.y = 200; // Position below the top edge of the statistics screen
// Function to toggle the visibility of the statistics screen
self.toggleVisibility = function () {
self.visible = !self.visible;
};
@@ -122,8 +128,9 @@
this.clickUpgradePrice *= 2; // Double the price for the next upgrade
clickValue += 1; // Increase the click value
scoreDisplay.updateScore(score); // Update the score display
priceTag.setText(this.clickUpgradePrice.toString()); // Update the price display
+ statisticsScreen.clickValueDisplay.updateClickValue(clickValue); // Update the click value display in the statistics screen
}
};
// Add event listener for clicks/taps
self.on('down', function () {
Imple 2d Muffin, flat. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Cute simple 2d Muffin bakery shop from inside. 2d. High contrast. No shadows. Clicker background asset, Flat, few details, few colors
Glitter on muffin
create a muffin with a rocket. muffin goes to the moon. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Create a Button with a Diagramm consiting of 4 Bars in the Background and a Muffin in the forthground. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Stop watch with a big +1 sign. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Simple round start Button with big Play/start Symbol. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.