From 9378455bad7cbf88c720905e3faf0cdd72e7f361 Mon Sep 17 00:00:00 2001 From: ElnarKast Date: Tue, 25 Mar 2025 11:04:52 +0200 Subject: [PATCH 1/4] Achivements amd golden cookie --- src/pages/CookieClicker.vue | 72 ++++++++++++++++++++++++++++++------- 1 file changed, 59 insertions(+), 13 deletions(-) diff --git a/src/pages/CookieClicker.vue b/src/pages/CookieClicker.vue index 0727f08..67b1cbe 100644 --- a/src/pages/CookieClicker.vue +++ b/src/pages/CookieClicker.vue @@ -1,5 +1,5 @@ + \ No newline at end of file + + +
+

Your achievements:

+ +
+ From 9c0ab374cbc74cb5fbaed242b30529b4cd1ff28a Mon Sep 17 00:00:00 2001 From: ElnarKast Date: Tue, 25 Mar 2025 11:36:09 +0200 Subject: [PATCH 2/4] commit --- src/pages/CookieClicker.vue | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/pages/CookieClicker.vue b/src/pages/CookieClicker.vue index 67b1cbe..1049dd3 100644 --- a/src/pages/CookieClicker.vue +++ b/src/pages/CookieClicker.vue @@ -9,14 +9,14 @@ const buildings = ref([ { name: 'Factory', price: 10_000, cps: 100, count: 0}, ]); -// Статистика для ачивок + const achievements = ref({ firstClick: false, firstUpgrade: false, goldenCookie: false }); -// Функция для покупки здания + function buyBuilding(building) { cookies.value -= building.price; building.price += Math.ceil(building.price / 100 * 15); @@ -27,7 +27,7 @@ function buyBuilding(building) { } } -// Реактивный расчет CPS + let cps = computed(() => { let cps = 0; buildings.value.forEach(building => { @@ -36,7 +36,7 @@ let cps = computed(() => { return cps; }); -// Обработчик клика по печеньке + function onCookieClick() { cookies.value++; if (!achievements.value.firstClick) { @@ -45,15 +45,15 @@ function onCookieClick() { } } -// Секундный интервал, для накопления печенек + setInterval(() => { cookies.value += cps.value; - // Появление золотой печеньки с шансом 1/1000 + if (!achievements.value.goldenCookie && Math.random() < 0.001) { achievements.value.goldenCookie = true; alert("Поздравляем! Золотая печенька появилась! Получите бонус!"); - cookies.value += 1000; // например, 1000 дополнительных печенек + cookies.value += 1000; } document.title = '🍪' + cookies.value.toFixed(1) + ' Cookies!'; From 58841fc25869633ffc6ce405e64013d7544265ed Mon Sep 17 00:00:00 2001 From: ElnarKast Date: Tue, 25 Mar 2025 13:40:03 +0200 Subject: [PATCH 3/4] more beautyfull --- src/pages/CookieClicker.vue | 126 +++++++++++++++++++++++------------- 1 file changed, 80 insertions(+), 46 deletions(-) diff --git a/src/pages/CookieClicker.vue b/src/pages/CookieClicker.vue index 1049dd3..1d6f9f5 100644 --- a/src/pages/CookieClicker.vue +++ b/src/pages/CookieClicker.vue @@ -2,94 +2,128 @@ import { computed, ref, watch } from 'vue'; const cookies = ref(0); +const clickPower = ref(1); 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: 'Factory', price: 10000, cps: 100, count: 0}, ]); +const upgrades = ref([ + { name: 'Better Oven', price: 100, bonus: 1, bought: false }, + { name: 'Tastier Dough', price: 200, bonus: 2, bought: false }, + { name: 'Improved Rolling Pins', price: 500, bonus: 5, bought: false }, +]); const achievements = ref({ firstClick: false, firstUpgrade: false, + firstUpgradeBought: false, goldenCookie: false }); +const isClicked = ref(false); function buyBuilding(building) { - cookies.value -= building.price; - building.price += Math.ceil(building.price / 100 * 15); - building.count++; - if (!achievements.value.firstUpgrade) { - achievements.value.firstUpgrade = true; - alert("CONGRATS!NEW ACHIVEMENT"); + if (cookies.value >= building.price) { + cookies.value -= building.price; + building.price += Math.ceil(building.price * 0.15); + building.count++; } } +function buyUpgrade(upgrade) { + if (cookies.value >= upgrade.price && !upgrade.bought) { + cookies.value -= upgrade.price; + clickPower.value += upgrade.bonus; + upgrade.bought = true; + if (!achievements.value.firstUpgradeBought) { + achievements.value.firstUpgradeBought = true; + alert("CONGRATS! FIRST UPGRADE ACHIEVEMENT"); + } + } +} let cps = computed(() => { - let cps = 0; - buildings.value.forEach(building => { - cps += building.cps * building.count; - }); - return cps; + return buildings.value.reduce((total, building) => total + building.cps * building.count, 0); }); - function onCookieClick() { - cookies.value++; + cookies.value += clickPower.value; if (!achievements.value.firstClick) { achievements.value.firstClick = true; - alert("CONGRATS!NEW ACHIVEMENT"); + alert("CONGRATS! NEW ACHIEVEMENT"); } + isClicked.value = true; + setTimeout(() => isClicked.value = false, 300); } - setInterval(() => { cookies.value += cps.value; - - - if (!achievements.value.goldenCookie && Math.random() < 0.001) { + if (!achievements.value.goldenCookie && Math.random() < 0.1) { achievements.value.goldenCookie = true; - alert("Поздравляем! Золотая печенька появилась! Получите бонус!"); - cookies.value += 1000; + alert("GOLDEN COOKIE! WHAT, HOW?!"); + cookies.value += 1000; } - - document.title = '🍪' + cookies.value.toFixed(1) + ' Cookies!'; }, 1000); + \ No newline at end of file From d125c2610ccf86b47421d692d10b751ea6c50df6 Mon Sep 17 00:00:00 2001 From: ElnarKast <ваш.email@example.com> Date: Tue, 15 Apr 2025 12:53:07 +0300 Subject: [PATCH 4/4] webap example on vibrate --- src/index.js | 2 ++ src/pages/Vibration.vue | 20 ++++++++++++++++++++ webpack.config.js | 1 + 3 files changed, 23 insertions(+) create mode 100644 src/pages/Vibration.vue diff --git a/src/index.js b/src/index.js index 0be6019..1b05bcb 100644 --- a/src/index.js +++ b/src/index.js @@ -10,6 +10,7 @@ import Modals from './pages/Modals.vue'; import ChuckNorris from './pages/ChuckNorris.vue'; import RickAndMorty from './pages/RickAndMorty.vue'; import CookieClicker from './pages/CookieClicker.vue'; +import Vibration from './pages/Vibration.vue'; const routes = [ { path: '/', component: ToDo, name: 'ToDo' }, @@ -17,6 +18,7 @@ const routes = [ { path: '/chuck', component: ChuckNorris, name: 'Chuck Norris' }, { path: '/rickandmorty', component: RickAndMorty, name: 'Rick And Morty' }, { path: '/cookieclicker', component: CookieClicker, name: 'Cookie Clicker', meta: { container: false } }, + { path: '/vibration', component: Vibration, name: 'Vibration' }, ]; const router = createRouter({ diff --git a/src/pages/Vibration.vue b/src/pages/Vibration.vue new file mode 100644 index 0000000..49b4ab5 --- /dev/null +++ b/src/pages/Vibration.vue @@ -0,0 +1,20 @@ + + \ No newline at end of file diff --git a/webpack.config.js b/webpack.config.js index 3d77c84..dc5e268 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -19,6 +19,7 @@ export default { compress: true, port: 9000, historyApiFallback: true, + allowedHosts: "all" }, module: { rules: [