User prompt
When you buy something from the store, a sound file called buysound appears
User prompt
no, second minute, day, week, month, year as the counter
User prompt
The texts showing the status in the status panel are gone and it should also say where and how many hours it has been running
User prompt
When you click 100 cookies in the game, the achievement is won. Then it will be gone. The achievement is opened for the player who clicked 100 cookies. Title text: We are just getting started.
Code edit (1 edits merged)
Please save this source code
User prompt
Cookie Empire - Pixel Bakery Tycoon
Initial prompt
2D kurabiye tıklama (cookie clicker) tarzı bir oyun yap. Oyuncu kurabiyeye tıkladıkça kurabiye kazansın. Ancak başlangıçta para kazanmak zor olsun, yavaş ilerlesin. Oyuncu ilerledikçe kazandığı her kurabiye değerli hissettirsin. Yükseltmeler pahalı ama güçlü olsun. Oyun ilerledikçe otomatik kurabiye üreticiler, fırınlar, şefler alınabilsin. Piksel grafik tarzında sade, mobil uyumlu, bağımlılık yapıcı bir sistem kur. Ses efektleri, yükseltme dükkanı, istatistikler ve gelişim hissi olsun. Unity ile uyumlu şekilde tasarla.
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ var Cookie = Container.expand(function () { var self = Container.call(this); var cookieBase = self.attachAsset('cookieBase', { anchorX: 0.5, anchorY: 0.5 }); // Add chocolate chips var chip1 = self.attachAsset('cookieChip', { anchorX: 0.5, anchorY: 0.5, x: -40, y: -30 }); var chip2 = self.attachAsset('cookieChip', { anchorX: 0.5, anchorY: 0.5, x: 50, y: 20 }); var chip3 = self.attachAsset('cookieChip', { anchorX: 0.5, anchorY: 0.5, x: -20, y: 40 }); var chip4 = self.attachAsset('cookieChip', { anchorX: 0.5, anchorY: 0.5, x: 30, y: -50 }); self.bounce = function () { tween(self, { scaleX: 1.1, scaleY: 1.1 }, { duration: 100, easing: tween.easeOut, onFinish: function onFinish() { tween(self, { scaleX: 1.0, scaleY: 1.0 }, { duration: 100, easing: tween.easeIn }); } }); }; self.down = function (x, y, obj) { self.bounce(); createParticles(self.x, self.y); earnCookies(cookiesPerClick); totalClicks++; LK.getSound('click').play(); }; return self; }); var Particle = Container.expand(function () { var self = Container.call(this); var particle = self.attachAsset('particle', { anchorX: 0.5, anchorY: 0.5 }); self.velocity = { x: (Math.random() - 0.5) * 10, y: Math.random() * -8 - 2 }; self.life = 60; self.maxLife = 60; self.update = function () { self.x += self.velocity.x; self.y += self.velocity.y; self.velocity.y += 0.3; self.life--; self.alpha = self.life / self.maxLife; if (self.life <= 0) { self.destroy(); for (var i = particles.length - 1; i >= 0; i--) { if (particles[i] === self) { particles.splice(i, 1); break; } } } }; return self; }); var UpgradeButton = Container.expand(function (upgradeData) { var self = Container.call(this); self.upgradeData = upgradeData; self.canAfford = false; var button = self.attachAsset('upgradeButton', { anchorX: 0.5, anchorY: 0.5 }); var nameText = new Text2(upgradeData.name, { size: 32, fill: 0xFFFFFF }); nameText.anchor.set(0, 0.5); nameText.x = -180; nameText.y = -15; self.addChild(nameText); var costText = new Text2('Cost: ' + formatNumber(upgradeData.cost), { size: 24, fill: 0xFFFF00 }); costText.anchor.set(0, 0.5); costText.x = -180; costText.y = 15; self.addChild(costText); var ownedText = new Text2('Owned: ' + upgradeData.owned, { size: 24, fill: 0x00FF00 }); ownedText.anchor.set(1, 0.5); ownedText.x = 180; ownedText.y = 0; self.addChild(ownedText); self.updateDisplay = function () { self.canAfford = totalCookies >= upgradeData.cost; if (self.canAfford) { button.tint = 0x228B22; } else { button.tint = 0x4A4A4A; } costText.setText('Cost: ' + formatNumber(upgradeData.cost)); ownedText.setText('Owned: ' + upgradeData.owned); }; self.down = function (x, y, obj) { if (self.canAfford) { totalCookies -= upgradeData.cost; upgradeData.owned++; upgradeData.cost = Math.floor(upgradeData.cost * upgradeData.multiplier); if (upgradeData.type === 'click') { cookiesPerClick += upgradeData.effect; } else if (upgradeData.type === 'auto') { cookiesPerSecond += upgradeData.effect; } self.updateDisplay(); updateAllDisplays(); saveGame(); LK.getSound('purchase').play(); tween(self, { scaleX: 1.1, scaleY: 1.1 }, { duration: 100, easing: tween.easeOut, onFinish: function onFinish() { tween(self, { scaleX: 1.0, scaleY: 1.0 }, { duration: 100, easing: tween.easeIn }); } }); } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x8B4513 }); /**** * Game Code ****/ // Game variables var totalCookies = storage.totalCookies || 0; var cookiesPerClick = storage.cookiesPerClick || 1; var cookiesPerSecond = storage.cookiesPerSecond || 0; var totalClicks = storage.totalClicks || 0; var totalCookiesEarned = storage.totalCookiesEarned || 0; var achievement100Clicks = storage.achievement100Clicks || false; var particles = []; var upgradeButtons = []; var lastAutoUpdate = Date.now(); // UI elements var cookieDisplay; var statsDisplay; var cpsDisplay; // Upgrade definitions var upgrades = [{ name: "Better Clicking", cost: storage.betterClickingCost || 15, owned: storage.betterClickingOwned || 0, effect: 1, type: 'click', multiplier: 1.5 }, { name: "Cookie Oven", cost: storage.cookieOvenCost || 100, owned: storage.cookieOvenOwned || 0, effect: 1, type: 'auto', multiplier: 1.8 }, { name: "Super Cursor", cost: storage.superCursorCost || 500, owned: storage.superCursorOwned || 0, effect: 5, type: 'click', multiplier: 2.0 }, { name: "Cookie Factory", cost: storage.cookieFactoryCost || 2000, owned: storage.cookieFactoryOwned || 0, effect: 10, type: 'auto', multiplier: 2.2 }, { name: "Master Baker", cost: storage.masterBakerCost || 10000, owned: storage.masterBakerOwned || 0, effect: 50, type: 'auto', multiplier: 2.5 }]; // Create main cookie var mainCookie = game.addChild(new Cookie()); mainCookie.x = 1024; mainCookie.y = 600; // Create shop panel var shopPanel = game.addChild(LK.getAsset('shopPanel', { anchorX: 0, anchorY: 0, x: 50, y: 100 })); var shopTitle = new Text2('SHOP', { size: 48, fill: 0xFFFFFF }); shopTitle.anchor.set(0.5, 0); shopTitle.x = 225; shopTitle.y = 20; shopPanel.addChild(shopTitle); // Create upgrade buttons for (var i = 0; i < upgrades.length; i++) { var upgradeButton = new UpgradeButton(upgrades[i]); upgradeButton.x = 225; upgradeButton.y = 120 + i * 100; upgradeButtons.push(upgradeButton); shopPanel.addChild(upgradeButton); } // Create stats panel var statsPanel = game.addChild(LK.getAsset('statsPanel', { anchorX: 0, anchorY: 0, x: 1550, y: 100 })); var statsTitle = new Text2('STATS', { size: 48, fill: 0xFFFFFF }); statsTitle.anchor.set(0.5, 0); statsTitle.x = 225; statsTitle.y = 20; statsPanel.addChild(statsTitle); // Cookie display cookieDisplay = new Text2('Cookies: ' + formatNumber(totalCookies), { size: 48, fill: 0xFFFF00 }); cookieDisplay.anchor.set(0.5, 0); cookieDisplay.x = 1024; cookieDisplay.y = 100; game.addChild(cookieDisplay); // CPS display cpsDisplay = new Text2('Per Second: ' + formatNumber(cookiesPerSecond), { size: 32, fill: 0x00FF00 }); cpsDisplay.anchor.set(0.5, 0); cpsDisplay.x = 1024; cpsDisplay.y = 160; game.addChild(cpsDisplay); // Stats text var clicksText = new Text2('Total Clicks: ' + formatNumber(totalClicks), { size: 32, fill: 0xFFFFFF }); clicksText.anchor.set(0, 0); clicksText.x = 20; clicksText.y = 80; statsPanel.addChild(clicksText); var earnedText = new Text2('Total Earned: ' + formatNumber(totalCookiesEarned), { size: 32, fill: 0xFFFFFF }); earnedText.anchor.set(0, 0); earnedText.x = 20; earnedText.y = 130; statsPanel.addChild(earnedText); var perClickText = new Text2('Per Click: ' + formatNumber(cookiesPerClick), { size: 32, fill: 0xFFFFFF }); perClickText.anchor.set(0, 0); perClickText.x = 20; perClickText.y = 180; statsPanel.addChild(perClickText); // Helper functions function formatNumber(num) { if (num >= 1000000) { return (num / 1000000).toFixed(1) + 'M'; } else if (num >= 1000) { return (num / 1000).toFixed(1) + 'K'; } return Math.floor(num).toString(); } function earnCookies(amount) { totalCookies += amount; totalCookiesEarned += amount; updateAllDisplays(); checkAchievements(); } function checkAchievements() { // Check for 100 clicks achievement if (!achievement100Clicks && totalClicks >= 100) { achievement100Clicks = true; showAchievement("We are just getting started"); saveGame(); } } function showAchievement(title) { // Create achievement popup var achievementBg = game.addChild(LK.getAsset('shopPanel', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 1366, scaleX: 0.8, scaleY: 0.6 })); achievementBg.tint = 0x228B22; var achievementTitle = new Text2('ACHIEVEMENT UNLOCKED!', { size: 36, fill: 0xFFFFFF }); achievementTitle.anchor.set(0.5, 0.5); achievementTitle.x = 0; achievementTitle.y = -60; achievementBg.addChild(achievementTitle); var achievementText = new Text2(title, { size: 32, fill: 0xFFFF00 }); achievementText.anchor.set(0.5, 0.5); achievementText.x = 0; achievementText.y = 0; achievementBg.addChild(achievementText); // Auto-remove after 3 seconds LK.setTimeout(function () { achievementBg.destroy(); }, 3000); // Slide in animation achievementBg.y = 1366 + 200; tween(achievementBg, { y: 1366 }, { duration: 500, easing: tween.easeOut }); } function createParticles(x, y) { for (var i = 0; i < 5; i++) { var particle = new Particle(); particle.x = x + (Math.random() - 0.5) * 100; particle.y = y + (Math.random() - 0.5) * 100; particles.push(particle); game.addChild(particle); } } function updateAllDisplays() { cookieDisplay.setText('Cookies: ' + formatNumber(totalCookies)); cpsDisplay.setText('Per Second: ' + formatNumber(cookiesPerSecond)); clicksText.setText('Total Clicks: ' + formatNumber(totalClicks)); earnedText.setText('Total Earned: ' + formatNumber(totalCookiesEarned)); perClickText.setText('Per Click: ' + formatNumber(cookiesPerClick)); for (var i = 0; i < upgradeButtons.length; i++) { upgradeButtons[i].updateDisplay(); } } function saveGame() { storage.totalCookies = totalCookies; storage.cookiesPerClick = cookiesPerClick; storage.cookiesPerSecond = cookiesPerSecond; storage.totalClicks = totalClicks; storage.totalCookiesEarned = totalCookiesEarned; storage.achievement100Clicks = achievement100Clicks; // Save upgrade data storage.betterClickingCost = upgrades[0].cost; storage.betterClickingOwned = upgrades[0].owned; storage.cookieOvenCost = upgrades[1].cost; storage.cookieOvenOwned = upgrades[1].owned; storage.superCursorCost = upgrades[2].cost; storage.superCursorOwned = upgrades[2].owned; storage.cookieFactoryCost = upgrades[3].cost; storage.cookieFactoryOwned = upgrades[3].owned; storage.masterBakerCost = upgrades[4].cost; storage.masterBakerOwned = upgrades[4].owned; } // Initialize displays updateAllDisplays(); // Play ambient music LK.playMusic('ambient'); // Main game loop game.update = function () { // Handle automatic cookie production var now = Date.now(); var deltaTime = (now - lastAutoUpdate) / 1000; if (cookiesPerSecond > 0 && deltaTime >= 1) { var cookiesToAdd = Math.floor(cookiesPerSecond * deltaTime); if (cookiesToAdd > 0) { earnCookies(cookiesToAdd); lastAutoUpdate = now; } } // Save game periodically if (LK.ticks % 300 === 0) { saveGame(); } };
===================================================================
--- original.js
+++ change.js
@@ -187,8 +187,9 @@
var cookiesPerClick = storage.cookiesPerClick || 1;
var cookiesPerSecond = storage.cookiesPerSecond || 0;
var totalClicks = storage.totalClicks || 0;
var totalCookiesEarned = storage.totalCookiesEarned || 0;
+var achievement100Clicks = storage.achievement100Clicks || false;
var particles = [];
var upgradeButtons = [];
var lastAutoUpdate = Date.now();
// UI elements
@@ -329,9 +330,58 @@
function earnCookies(amount) {
totalCookies += amount;
totalCookiesEarned += amount;
updateAllDisplays();
+ checkAchievements();
}
+function checkAchievements() {
+ // Check for 100 clicks achievement
+ if (!achievement100Clicks && totalClicks >= 100) {
+ achievement100Clicks = true;
+ showAchievement("We are just getting started");
+ saveGame();
+ }
+}
+function showAchievement(title) {
+ // Create achievement popup
+ var achievementBg = game.addChild(LK.getAsset('shopPanel', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 1024,
+ y: 1366,
+ scaleX: 0.8,
+ scaleY: 0.6
+ }));
+ achievementBg.tint = 0x228B22;
+ var achievementTitle = new Text2('ACHIEVEMENT UNLOCKED!', {
+ size: 36,
+ fill: 0xFFFFFF
+ });
+ achievementTitle.anchor.set(0.5, 0.5);
+ achievementTitle.x = 0;
+ achievementTitle.y = -60;
+ achievementBg.addChild(achievementTitle);
+ var achievementText = new Text2(title, {
+ size: 32,
+ fill: 0xFFFF00
+ });
+ achievementText.anchor.set(0.5, 0.5);
+ achievementText.x = 0;
+ achievementText.y = 0;
+ achievementBg.addChild(achievementText);
+ // Auto-remove after 3 seconds
+ LK.setTimeout(function () {
+ achievementBg.destroy();
+ }, 3000);
+ // Slide in animation
+ achievementBg.y = 1366 + 200;
+ tween(achievementBg, {
+ y: 1366
+ }, {
+ duration: 500,
+ easing: tween.easeOut
+ });
+}
function createParticles(x, y) {
for (var i = 0; i < 5; i++) {
var particle = new Particle();
particle.x = x + (Math.random() - 0.5) * 100;
@@ -355,8 +405,9 @@
storage.cookiesPerClick = cookiesPerClick;
storage.cookiesPerSecond = cookiesPerSecond;
storage.totalClicks = totalClicks;
storage.totalCookiesEarned = totalCookiesEarned;
+ storage.achievement100Clicks = achievement100Clicks;
// Save upgrade data
storage.betterClickingCost = upgrades[0].cost;
storage.betterClickingOwned = upgrades[0].owned;
storage.cookieOvenCost = upgrades[1].cost;