From 38b6002ceab1ac3d11cce46e2e88e115096bfa8f Mon Sep 17 00:00:00 2001 From: Rait Rips Date: Tue, 17 Jun 2025 21:31:09 +0300 Subject: [PATCH] Add upgrades for cookie clicker --- src/pages/CookieClicker.vue | 88 ++++++++++++++++++++++++++++++++----- 1 file changed, 77 insertions(+), 11 deletions(-) diff --git a/src/pages/CookieClicker.vue b/src/pages/CookieClicker.vue index 0727f08..8631f04 100644 --- a/src/pages/CookieClicker.vue +++ b/src/pages/CookieClicker.vue @@ -3,21 +3,44 @@ import { computed, ref } from 'vue'; const cookies = ref(0); const buildings = ref([ - { name: 'Cursor', price: 15, cps: 0.1, count: 0}, - { name: 'Grandma', price: 100, cps: 1, count: 0}, - { name: 'Farm', price: 1000, cps: 10, count: 0}, - { name: 'Factory', price: 10_000, cps: 100, count: 0}, + { name: 'Cursor', price: 15, cps: 0.1, count: 0, upgrades: [ + { name: 'Reinforced Cursor', cost: 100, multiplier: 2, purchased: false }, + { name: 'Carbon Fiber Cursor', cost: 500, multiplier: 3, purchased: false }, + ]}, + { name: 'Grandma', price: 100, cps: 1, count: 0, upgrades: [ + { name: 'Professional Baker', cost: 1000, multiplier: 2, purchased: false }, + { name: 'Industrial Oven', cost: 5000, multiplier: 3, purchased: false }, + ]}, + { name: 'Farm', price: 1000, cps: 10, count: 0, upgrades: [ + { name: 'Organic Fertilizer', cost: 5000, multiplier: 2, purchased: false }, + { name: 'Automated Harvesters', cost: 15000, multiplier: 3, purchased: false }, + ]}, + { name: 'Factory', price: 10000, cps: 100, count: 0, upgrades: [ + { name: 'Quantum Assembly', cost: 50000, multiplier: 2, purchased: false }, + { name: 'Unionized Workplace', cost: 200000, multiplier: 3, purchased: false }, + ]}, ]); +const selectedBuilding = ref(null); + function buyBuilding(building){ cookies.value -= building.price; building.price += Math.ceil(building.price / 100 * 15); building.count++; } +function buyUpgrade(upgrade) { + if (cookies.value < upgrade.cost) return; + cookies.value -= upgrade.cost; + upgrade.purchased = true; +} let cps = computed(() => { let cps = 0; buildings.value.forEach(building => { - cps+=building.cps*building.count; + let multiplier = 1; + building.upgrades.forEach(upgrade => { + if (upgrade.purchased) multiplier *= upgrade.multiplier; + }); + cps += building.cps * building.count * multiplier; }); return cps; }); @@ -37,13 +60,56 @@ setInterval(()=>{ - - \ No newline at end of file + + \ No newline at end of file