User prompt
ajouter ça au score bien sur
User prompt
au chargement, calculer le nombre de clicks depuis la dernière fois
User prompt
à chaque fois que le score est sauvegardé, sauvegarder aussi l'horodatage
Code edit (1 edits merged)
Please save this source code
User prompt
sauvegarde égalament le prix des upgrades et de l'auto-clicker et recharge-les au démarrage
User prompt
sauvegarde aussi le prix d'achat courant des upgrades et de l'autoclicker
User prompt
encore plus haut et réduit le nombre de confettis
User prompt
encore plus haut. et réduit le nombre de gateaux
User prompt
fait partir les confettis plus vers le haut
User prompt
Maintenant ajoute des confettis composés de l'image newCakePurchase , seulement quand on click sur le bigCake. Ils doivent partir vers le haut et dans une direction aléatoire puis retomber par gravité mais pas trop vite.
User prompt
ajoute des confettis composé de l'image newCakePurchase quand on click sur le bigCake. Ils doivent partir vers le haut et dans une direction aléatoire puis retomber par gravité
User prompt
ajoute dropshadow au text du score
User prompt
agrandi le text du score
User prompt
agrandis le score
User prompt
Si le joueur avait un auto-clicker sauvegardé, au chargement lance le l'auto-click
Code edit (2 edits merged)
Please save this source code
User prompt
Please fix the bug: 'autoClicker is undefined' in or related to this line: 'autoClicker.autoClickerCount = storage.autoClickerCount || 0; // Load saved auto clicker count or default to 0' Line Number: 320
Code edit (1 edits merged)
Please save this source code
User prompt
Rafraîchit le score après l’avoir chargé la première fois
User prompt
Please fix the bug: 'undefined is not an object (evaluating 'upgrade.multiplier = storage.upgradeMultiplier || 1')' in or related to this line: 'upgrade.multiplier = storage.upgradeMultiplier || 1; // Load saved upgrade multiplier or default to 1' Line Number: 321
User prompt
Please fix the bug: 'undefined is not an object (evaluating 'autoClicker.autoClickerCount = storage.autoClickerCount || 0')' in or related to this line: 'autoClicker.autoClickerCount = storage.autoClickerCount || 0; // Load saved auto clicker count or default to 0' Line Number: 319
User prompt
Sauvegarde les scores et les achats du joueur et recharge les au démarrage ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
fait avancer auto clicker de 1 en 1 s'il te plait . merci
User prompt
répare l'auto-clicker s'il te plait. merci
User prompt
le bouton auto clicker doit avancer de 1 en 1
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1", {
score: 0,
autoClickerCount: 0,
upgradeMultiplier: 1
});
/****
* Classes
****/
// AutoClicker class
var AutoClicker = Container.expand(function () {
var self = Container.call(this);
self.startAutoClicking = function () {
self.autoClickerInterval = LK.setInterval(function () {
if (self.autoClickerCount > 0) {
bigCake.emit('down'); // Trigger the 'down' event on bigCake to simulate a click
}
}, 1000);
};
var autoClickerGraphics = self.attachAsset('autoClicker', {
anchorX: 0.5,
anchorY: 0.5
});
self.cost = 100; // Initial cost of the auto clicker
self.autoClickerCount = 0;
self.onClick = function () {
if (currentScore >= self.cost) {
currentScore -= self.cost; // Deduct the cost from the current score
score.updateScore(currentScore); // Update the score display
self.autoClickerCount += 1; // Increase the number of auto clickers
storage.autoClickerCount = self.autoClickerCount; // Save the updated auto clicker count
if (self.autoClickerCount === 1) {
self.startAutoClicking(); // Start auto clicking only when the first auto clicker is purchased
}
self.cost *= 3; // Triple the cost for the next auto clicker
storage.autoClickerCost = self.cost; // Save the updated auto clicker cost
autoClickerText.setText('Auto Clicker: $' + self.cost); // Update the auto clicker text
autoClickerText.fill = currentScore >= self.cost ? 0x00FF00 : 0xFF0000; // Update text color based on affordability
autoClickerGraphics.alpha = 1; // Always fully opaque
} else {
tween(self, {
alpha: 0.2
}, {
duration: 100,
easing: tween.easeInOut,
onFinish: function onFinish() {
tween(self, {
alpha: 1
}, {
duration: 100,
easing: tween.easeInOut,
onFinish: function onFinish() {
tween(self, {
alpha: 0.2
}, {
duration: 100,
easing: tween.easeInOut,
onFinish: function onFinish() {
tween(self, {
alpha: 1
}, {
duration: 100,
easing: tween.easeInOut
});
}
});
}
});
}
});
autoClickerText.fill = currentScore >= self.cost ? 0x00FF00 : 0xFF0000; // Update text color based on affordability
LK.getSound('errorsond').play(); // Play error sound
}
};
});
// BigCake class
var BigCake = Container.expand(function () {
var self = Container.call(this);
var bigCakeGraphics = self.attachAsset('bigCake', {
anchorX: 0.5,
anchorY: 0.5
});
self.on('down', function (x, y, obj) {
// Create confetti effect
for (var i = 0; i < 5; i++) {
// Reduced number of confetti
var confetti = game.addChild(new Confetti());
confetti.x = self.x;
confetti.y = self.y;
confetti.speedY = -15; // Increased initial upward speed
}
LK.getSound('clickSound').play();
currentScore += upgrade.multiplier; // Increment score by the upgrade multiplier per click
score.updateScore(currentScore);
storage.score = currentScore; // Save the updated score
// Add a bump animation
tween(self, {
scaleX: 1.2,
scaleY: 1.2
}, {
duration: 200,
easing: tween.easeOut,
onFinish: function onFinish() {
tween(self, {
scaleX: 1,
scaleY: 1
}, {
duration: 200,
easing: tween.easeIn
});
}
});
// Removed the creation of falling cakes
});
});
var Cake = Container.expand(function () {
var self = Container.call(this);
var cakeGraphics = self.attachAsset('cake', {
anchorX: 0.5,
anchorY: 0.5
});
// Add a growing and shrinking animation for a relaxing effect
tween(self, {
scaleX: 1.1,
scaleY: 1.1
}, {
duration: 1000,
easing: tween.easeInOut,
onFinish: function onFinish() {
tween(self, {
scaleX: 1,
scaleY: 1
}, {
duration: 1000,
easing: tween.easeInOut
});
}
});
self.speed = 5; // Speed at which the cake falls
self.update = function () {
if (self.lastY === undefined) {
self.lastY = self.y;
} // Initialize lastY for tracking changes on Y
self.y += self.speed;
if (self.y > 2732 + cakeGraphics.height / 2) {
self.lastY = self.y; // Update lastY after movement
self.destroy();
}
};
});
var Confetti = Container.expand(function () {
var self = Container.call(this);
var confettiGraphics = self.attachAsset('newCakePurchase', {
anchorX: 0.5,
anchorY: 0.5
});
self.speedY = -10; // Initial upward speed
self.gravity = 0.2; // Gravity effect
self.speedX = (Math.random() - 0.5) * 10; // Random horizontal speed
self.update = function () {
if (self.lastY === undefined) {
self.lastY = self.y;
}
self.y += self.speedY;
self.x += self.speedX;
self.speedY += self.gravity; // Apply gravity
if (self.y > 2732 + confettiGraphics.height / 2) {
self.destroy();
}
};
});
// PriceButton class
var PriceButton = Container.expand(function () {
var self = Container.call(this);
var priceButtonGraphics = self.attachAsset('buttonPrice', {
anchorX: 0.5,
anchorY: 0.5
});
self.onClick = function () {
// Display the prices for the buttons
var priceText = new Text2('Upgrade: $' + upgrade.cost + '\nAuto Clicker: $' + autoClicker.cost, {
size: 100,
fill: 0x0000FF
});
priceText.anchor.set(0.5, 0.5);
priceText.x = 2048 / 2;
priceText.y = bigCake.y + bigCake.height / 2 + 150;
game.addChild(priceText);
// Remove the text after a short delay
LK.setTimeout(function () {
game.removeChild(priceText);
}, 2000);
};
});
// ResetButton class
var ResetButton = Container.expand(function () {
var self = Container.call(this);
var resetButtonGraphics = self.attachAsset('resetButton', {
anchorX: 0.5,
anchorY: 0.5
});
self.on('down', function () {
LK.showGameOver(); // Reset the game state
});
});
// Score class
var Score = Container.expand(function () {
var self = Container.call(this);
var scoreText = new Text2('0', {
size: 200,
fill: 0xFF0000,
dropShadow: true,
// Enable drop shadow
dropShadowColor: 0x000000,
// Set drop shadow color to black
dropShadowBlur: 5,
// Set drop shadow blur
dropShadowDistance: 5 // Set drop shadow distance
});
scoreText.anchor.set(0.5, 0);
self.addChild(scoreText);
self.updateScore = function (newScore) {
scoreText.setText(newScore.toString());
};
});
// Upgrade class
var Upgrade = Container.expand(function () {
var self = Container.call(this);
var upgradeGraphics = self.attachAsset('upgrade', {
anchorX: 0.5,
anchorY: 0.5
});
self.cost = 10; // Initial cost of the upgrade
self.multiplier = 1; // Score multiplier
self.updateCost = function () {
self.cost *= 2; // Double the cost for the next upgrade
storage.upgradeCost = self.cost; // Save the updated upgrade cost
};
self.increaseMultiplier = function () {
self.multiplier += 1; // Increase the multiplier by 1
};
self.updateUpgradeText = function () {
// No text update needed for upgrade button
};
self.onClick = function () {
if (currentScore >= self.cost) {
currentScore -= self.cost; // Deduct the cost from the current score
score.updateScore(currentScore); // Update the score display
self.updateCost(); // Update the cost for the next upgrade
storage.upgradeMultiplier = self.multiplier; // Save the updated multiplier
self.increaseMultiplier(); // Increase the score multiplier
self.updateUpgradeText(); // Update the upgrade text
upgradeGraphics.alpha = 1; // Always fully opaque
} else {
tween(self, {
alpha: 0.2
}, {
duration: 100,
easing: tween.easeInOut,
onFinish: function onFinish() {
tween(self, {
alpha: 1
}, {
duration: 100,
easing: tween.easeInOut,
onFinish: function onFinish() {
tween(self, {
alpha: 0.2
}, {
duration: 100,
easing: tween.easeInOut,
onFinish: function onFinish() {
tween(self, {
alpha: 1
}, {
duration: 100,
easing: tween.easeInOut
});
}
});
}
});
}
});
LK.getSound('errorsond').play(); // Play error sound
}
upgradeGraphics.alpha = 1; // Always fully opaque
};
});
/****
* Initialize Game
****/
var game = new LK.Game();
/****
* Game Code
****/
// Add event listener for new cake purchase clicks
if (typeof newCakeButton !== 'undefined' && newCakeButton.newCake) {
newCakeButton.newCake.on('down', function (x, y, obj) {
newCakeButton.newCake.onClick();
});
newCakeButton.newCake.on('down', function (x, y, obj) {
newCakeButton.newCake.onClick();
});
}
var background = game.addChild(LK.getAsset('background', {
anchorX: 0.5,
anchorY: 0.5
}));
background.x = 2048 / 2;
background.y = 2732 / 2;
background.scaleX = 2048 / background.width; // Scale background to fit the game width
background.scaleY = 2732 / background.height; // Scale background to fit the game height
// Initialize price button
var priceButton = game.addChild(new PriceButton());
priceButton.x = priceButton.width / 2; // Position the price button at the left corner
priceButton.y = 600; // Adjust the y-coordinate to move the button further down
// Add event listener for price button clicks
priceButton.on('down', function (x, y, obj) {
priceButton.onClick();
});
// Initialize bigCake
var bigCake = game.addChild(new BigCake());
bigCake.x = 2048 / 2;
bigCake.y = 2732 / 2;
// Initialize score
var score = game.addChild(new Score());
score.x = 2048 / 2;
score.y = 100; // Position score at the top center
// Initialize game variables
var currentScore = storage.score || 0; // Load saved score or default to 0
score.updateScore(currentScore); // Refresh the score display with the loaded score
var autoClicker = game.addChild(new AutoClicker());
autoClicker.autoClickerCount = storage.autoClickerCount || 0; // Load saved auto clicker count or default to 0
autoClicker.cost = storage.autoClickerCost || autoClicker.cost; // Load saved auto clicker cost or default to initial cost
if (autoClicker.autoClickerCount > 0) {
autoClicker.startAutoClicking(); // Start auto-clicking if there are saved auto-clickers
}
var upgrade = game.addChild(new Upgrade());
upgrade.multiplier = storage.upgradeMultiplier || 1; // Load saved upgrade multiplier or default to 1
upgrade.cost = storage.upgradeCost || upgrade.cost; // Load saved upgrade cost or default to initial cost
upgrade.x = 2048 - upgrade.width / 2; // Position upgrade button on the right side of the screen
upgrade.y = 2732 / 2 - upgrade.height; // Position upgrade button above the autoClicker button
// Initialize auto clicker
//var autoClicker = game.addChild(new AutoClicker());
// Initialize auto clicker text
var autoClickerText = new Text2('Auto Clicker: $' + autoClicker.cost, {
size: 100,
fill: currentScore >= autoClicker.cost ? 0x00FF00 : 0xFF0000
});
autoClickerText.anchor.set(0.5, 0);
autoClickerText.x = autoClicker.x;
autoClickerText.y = autoClicker.y - autoClicker.height / 2 - 50; // Position text above the auto clicker button
game.addChild(autoClickerText);
autoClicker.x = 2048 - autoClicker.width / 2; // Position auto clicker button on the right side of the screen
autoClicker.y = 2732 / 2; // Position auto clicker button in the middle of the screen vertically
// Add event listener for auto clicker clicks
autoClicker.on('down', function (x, y, obj) {
autoClicker.onClick();
});
// Play bakery music in a loop throughout the game
LK.playMusic('musiqueclicker', {
loop: true
});
// Game logic goes here
game.children.forEach(function (child) {
if (child.update) {
child.update();
}
});
var resetButton = game.addChild(new ResetButton());
resetButton.x = 2048 - resetButton.width / 2; // Position reset button on the right side of the screen
resetButton.y = 2732 / 2 - resetButton.height * 2; // Position reset button above the upgrade button
upgrade.on('down', function (x, y, obj) {
upgrade.onClick();
});
// bigCake.on('down', function (x, y, obj) {
// bigCake.onClick();
// });
// Main game tick event
LK.on('tick', function () {
// Game logic goes here
// In this simple game, the tick event is not used, but it's here for future game logic
}); ===================================================================
--- original.js
+++ change.js
@@ -337,13 +337,15 @@
var currentScore = storage.score || 0; // Load saved score or default to 0
score.updateScore(currentScore); // Refresh the score display with the loaded score
var autoClicker = game.addChild(new AutoClicker());
autoClicker.autoClickerCount = storage.autoClickerCount || 0; // Load saved auto clicker count or default to 0
+autoClicker.cost = storage.autoClickerCost || autoClicker.cost; // Load saved auto clicker cost or default to initial cost
if (autoClicker.autoClickerCount > 0) {
autoClicker.startAutoClicking(); // Start auto-clicking if there are saved auto-clickers
}
var upgrade = game.addChild(new Upgrade());
upgrade.multiplier = storage.upgradeMultiplier || 1; // Load saved upgrade multiplier or default to 1
+upgrade.cost = storage.upgradeCost || upgrade.cost; // Load saved upgrade cost or default to initial cost
upgrade.x = 2048 - upgrade.width / 2; // Position upgrade button on the right side of the screen
upgrade.y = 2732 / 2 - upgrade.height; // Position upgrade button above the autoClicker button
// Initialize auto clicker
//var autoClicker = game.addChild(new AutoClicker());
a button saying 'reset'. In-Game asset. 2d. Blank background. High contrast.
enlève ça
interieure de patiserie. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
gâteau ( pas réaliste ). Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
sparkles
gâteau. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
gâteau. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
gâteau. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
dessin de toque de chef
étoile dorée toute simple comme dans les commentaires d'un site web
une patisserie (gâteau) simple. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
interieure de patiserie vide avec uniquement le sol et les murs. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
trace blanche verticale d'un effet de coup de ninja
Vue de face centrée d'une machine magique en forme de pièce montée arc-en-ciel avec une petite entrée d'alimentation en bas au milieu, un très grand hublot central et un tube transparent dirigé vers le haut.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
errorsond
Sound effect
relaxsond
Sound effect
clickSound
Sound effect
musiqueclicker
Music
buySound
Sound effect
resetSound
Sound effect
buyAutoclickerSound
Sound effect
clearedSound
Sound effect
bonusSound
Sound effect
ohoh
Sound effect
cheers
Sound effect
squashingSound
Sound effect
CutSound
Sound effect
youpi
Sound effect
canonSound
Sound effect
yeahh
Sound effect
nooo
Sound effect
machineError
Sound effect
aspire
Sound effect