User prompt
kasmaması için kodları gözden geçir
User prompt
Gereksiz kendini tekrarlayan ve oyunu yavaşlatan kodları tekrar düzelterek kodla.
User prompt
Tüm hataları ve herşeyi sıfırla ve sil. Herkes baştan başlasın. ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Herkesin puanlarını sıfırla. Oyuna baştan başlasınlar. Bunun sebebi ise Çok kişinin fazladan puanı olmasının sebebi hataları düzeltmemiz. ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Oyun açılmıyor. Açılmasını engelleyen her şeyi sil ve oyundaki her şeyi baştan kodla.
User prompt
kendini tekrarlayan odları tuşları ve oyunu bozan herşeyi sil
User prompt
Gereksiz tuşları kaldırabilir ve hataları silebilirsin.
User prompt
Oyundaki ses dosyalarını silebilir ve gereksiz tüm dosyaları silebilirsin.
User prompt
Oyunun en son çalıştığı ilk sürümlere getirebilirsin fakat görevler, düğmeler ve kazanma sistemlerini değiştirme.
User prompt
Oyunun çalışmasıyla ilgili olan hataları düzelt. Oyun çalışsın.
User prompt
dokuz yüz kodun dokuz yüzünü de kontrol et
User prompt
oyundaki herşeyi eski haline getir ve çalışacağı halde tüm kodları kontrol ederek baştan yaz ve bunu hızlıca yaz
User prompt
Oyunu bozan tüm kolları sil
User prompt
Oyunu düzelt
User prompt
Tüm hataları kontrol edip, silip baştan yaz.
User prompt
Oyunun tüm hatalarını temizle.
User prompt
Please fix the bug: 'storage.clear is not a function' in or related to this line: 'storage.clear();' Line Number: 412
User prompt
Tüm oyuncu verilerini baştan başlat.
User prompt
Tıklama oyununda puan kazanma sistemi, oyuncunun temel olarak ekrandaki ana düğmeye tıklamasıyla gerçekleşir. Her tıklamada kazanılan puan miktarı, oyuncunun sahip olduğu çeşitli yükseltmelere göre dinamik olarak değişmelidir. Oyuncu oyuna başladığında, varsayılan olarak her tıklamada belirli bir başlangıç puanı kazanır. Bu temel puan, "1x Yükseltme" (Power Click) satın alındıkça sabit bir miktar artmalıdır; örneğin, her seviyede tıklama başına kazanca +1, +2 veya daha fazlası gibi doğrusal veya hafif üstel bir değer eklenmelidir. Daha sonra, oyuncu "5x Yükseltme" (Super Click) satın aldığında, mevcut toplam tıklama başına kazancı 5 ile çarpılmalı, böylece daha önce kazandığı temel ve 1x yükseltmelerden gelen puanlar da dahil olmak üzere toplam kazanç 5 katına çıkmalıdır. Benzer şekilde, "10x Yükseltme" (Mega Click) satın alındığında ise, oyuncunun o anki toplam tıklama başına kazancı 10 ile çarpılmalı ve bu da çok daha yüksek bir gelir akışı sağlamalıdır. Bu çarpan yükseltmeler, oyuncunun biriktirdiği puanlarla orantılı olarak daha yüksek maliyetlere sahip olmalı, ancak oyuncunun ilerlemesini engellemeyecek dengeli bir fiyatlandırma eğrisi izlemelidir. Ayrıca, her tıklama arasında 80 milisaniyelik bir gecikme süresi uygulanarak otomatik tıklama veya aşırı hızlı tıklamalar engellenmelidir. Toplamda kazanılan puanlar, 1.000 ve üzeri sayılarda kısaltılmış formatta (örn: 1.1K, 2.5M) gösterilmelidir.
User prompt
Oyundaki fiyatlandırma hatalarını düzelt
User prompt
Herkes Level 1'den başlayarak Artı 1 ile başlıyor
User prompt
Anladım, yükseltmelerin fiyatlandırma ve kazanç mekaniğinde bir tutarsızlık olduğunu ve daha mantıklı bir fiyatlandırma istediğinizi belirtiyorsunuz. Şu anki durumda: * "1x Yükseltme" (Power Click) tekil puan kazandırıyor (örn. +1 puan). * "5x Yükseltme" (Super Click) ve "10x Yükseltme" (Mega Click) ise mevcut tıklama değerini 5 kat ve 10 kat artırıyor. * Maliyetleri de bu katlara göre orantısız pahalı (örn. 5x yükseltme 5 kat pahalı). Bu durumu düzeltmek ve daha düzgün, orantılı bir fiyatlandırma yapmak için yapay zekaya şu talimatı verebilirsiniz: "Tıklama oyunundaki yükseltme sistemi için aşağıdaki fiyatlandırma ve etki mantığını uygula: * '1x Yükseltme' (Power Click): * Bu yükseltme, her satın alındığında tıklama başına kazancınızı sabit bir miktar artıracak (örn: ilk seviyede +1 puan, sonraki seviyelerde +2, +3 gibi doğrusal veya hafif artan bir miktar). * Maliyeti, yükseltme fiyatlandırma kuralına göre artacak (ilk seviye 50 puan, sonraki seviyeler 1.15x, 1.22x, 1.30x kat artış). * '5x Yükseltme' (Super Click): * Bu yükseltme, her satın alındığında mevcut toplam tıklama başına kazancınızı 5 ile çarpacak. Yani, zaten 10 puan kazanıyorsanız, bu yükseltmeyi aldığınızda tıklama başına kazancınız 50 puan olacak. * Maliyeti, '1x Yükseltme'nin maliyetinden orantılı olarak daha yüksek olacak, ancak sadece katlandığı kadar değil. Başlangıç maliyeti, 1x yükseltmenin başlangıç maliyetinin yaklaşık 5-7 katı civarında olabilir. Seviye ilerledikçe, 1x'e göre daha hızlı artmalı. * '10x Yükseltme' (Mega Click): * Bu yükseltme, her satın alındığında mevcut toplam tıklama başına kazancınızı 10 ile çarpacak. * Maliyeti, '5x Yükseltme'nin maliyetinden orantılı olarak daha yüksek olacak. Başlangıç maliyeti, 5x yükseltmenin başlangıç maliyetinin yaklaşık 4-6 katı civarında olabilir ve seviye ilerledikçe diğerlerinden daha hızlı artmalı. Özetle: 1x Yükseltme puan artırırken, 5x ve 10x Yükseltmeler çarpan görevi görecek. Maliyetler ise kazanç oranlarıyla orantılı ama dengeli bir artış gösterecek, oyuncunun büyük çarpanlara ulaşmasının zaman almasını sağlayacak, ancak ulaşılmaz kılmayacak. Mevcut üstel fiyatlandırma kuralları her yükseltme için kendi taban maliyeti üzerinden uygulanacak."
User prompt
Anladım, yükseltmelerin fiyatlandırma ve kazanç mekaniğinde bir tutarsızlık olduğunu ve daha mantıklı bir fiyatlandırma istediğinizi belirtiyorsunuz. Şu anki durumda: * "1x Yükseltme" (Power Click) tekil puan kazandırıyor (örn. +1 puan). * "5x Yükseltme" (Super Click) ve "10x Yükseltme" (Mega Click) ise mevcut tıklama değerini 5 kat ve 10 kat artırıyor. * Maliyetleri de bu katlara göre orantısız pahalı (örn. 5x yükseltme 5 kat pahalı). Bu durumu düzeltmek ve daha düzgün, orantılı bir fiyatlandırma yapmak için yapay zekaya şu talimatı verebilirsiniz: "Tıklama oyunundaki yükseltme sistemi için aşağıdaki fiyatlandırma ve etki mantığını uygula: * '1x Yükseltme' (Power Click): * Bu yükseltme, her satın alındığında tıklama başına kazancınızı sabit bir miktar artıracak (örn: ilk seviyede +1 puan, sonraki seviyelerde +2, +3 gibi doğrusal veya hafif artan bir miktar). * Maliyeti, yükseltme fiyatlandırma kuralına göre artacak (ilk seviye 50 puan, sonraki seviyeler 1.15x, 1.22x, 1.30x kat artış). * '5x Yükseltme' (Super Click): * Bu yükseltme, her satın alındığında mevcut toplam tıklama başına kazancınızı 5 ile çarpacak. Yani, zaten 10 puan kazanıyorsanız, bu yükseltmeyi aldığınızda tıklama başına kazancınız 50 puan olacak. * Maliyeti, '1x Yükseltme'nin maliyetinden orantılı olarak daha yüksek olacak, ancak sadece katlandığı kadar değil. Başlangıç maliyeti, 1x yükseltmenin başlangıç maliyetinin yaklaşık 5-7 katı civarında olabilir. Seviye ilerledikçe, 1x'e göre daha hızlı artmalı. * '10x Yükseltme' (Mega Click): * Bu yükseltme, her satın alındığında mevcut toplam tıklama başına kazancınızı 10 ile çarpacak. * Maliyeti, '5x Yükseltme'nin maliyetinden orantılı olarak daha yüksek olacak. Başlangıç maliyeti, 5x yükseltmenin başlangıç maliyetinin yaklaşık 4-6 katı civarında olabilir ve seviye ilerledikçe diğerlerinden daha hızlı artmalı. Özetle: 1x Yükseltme puan artırırken, 5x ve 10x Yükseltmeler çarpan görevi görecek. Maliyetler ise kazanç oranlarıyla orantılı ama dengeli bir artış gösterecek, oyuncunun büyük çarpanlara ulaşmasının zaman almasını sağlayacak, ancak ulaşılmaz kılmayacak. Mevcut üstel fiyatlandırma kuralları her yükseltme için kendi taban maliyeti üzerinden uygulanacak."
User prompt
1x yükseltme, 1x yükseltmiyor, yani bir kat artı bir gibi yükseltmiyor. Aynı şekilde 5x ve 10x de.
User prompt
Yükseltmelerde hata var 1x değil daha fazla yükseltiyor Yani artı bir yerine daha fazla 5x'de 5 artı yerine daha fazla yükseltiyor
/**** * Plugins ****/ var storage = LK.import("@upit/storage.v1"); var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Upgrade = Container.expand(function (name, baseCost, multiplier) { var self = Container.call(this); var background = self.attachAsset('upgradeButton', { anchorX: 0.5, anchorY: 0.5 }); var nameText = new Text2(name, { size: 40, fill: 0xFFFFFF }); nameText.anchor.set(0.5, 0.5); nameText.y = -20; self.addChild(nameText); var costText = new Text2('', { size: 32, fill: 0xFFFF00 }); costText.anchor.set(0.5, 0.5); costText.y = 20; self.addChild(costText); self.name = name; self.level = 1; self.baseCost = baseCost; self.cost = baseCost; self.multiplier = multiplier; self.updateDisplay = function () { nameText.setText(self.name + ' (Lv.' + self.level + ')'); costText.setText('Cost: ' + formatNumber(self.cost)); if (points >= self.cost) { background.tint = 0x4CAF50; } else { background.tint = 0x888888; } }; self.down = function (x, y, obj) { if (points >= self.cost) { points -= self.cost; self.level++; self.cost = Math.floor(self.baseCost * Math.pow(self.multiplier, self.level - 1)); self.updateDisplay(); updatePointsDisplay(); saveGame(); } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x2E1065 }); /**** * Game Code ****/ // Game variables var points = 0; var totalClicks = 0; var clickPower = 1; // Helper functions function formatNumber(num) { if (num >= 1000000000) { return (num / 1000000000).toFixed(1) + 'B'; } else 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 updatePointsDisplay() { pointsText.setText(formatNumber(points) + ' Points'); } function saveGame() { try { storage.points = points; storage.totalClicks = totalClicks; storage.clickPower = clickPower; if (upgradeButton) { storage.upgradeLevel = upgradeButton.level; storage.upgradeCost = upgradeButton.cost; } } catch (e) { console.log('Error saving game:', e); } } function loadGame() { try { if (storage.points !== undefined) { points = Number(storage.points) || 0; } if (storage.totalClicks !== undefined) { totalClicks = Number(storage.totalClicks) || 0; } if (storage.clickPower !== undefined) { clickPower = Number(storage.clickPower) || 1; } if (storage.upgradeLevel !== undefined && upgradeButton) { upgradeButton.level = Number(storage.upgradeLevel) || 1; upgradeButton.cost = Number(storage.upgradeCost) || 10; } } catch (e) { console.log('Error loading game:', e); } } // Load saved game loadGame(); // Create main red button var mainButton = game.addChild(LK.getAsset('redButton', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 1366 })); // Create points display var pointsText = new Text2('0 Points', { size: 80, fill: 0xFFFFFF }); pointsText.anchor.set(0.5, 0.5); pointsText.x = 1024; pointsText.y = 600; game.addChild(pointsText); // Create upgrade button var upgradeButton = new Upgrade('Click Power', 10, 1.5); upgradeButton.x = 1024; upgradeButton.y = 1800; game.addChild(upgradeButton); // Create quest button var questButton = game.addChild(LK.getAsset('questButton', { anchorX: 0.5, anchorY: 0.5, x: 1750, y: 200 })); var questText = new Text2('QUEST', { size: 24, fill: 0xFFFFFF }); questText.anchor.set(0.5, 0.5); questText.x = 1750; questText.y = 200; game.addChild(questText); // Quest system var quests = [{ name: 'Get 100 Points', target: 100, reward: 50, completed: false, collected: false, type: 'points' }, { name: 'Click 50 Times', target: 50, reward: 25, completed: false, collected: false, type: 'clicks' }]; var questMenu = null; var questMenuOpen = false; function checkQuests() { for (var i = 0; i < quests.length; i++) { var quest = quests[i]; if (!quest.completed) { var progress = 0; if (quest.type === 'points') { progress = points; } else if (quest.type === 'clicks') { progress = totalClicks; } if (progress >= quest.target) { quest.completed = true; } } } } function createQuestMenu() { questMenu = new Container(); // Menu background var menuBg = questMenu.attachAsset('questButton', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 1366, scaleX: 8, scaleY: 10 }); menuBg.alpha = 0.9; // Title var titleText = new Text2('QUESTS', { size: 60, fill: 0xFFFFFF }); titleText.anchor.set(0.5, 0.5); titleText.x = 1024; titleText.y = 400; questMenu.addChild(titleText); // Close button var closeButton = new Text2('X', { size: 50, fill: 0xFF0000 }); closeButton.anchor.set(0.5, 0.5); closeButton.x = 1500; closeButton.y = 400; questMenu.addChild(closeButton); closeButton.down = function () { questMenuOpen = false; game.removeChild(questMenu); questMenu = null; }; // Quest items for (var i = 0; i < quests.length; i++) { var quest = quests[i]; var questText = new Text2(quest.name, { size: 40, fill: quest.completed ? 0x00FF00 : 0xFFFFFF }); questText.anchor.set(0.5, 0.5); questText.x = 1024; questText.y = 600 + i * 80; questMenu.addChild(questText); if (quest.completed && !quest.collected) { var collectButton = new Text2('COLLECT +' + quest.reward, { size: 30, fill: 0xFFFF00 }); collectButton.anchor.set(0.5, 0.5); collectButton.x = 1024; collectButton.y = 630 + i * 80; questMenu.addChild(collectButton); collectButton.questIndex = i; collectButton.down = function () { var quest = quests[this.questIndex]; if (quest.completed && !quest.collected) { points += quest.reward; quest.collected = true; updatePointsDisplay(); saveGame(); // Refresh quest menu game.removeChild(questMenu); createQuestMenu(); } }; } } game.addChild(questMenu); } // Click power calculation function getClickValue() { return clickPower * upgradeButton.level; } // Event handlers mainButton.down = function (x, y, obj) { var clickValue = getClickValue(); points += clickValue; totalClicks++; // Visual feedback tween(mainButton, { scaleX: 0.9, scaleY: 0.9 }, { duration: 100, onFinish: function onFinish() { tween(mainButton, { scaleX: 1.0, scaleY: 1.0 }, { duration: 100 }); } }); // Show points gained var earnedText = new Text2('+' + formatNumber(clickValue), { size: 50, fill: 0xFFFF00 }); earnedText.anchor.set(0.5, 0.5); earnedText.x = 1024; earnedText.y = 1200; game.addChild(earnedText); tween(earnedText, { y: earnedText.y - 100, alpha: 0 }, { duration: 1000, onFinish: function onFinish() { game.removeChild(earnedText); } }); updatePointsDisplay(); checkQuests(); saveGame(); }; questButton.down = function (x, y, obj) { if (!questMenuOpen) { questMenuOpen = true; createQuestMenu(); } }; // Initialize display updatePointsDisplay(); upgradeButton.updateDisplay(); // Auto-save every 5 seconds game.update = function () { if (LK.ticks % 300 === 0) { saveGame(); } };
===================================================================
--- original.js
+++ change.js
@@ -6,136 +6,49 @@
/****
* Classes
****/
-var QuestItem = Container.expand(function (questData) {
+var Upgrade = Container.expand(function (name, baseCost, multiplier) {
var self = Container.call(this);
- var titleText = new Text2('', {
- size: 50,
- fill: 0xFFFFFF
- });
- titleText.anchor.set(0, 0.5);
- titleText.x = 20;
- self.addChild(titleText);
- var progressText = new Text2('', {
- size: 40,
- fill: 0xAAAAAA
- });
- progressText.anchor.set(0, 0.5);
- progressText.x = 20;
- progressText.y = 60;
- self.addChild(progressText);
- var rewardText = new Text2('', {
- size: 35,
- fill: 0xFFFF00
- });
- rewardText.anchor.set(0, 0.5);
- rewardText.x = 20;
- rewardText.y = 100;
- self.addChild(rewardText);
- self.collectButton = new Container();
- var collectGraphics = self.collectButton.attachAsset('collectButton', {
+ var background = self.attachAsset('upgradeButton', {
anchorX: 0.5,
anchorY: 0.5
});
- self.collectText = new Text2('COLLECT', {
- size: 30,
+ var nameText = new Text2(name, {
+ size: 40,
fill: 0xFFFFFF
});
- self.collectText.anchor.set(0.5, 0.5);
- self.collectButton.addChild(self.collectText);
- self.collectButton.x = 520;
- self.collectButton.y = 50;
- self.addChild(self.collectButton);
- self.questData = questData;
- self.updateDisplay = function () {
- var questName = self.questData.name || 'Quest';
- titleText.setText(questName);
- var current = getCurrentProgress(self.questData);
- var target = self.questData.target;
- if (self.questData.completed && !self.questData.collected) {
- progressText.setText('COMPLETED');
- progressText.fill = "#00ff00";
- self.collectButton.visible = true;
- } else if (self.questData.collected) {
- progressText.setText('COLLECTED');
- progressText.fill = "#888888";
- self.collectButton.visible = false;
- } else {
- progressText.setText(formatNumber(current) + ' / ' + formatNumber(target));
- progressText.fill = "#aaaaaa";
- self.collectButton.visible = false;
- }
- rewardText.setText('Reward: +' + formatNumber(self.questData.reward) + ' Points');
- };
- self.collectButton.down = function (x, y, obj) {
- if (self.questData.completed && !self.questData.collected) {
- self.questData.collected = true;
- points += self.questData.reward;
- updatePointsDisplay();
- self.updateDisplay();
- saveGame();
- }
- };
- return self;
-});
-var UpgradeButton = Container.expand(function (upgradeData) {
- var self = Container.call(this);
- // Create upgrade text labels (no background)
- var titleText = new Text2('', {
- size: 50,
- fill: 0xFFFFFF
- });
- titleText.anchor.set(0, 0.5);
- titleText.x = -350;
- self.addChild(titleText);
+ nameText.anchor.set(0.5, 0.5);
+ nameText.y = -20;
+ self.addChild(nameText);
var costText = new Text2('', {
- size: 40,
+ size: 32,
fill: 0xFFFF00
});
- costText.anchor.set(0, 0.5);
- costText.x = -350;
- costText.y = 50;
+ costText.anchor.set(0.5, 0.5);
+ costText.y = 20;
self.addChild(costText);
- // Create small square upgrade button logo
- var buttonLogo = self.attachAsset('upgradeButtonLogo', {
- anchorX: 0.5,
- anchorY: 0.5,
- x: 550,
- y: 25
- });
- var logoText = new Text2('▲', {
- size: 40,
- fill: 0xFFFFFF
- });
- logoText.anchor.set(0.5, 0.5);
- logoText.x = 550;
- logoText.y = 25;
- self.addChild(logoText);
- self.upgradeData = upgradeData;
+ self.name = name;
+ self.level = 1;
+ self.baseCost = baseCost;
+ self.cost = baseCost;
+ self.multiplier = multiplier;
self.updateDisplay = function () {
- var displayName = self.upgradeData.name || '';
- titleText.setText(displayName + ' (Lv.' + (self.upgradeData.level || 1) + ')');
- costText.setText('Cost: ' + formatNumber(self.upgradeData.cost || 0));
- if (points >= (self.upgradeData.cost || 0)) {
- buttonLogo.tint = 0x32CD32; // Bright green when affordable
+ nameText.setText(self.name + ' (Lv.' + self.level + ')');
+ costText.setText('Cost: ' + formatNumber(self.cost));
+ if (points >= self.cost) {
+ background.tint = 0x4CAF50;
} else {
- buttonLogo.tint = 0xC0C0C0; // Light gray when not affordable
+ background.tint = 0x888888;
}
};
- // Only the logo button is clickable
- buttonLogo.down = function (x, y, obj) {
- if (points >= self.upgradeData.cost) {
- points -= self.upgradeData.cost;
- totalSpent += self.upgradeData.cost;
- // Increase only this specific upgrade's level by 1
- self.upgradeData.level += 1;
- // Calculate new cost for this specific upgrade using its base cost and multiplier
- var costMultiplier = self.upgradeData.multiplier;
- self.upgradeData.cost = Math.floor(self.upgradeData.baseCost * Math.pow(costMultiplier, self.upgradeData.level));
- updatePointsDisplay();
+ self.down = function (x, y, obj) {
+ if (points >= self.cost) {
+ points -= self.cost;
+ self.level++;
+ self.cost = Math.floor(self.baseCost * Math.pow(self.multiplier, self.level - 1));
self.updateDisplay();
- updateAllUpgradeButtons();
+ updatePointsDisplay();
saveGame();
}
};
return self;
@@ -144,513 +57,265 @@
/****
* Initialize Game
****/
var game = new LK.Game({
- backgroundColor: 0x4a0080
+ backgroundColor: 0x2E1065
});
/****
* Game Code
****/
-// Create dark to light purple gradient background
-game.setBackgroundColor(0x1A0B2E);
-// Create enhanced texture background effect
-var backgroundTexture = new Container();
-for (var i = 0; i < 100; i++) {
- for (var j = 0; j < 140; j++) {
- if (Math.random() < 0.15) {
- var particle = LK.getAsset('textureParticle', {
- anchorX: 0.5,
- anchorY: 0.5,
- scaleX: Math.random() * 0.8 + 0.2,
- scaleY: Math.random() * 0.8 + 0.2,
- x: i * 20.5 + Math.random() * 10,
- y: j * 19.5 + Math.random() * 10
- });
- particle.alpha = Math.random() * 0.2 + 0.05;
- particle.tint = Math.random() > 0.5 ? 0x7B68EE : 0x9370DB;
- backgroundTexture.addChild(particle);
- }
- ;
- ;
- }
-}
-game.addChild(backgroundTexture);
-// Game variables - initialize with default values
+// Game variables
var points = 0;
var totalClicks = 0;
-var totalSpent = 0;
-var lastClickTime = 0;
-var clickDelay = 80;
-// Simple game text
-// Upgrade system - always start with default upgrades at level 1
-var upgrades = [{
- name: '1x Yükseltme (Power Click)',
- level: 1,
- cost: 50,
- baseCost: 50,
- multiplier: 1.15,
- clickMultiplier: 1,
- upgradeType: 'additive'
-}, {
- name: '5x Yükseltme (Super Click)',
- level: 1,
- cost: 300,
- baseCost: 300,
- multiplier: 1.22,
- clickMultiplier: 5,
- upgradeType: 'multiplicative'
-}, {
- name: '10x Yükseltme (Mega Click)',
- level: 1,
- cost: 800,
- baseCost: 800,
- multiplier: 1.30,
- clickMultiplier: 10,
- upgradeType: 'multiplicative'
-}];
-// Simple quest system
-var quests = [{
- name: 'Reach 1000 Points',
- type: 'points',
- target: 1000,
- reward: 200,
- completed: false,
- collected: false
-}, {
- name: 'Click 100 Times',
- type: 'clicks',
- target: 100,
- reward: 50,
- completed: false,
- collected: false
-}, {
- name: 'Spend 500 Points',
- type: 'spent',
- target: 500,
- reward: 60,
- completed: false,
- collected: false
-}];
-// Clear all saved data to start fresh
-storage.points = undefined;
-storage.totalClicks = undefined;
-storage.totalSpent = undefined;
-storage.upgradeNames = undefined;
-storage.upgradeLevels = undefined;
-storage.upgradeCosts = undefined;
-storage.upgradeBaseCosts = undefined;
-storage.upgradeMultipliers = undefined;
-storage.upgradeClickMultipliers = undefined;
-storage.upgradeTypes = undefined;
-storage.questNames = undefined;
-storage.questTypes = undefined;
-storage.questTargets = undefined;
-storage.questRewards = undefined;
-storage.questCompleted = undefined;
-storage.questCollected = undefined;
-storage.questCurrentLevels = undefined;
-storage.questIsProgressive = undefined;
-storage.questQuestTypes = undefined;
-// Load saved game data (which will now be empty)
-loadGame();
-// UI elements
-var mainButton = game.addChild(LK.getAsset('redButton', {
- anchorX: 0.5,
- anchorY: 0.5,
- x: 1024,
- y: 1200
-}));
-// Language selector removed - using Turkish by default
-var pointsText = new Text2('0 Points', {
- size: 80,
- fill: 0xFFFFFF
-});
-pointsText.anchor.set(0.5, 0.5);
-pointsText.x = 1024;
-pointsText.y = 800;
-game.addChild(pointsText);
-// Upgrade buttons
-var upgradeButtons = [];
-for (var i = 0; i < upgrades.length; i++) {
- var upgradeButton = new UpgradeButton(upgrades[i]);
- upgradeButton.x = 1024;
- upgradeButton.y = 1600 + i * 160;
- game.addChild(upgradeButton);
- upgradeButtons.push(upgradeButton);
-}
-// Quest button - positioned safely away from top-left corner
-var questButton = game.addChild(LK.getAsset('questButton', {
- anchorX: 0.5,
- anchorY: 0.5,
- x: 1750,
- y: 200
-}));
-var questButtonText = new Text2('QUESTS', {
- size: 32,
- fill: 0x000000
-});
-questButtonText.anchor.set(0.5, 0.5);
-questButtonText.x = 1750;
-questButtonText.y = 200;
-game.addChild(questButtonText);
-// Quest menu
-var questMenu = null;
-var questMenuOpen = false;
+var clickPower = 1;
// Helper functions
function formatNumber(num) {
if (num >= 1000000000) {
- var formatted = (num / 1000000000).toFixed(1);
- return formatted.endsWith('.0') ? formatted.slice(0, -2) + 'B' : formatted + 'B';
+ return (num / 1000000000).toFixed(1) + 'B';
} else if (num >= 1000000) {
- var formatted = (num / 1000000).toFixed(1);
- return formatted.endsWith('.0') ? formatted.slice(0, -2) + 'M' : formatted + 'M';
+ return (num / 1000000).toFixed(1) + 'M';
} else if (num >= 1000) {
- var formatted = (num / 1000).toFixed(1);
- return formatted.endsWith('.0') ? formatted.slice(0, -2) + 'K' : formatted + 'K';
+ return (num / 1000).toFixed(1) + 'K';
}
return Math.floor(num).toString();
}
-function getClickValue() {
- var baseValue = 1;
- var totalMultiplier = 1;
- // First, calculate additive bonuses from Power Click (1x Upgrade)
- // Level 1 provides base +1, each level adds +1 more
- for (var i = 0; i < upgrades.length; i++) {
- if (upgrades[i].upgradeType === 'additive' && upgrades[i].level >= 1) {
- // Each level adds the clickMultiplier amount to the base value
- baseValue += upgrades[i].level;
- }
- }
- // Then, apply multiplicative bonuses from Super Click (5x) and Mega Click (10x)
- // Each level applies the multiplier once (not exponentially)
- for (var i = 0; i < upgrades.length; i++) {
- if (upgrades[i].upgradeType === 'multiplicative' && upgrades[i].level >= 1) {
- // Each level applies the clickMultiplier (5x or 10x) multiplicatively
- for (var level = 0; level < upgrades[i].level; level++) {
- totalMultiplier *= upgrades[i].clickMultiplier;
- }
- }
- }
- return Math.floor(baseValue * totalMultiplier);
-}
function updatePointsDisplay() {
pointsText.setText(formatNumber(points) + ' Points');
}
-function updateAllUpgradeButtons() {
- for (var i = 0; i < upgradeButtons.length; i++) {
- upgradeButtons[i].updateDisplay();
- }
-}
-function getCurrentProgress(quest) {
- if (!quest || !quest.type) return 0;
- switch (quest.type) {
- case 'points':
- return points || 0;
- case 'clicks':
- return totalClicks || 0;
- case 'spent':
- return totalSpent || 0;
- case 'upgrade':
- // Return the average level among all upgrades for quest progress
- var totalLevels = 0;
- if (upgrades && upgrades.length > 0) {
- for (var i = 0; i < upgrades.length; i++) {
- if (upgrades[i] && upgrades[i].level !== undefined) {
- totalLevels += upgrades[i].level;
- }
- }
- return Math.floor(totalLevels / upgrades.length);
- }
- return 0;
- default:
- return 0;
- }
-}
-function syncUpgradeLevels() {
- // No longer sync levels - each upgrade maintains its own level
- // This function now just ensures costs are properly calculated
- for (var i = 0; i < upgrades.length; i++) {
- if (!upgrades[i].baseCost) {
- upgrades[i].baseCost = upgrades[i].cost;
- }
- // Recalculate cost based on current level
- upgrades[i].cost = Math.floor(upgrades[i].baseCost * Math.pow(upgrades[i].multiplier, upgrades[i].level));
- }
-}
-function checkQuestCompletion() {
- if (!quests || quests.length === 0) return;
- for (var i = 0; i < quests.length; i++) {
- var quest = quests[i];
- if (quest && !quest.completed && quest.target !== undefined && quest.target > 0) {
- var current = getCurrentProgress(quest);
- if (current !== undefined && current >= quest.target) {
- quest.completed = true;
- }
- }
- }
-}
function saveGame() {
try {
- if (typeof storage === 'undefined') return;
- storage.points = points || 0;
- storage.totalClicks = totalClicks || 0;
- storage.totalSpent = totalSpent || 0;
- // Convert upgrades to storage-compatible format
- storage.upgradeNames = [];
- storage.upgradeLevels = [];
- storage.upgradeCosts = [];
- storage.upgradeBaseCosts = [];
- storage.upgradeMultipliers = [];
- storage.upgradeClickMultipliers = [];
- storage.upgradeTypes = [];
- if (upgrades && upgrades.length > 0) {
- for (var i = 0; i < upgrades.length; i++) {
- if (upgrades[i]) {
- storage.upgradeNames[i] = upgrades[i].name || '';
- storage.upgradeLevels[i] = upgrades[i].level || 1;
- storage.upgradeCosts[i] = upgrades[i].cost || 0;
- storage.upgradeBaseCosts[i] = upgrades[i].baseCost || upgrades[i].cost || 0;
- storage.upgradeMultipliers[i] = upgrades[i].multiplier || 1;
- storage.upgradeClickMultipliers[i] = upgrades[i].clickMultiplier || 1;
- storage.upgradeTypes[i] = upgrades[i].upgradeType || 'additive';
- }
- }
+ storage.points = points;
+ storage.totalClicks = totalClicks;
+ storage.clickPower = clickPower;
+ if (upgradeButton) {
+ storage.upgradeLevel = upgradeButton.level;
+ storage.upgradeCost = upgradeButton.cost;
}
- // Convert quests to storage-compatible format
- storage.questNames = [];
- storage.questTypes = [];
- storage.questTargets = [];
- storage.questRewards = [];
- storage.questCompleted = [];
- storage.questCollected = [];
- storage.questCurrentLevels = [];
- storage.questIsProgressive = [];
- storage.questQuestTypes = [];
- if (quests && quests.length > 0) {
- for (var i = 0; i < quests.length; i++) {
- if (quests[i]) {
- storage.questNames[i] = quests[i].name || '';
- storage.questTypes[i] = quests[i].type || '';
- storage.questTargets[i] = quests[i].target || 0;
- storage.questRewards[i] = quests[i].reward || 0;
- storage.questCompleted[i] = quests[i].completed || false;
- storage.questCollected[i] = quests[i].collected || false;
- storage.questCurrentLevels[i] = quests[i].currentLevel || 0;
- storage.questIsProgressive[i] = quests[i].isProgressive || false;
- storage.questQuestTypes[i] = quests[i].questType || '';
- }
- }
- }
} catch (e) {
console.log('Error saving game:', e);
}
}
function loadGame() {
try {
- if (typeof storage === 'undefined') return;
- // Load basic game stats
- if (storage.points !== undefined && storage.points !== null) {
+ if (storage.points !== undefined) {
points = Number(storage.points) || 0;
}
- if (storage.totalClicks !== undefined && storage.totalClicks !== null) {
+ if (storage.totalClicks !== undefined) {
totalClicks = Number(storage.totalClicks) || 0;
}
- if (storage.totalSpent !== undefined && storage.totalSpent !== null) {
- totalSpent = Number(storage.totalSpent) || 0;
+ if (storage.clickPower !== undefined) {
+ clickPower = Number(storage.clickPower) || 1;
}
- // Load upgrades if they exist in storage
- if (storage.upgradeLevels && storage.upgradeLevels.length > 0 && upgrades && upgrades.length > 0) {
- for (var i = 0; i < upgrades.length && i < storage.upgradeLevels.length; i++) {
- if (upgrades[i] && storage.upgradeLevels[i] !== undefined && storage.upgradeLevels[i] !== null) {
- upgrades[i].level = Number(storage.upgradeLevels[i]) || 1;
- }
- if (upgrades[i] && storage.upgradeCosts && storage.upgradeCosts[i] !== undefined && storage.upgradeCosts[i] !== null) {
- upgrades[i].cost = Number(storage.upgradeCosts[i]) || upgrades[i].cost;
- }
- if (upgrades[i] && storage.upgradeBaseCosts && storage.upgradeBaseCosts[i] !== undefined && storage.upgradeBaseCosts[i] !== null) {
- upgrades[i].baseCost = Number(storage.upgradeBaseCosts[i]) || upgrades[i].baseCost;
- }
- if (upgrades[i] && storage.upgradeTypes && storage.upgradeTypes[i] !== undefined && storage.upgradeTypes[i] !== null) {
- upgrades[i].upgradeType = storage.upgradeTypes[i] || upgrades[i].upgradeType;
- }
- }
- // Ensure proper upgrade costs after loading
- syncUpgradeLevels();
+ if (storage.upgradeLevel !== undefined && upgradeButton) {
+ upgradeButton.level = Number(storage.upgradeLevel) || 1;
+ upgradeButton.cost = Number(storage.upgradeCost) || 10;
}
- // Load quests if they exist in storage
- if (storage.questCompleted && storage.questCompleted.length > 0 && quests && quests.length > 0) {
- for (var i = 0; i < quests.length && i < storage.questCompleted.length; i++) {
- if (quests[i] && storage.questCompleted[i] !== undefined && storage.questCompleted[i] !== null) {
- quests[i].completed = Boolean(storage.questCompleted[i]);
- }
- if (quests[i] && storage.questCollected && storage.questCollected[i] !== undefined && storage.questCollected[i] !== null) {
- quests[i].collected = Boolean(storage.questCollected[i]);
- }
- if (quests[i] && storage.questCurrentLevels && storage.questCurrentLevels[i] !== undefined && storage.questCurrentLevels[i] !== null) {
- quests[i].currentLevel = Number(storage.questCurrentLevels[i]) || 0;
- // Update quest properties based on current level
- if (quests[i].isProgressive && quests[i].questType && questTemplates[quests[i].questType]) {
- var template = questTemplates[quests[i].questType];
- var currentLevel = quests[i].currentLevel;
- if (template && template.levels && currentLevel >= 0 && currentLevel < template.levels.length && template.levels[currentLevel]) {
- quests[i].target = template.levels[currentLevel].target || quests[i].target;
- quests[i].reward = template.levels[currentLevel].reward || quests[i].reward;
- quests[i].nameKey = template.levels[currentLevel].nameKey || quests[i].nameKey;
- }
- }
- }
- if (quests[i] && storage.questQuestTypes && storage.questQuestTypes[i] !== undefined && storage.questQuestTypes[i] !== null) {
- quests[i].questType = storage.questQuestTypes[i] || quests[i].questType;
- }
- if (quests[i] && storage.questIsProgressive && storage.questIsProgressive[i] !== undefined && storage.questIsProgressive[i] !== null) {
- quests[i].isProgressive = Boolean(storage.questIsProgressive[i]);
- }
- if (quests[i] && storage.questTypes && storage.questTypes[i] !== undefined && storage.questTypes[i] !== null) {
- quests[i].type = storage.questTypes[i] || quests[i].type;
- }
- if (quests[i] && storage.questTargets && storage.questTargets[i] !== undefined && storage.questTargets[i] !== null) {
- quests[i].target = Number(storage.questTargets[i]) || quests[i].target;
- }
- if (quests[i] && storage.questRewards && storage.questRewards[i] !== undefined && storage.questRewards[i] !== null) {
- quests[i].reward = Number(storage.questRewards[i]) || quests[i].reward;
- }
- }
- }
} catch (e) {
console.log('Error loading game:', e);
- // Initialize with default values if loading fails
- points = 0;
- totalClicks = 0;
- totalSpent = 0;
}
}
+// Load saved game
+loadGame();
+// Create main red button
+var mainButton = game.addChild(LK.getAsset('redButton', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 1024,
+ y: 1366
+}));
+// Create points display
+var pointsText = new Text2('0 Points', {
+ size: 80,
+ fill: 0xFFFFFF
+});
+pointsText.anchor.set(0.5, 0.5);
+pointsText.x = 1024;
+pointsText.y = 600;
+game.addChild(pointsText);
+// Create upgrade button
+var upgradeButton = new Upgrade('Click Power', 10, 1.5);
+upgradeButton.x = 1024;
+upgradeButton.y = 1800;
+game.addChild(upgradeButton);
+// Create quest button
+var questButton = game.addChild(LK.getAsset('questButton', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 1750,
+ y: 200
+}));
+var questText = new Text2('QUEST', {
+ size: 24,
+ fill: 0xFFFFFF
+});
+questText.anchor.set(0.5, 0.5);
+questText.x = 1750;
+questText.y = 200;
+game.addChild(questText);
+// Quest system
+var quests = [{
+ name: 'Get 100 Points',
+ target: 100,
+ reward: 50,
+ completed: false,
+ collected: false,
+ type: 'points'
+}, {
+ name: 'Click 50 Times',
+ target: 50,
+ reward: 25,
+ completed: false,
+ collected: false,
+ type: 'clicks'
+}];
+var questMenu = null;
+var questMenuOpen = false;
+function checkQuests() {
+ for (var i = 0; i < quests.length; i++) {
+ var quest = quests[i];
+ if (!quest.completed) {
+ var progress = 0;
+ if (quest.type === 'points') {
+ progress = points;
+ } else if (quest.type === 'clicks') {
+ progress = totalClicks;
+ }
+ if (progress >= quest.target) {
+ quest.completed = true;
+ }
+ }
+ }
+}
function createQuestMenu() {
questMenu = new Container();
- var menuBackground = questMenu.attachAsset('questMenu', {
+ // Menu background
+ var menuBg = questMenu.attachAsset('questButton', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
- y: 1366
+ y: 1366,
+ scaleX: 8,
+ scaleY: 10
});
- menuBackground.alpha = 0.95;
- var titleText = new Text2('QUEST LIST', {
- size: 70,
- fill: 0xFFD700
+ menuBg.alpha = 0.9;
+ // Title
+ var titleText = new Text2('QUESTS', {
+ size: 60,
+ fill: 0xFFFFFF
});
- titleText.anchor.set(0.5, 0);
+ titleText.anchor.set(0.5, 0.5);
titleText.x = 1024;
- titleText.y = 180;
+ titleText.y = 400;
questMenu.addChild(titleText);
- var closeButton = questMenu.addChild(LK.getAsset('closeButton', {
- anchorX: 0.5,
- anchorY: 0.5,
- x: 1750,
- y: 250
- }));
- var closeText = new Text2('X', {
+ // Close button
+ var closeButton = new Text2('X', {
size: 50,
- fill: 0xFFFFFF
+ fill: 0xFF0000
});
- closeText.anchor.set(0.5, 0.5);
- closeText.x = 1750;
- closeText.y = 250;
- questMenu.addChild(closeText);
- closeButton.down = function (x, y, obj) {
+ closeButton.anchor.set(0.5, 0.5);
+ closeButton.x = 1500;
+ closeButton.y = 400;
+ questMenu.addChild(closeButton);
+ closeButton.down = function () {
questMenuOpen = false;
game.removeChild(questMenu);
questMenu = null;
};
- // Add quest items
+ // Quest items
for (var i = 0; i < quests.length; i++) {
- var questItem = new QuestItem(quests[i]);
- questItem.x = 350;
- questItem.y = 400 + i * 200;
- questMenu.addChild(questItem);
- questItem.updateDisplay();
+ var quest = quests[i];
+ var questText = new Text2(quest.name, {
+ size: 40,
+ fill: quest.completed ? 0x00FF00 : 0xFFFFFF
+ });
+ questText.anchor.set(0.5, 0.5);
+ questText.x = 1024;
+ questText.y = 600 + i * 80;
+ questMenu.addChild(questText);
+ if (quest.completed && !quest.collected) {
+ var collectButton = new Text2('COLLECT +' + quest.reward, {
+ size: 30,
+ fill: 0xFFFF00
+ });
+ collectButton.anchor.set(0.5, 0.5);
+ collectButton.x = 1024;
+ collectButton.y = 630 + i * 80;
+ questMenu.addChild(collectButton);
+ collectButton.questIndex = i;
+ collectButton.down = function () {
+ var quest = quests[this.questIndex];
+ if (quest.completed && !quest.collected) {
+ points += quest.reward;
+ quest.collected = true;
+ updatePointsDisplay();
+ saveGame();
+ // Refresh quest menu
+ game.removeChild(questMenu);
+ createQuestMenu();
+ }
+ };
+ }
}
game.addChild(questMenu);
}
-// Add glow effect to main button
-tween(mainButton, {
- tint: 0xFF4444
-}, {
- duration: 200
-});
+// Click power calculation
+function getClickValue() {
+ return clickPower * upgradeButton.level;
+}
// Event handlers
mainButton.down = function (x, y, obj) {
- var currentTime = Date.now();
- if (currentTime - lastClickTime >= clickDelay) {
- lastClickTime = currentTime;
- var clickValue = getClickValue();
- points += clickValue;
- totalClicks++;
- // Create animated text showing earned points
- var earnedText = new Text2('+' + formatNumber(clickValue), {
- size: 60,
- fill: 0xFFFF00
- });
- earnedText.anchor.set(0.5, 0.5);
- earnedText.x = 1024;
- earnedText.y = 1200;
- earnedText.alpha = 1.0;
- game.addChild(earnedText);
- // Animate the earned points text
- tween(earnedText, {
- y: earnedText.y - 100,
- alpha: 0.0,
- scaleX: 1.5,
- scaleY: 1.5
- }, {
- duration: 1000,
- easing: tween.easeOut,
- onFinish: function onFinish() {
- game.removeChild(earnedText);
- }
- });
- // Enhanced visual feedback with glow effects
- tween(mainButton, {
- scaleX: 0.85,
- scaleY: 0.85,
- tint: 0xFF6666
- }, {
- duration: 80
- });
- tween(mainButton, {
- scaleX: 1.05,
- scaleY: 1.05,
- tint: 0xDC143C
- }, {
- duration: 120,
- onFinish: function onFinish() {
- tween(mainButton, {
- scaleX: 1.0,
- scaleY: 1.0
- }, {
- duration: 80
- });
- }
- });
- // Button border animations removed
- updatePointsDisplay();
- checkQuestCompletion();
- saveGame();
- }
+ var clickValue = getClickValue();
+ points += clickValue;
+ totalClicks++;
+ // Visual feedback
+ tween(mainButton, {
+ scaleX: 0.9,
+ scaleY: 0.9
+ }, {
+ duration: 100,
+ onFinish: function onFinish() {
+ tween(mainButton, {
+ scaleX: 1.0,
+ scaleY: 1.0
+ }, {
+ duration: 100
+ });
+ }
+ });
+ // Show points gained
+ var earnedText = new Text2('+' + formatNumber(clickValue), {
+ size: 50,
+ fill: 0xFFFF00
+ });
+ earnedText.anchor.set(0.5, 0.5);
+ earnedText.x = 1024;
+ earnedText.y = 1200;
+ game.addChild(earnedText);
+ tween(earnedText, {
+ y: earnedText.y - 100,
+ alpha: 0
+ }, {
+ duration: 1000,
+ onFinish: function onFinish() {
+ game.removeChild(earnedText);
+ }
+ });
+ updatePointsDisplay();
+ checkQuests();
+ saveGame();
};
-// Language button handler removed
questButton.down = function (x, y, obj) {
if (!questMenuOpen) {
questMenuOpen = true;
createQuestMenu();
}
};
// Initialize display
updatePointsDisplay();
-updateAllUpgradeButtons();
-// Initialize upgrade costs properly
-syncUpgradeLevels();
+upgradeButton.updateDisplay();
+// Auto-save every 5 seconds
game.update = function () {
- // Auto-save every 5 seconds
if (LK.ticks % 300 === 0) {
saveGame();
}
};
\ No newline at end of file