/
FlaZe
/
Test
Обзор
Документация
Войти
/
FlaZe
/
Test
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Testigrulka/Clicker.html
588 строк
20 KB
FlaZe
обнова
02 сен 2025, 23:24
02 сен 2025, 23:24
cb88793
Код
Авторство
О чём код?
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <title>Cookie Clicker</title> <style> :root { --bg-color: #1a1a1a; --text-color: #ffffff; --accent-color: #4caf50; --card-bg: #2c2c2c; --cookie-size: 14rem; } body { margin: 0; background: linear-gradient(135deg, #1a1a1a, #2e2e2e); color: var(--text-color); font-family: 'Segoe UI', sans-serif; min-height: 100vh; display: flex; flex-direction: column; transition: all 0.3s ease; } .navbar { padding: 1rem 2rem; background: var(--card-bg); border-bottom: 1px solid #333; display: flex; justify-content: space-between; align-items: center; box-shadow: 0 2px 10px rgba(0,0,0,0.2); } .container { flex: 1; padding: 2rem; max-width: 1200px; margin: auto; } .main-content { text-align: center; position: relative; } .cookie { font-size: var(--cookie-size); cursor: pointer; margin: 2rem auto; text-shadow: 0 0 10px var(--accent-color); transition: transform 0.2s ease-in-out; user-select: none; -webkit-user-drag: none; /* Новая уникальная печенька */ width: 100px; height: 95px; border-radius: 50% 50% 48% 48%; position: relative; display: inline-block; background: radial-gradient(circle at 30% 30%, #f9d667 0%, #f9d667 40%, transparent 40%), radial-gradient(circle at 70% 70%, #f9d667 0%, #f9d667 40%, transparent 40%); background-blend-mode: multiply; box-shadow: 0 0 10px rgba(255, 214, 102, 0.5), inset 0 0 10px rgba(255, 255, 255, 0.3), inset 0 0 20px rgba(255, 255, 255, 0.1); animation: subtlePulse 5s infinite alternate ease-in-out; } .cookie::before { content: ''; position: absolute; top: 30%; left: 40%; width: 20px; height: 20px; background: conic-gradient( from 0deg at 50% 50%, #b5651d 0deg, #ffaa40 90deg, #b5651d 180deg ); border-radius: 50%; box-shadow: 0 0 3px rgba(0,0,0,0.3), inset 0 0 5px #995c11; transform: rotate(-15deg); } .cookie::after { content: ''; position: absolute; top: 35%; left: 45%; width: 12px; height: 12px; background: radial-gradient(circle, #fff, #ddd); border-radius: 50%; box-shadow: 0 0 2px rgba(0,0,0,0.2); } @keyframes bounce { 0% { transform: scale(1); } 50% { transform: scale(0.95); } 100% { transform: scale(1); } } @keyframes subtlePulse { 0% { box-shadow: 0 0 10px rgba(255, 214, 102, 0.5), inset 0 0 10px rgba(255, 255, 255, 0.3); } 100% { box-shadow: 0 0 15px rgba(255, 214, 102, 0.6), inset 0 0 15px rgba(255, 255, 255, 0.4); } } .cookie:active { animation: bounce 0.2s ease; } .counter { font-size: 2.5rem; margin-bottom: 2rem; background: rgba(255,255,255,0.05); padding: 1rem; border-radius: 10px; box-shadow: inset 0 0 10px #000; } .upgrades { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; margin-top: 2rem; justify-items: center; } .upgrade-column { display: flex; flex-direction: column; gap: 1rem; width: 100%; } .upgrade { background: var(--card-bg); padding: 1rem; border-left: 4px solid transparent; cursor: pointer; border-radius: 10px; transition: all 0.3s ease; position: relative; overflow: hidden; display: flex; align-items: center; gap: 1rem; box-shadow: 0 0 5px rgba(0,0,0,0.3); } .upgrade::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(120deg, transparent, rgba(76, 175, 80, 0.2), transparent); transition: left 0.5s ease; } .upgrade:hover::before { left: 100%; } .upgrade:hover { background: #3a3a3a; border-left-color: var(--accent-color); transform: translateX(-5px); box-shadow: 0 0 10px rgba(76, 175, 80, 0.5); } .auto-upgrade .icon { color: #ff9800; } .multi-upgrade .icon { color: #2196f3; } .production-upgrade .icon { color: #ff5722; } .story-section { margin-top: 2rem; padding: 1rem; background: var(--card-bg); border-radius: 10px; max-width: 600px; margin-left: auto; margin-right: auto; box-shadow: 0 0 10px rgba(0,0,0,0.2); } .story-text { font-style: italic; color: #ccc; line-height: 1.6; } .achievement-section { margin-top: 2rem; padding: 1rem; background: var(--card-bg); border-radius: 10px; max-width: 600px; margin-left: auto; margin-right: auto; box-shadow: 0 0 10px rgba(0,0,0,0.2); } .achievements { display: flex; overflow-x: auto; gap: 1rem; padding: 0.5rem; scroll-behavior: smooth; } .achievement { background: var(--card-bg); padding: 0.5rem 1rem; border-radius: 10px; min-width: 150px; text-align: center; display: flex; align-items: center; gap: 0.5rem; transition: all 0.3s ease; } .achievement.completed { background: #4caf50 !important; color: white !important; border-left: 4px solid #fff; } .notification { position: fixed; top: 1rem; right: 1rem; background: var(--accent-color); color: white; padding: 0.75rem 1rem; border-radius: 10px; box-shadow: 0 2px 10px rgba(0,0,0,0.2); animation: slideIn 0.3s ease-out; opacity: 1; z-index: 999; } @keyframes slideIn { from { transform: translateX(100%); opacity: 0; } to { transform: translateX(0); opacity: 1; } } .notification.fade-out { animation: fadeOut 0.5s ease-in forwards; } @keyframes fadeOut { from { opacity: 1; } to { opacity: 0; transform: translateX(100%); } } </style> </head> <body> <nav class="navbar"> <div>🍪 Cookie Clicker</div> </nav> <div class="container"> <div class="main-content"> <div class="counter" id="counter">Куки: 0 | CPS: 0 | x1 клик</div> <div class="cookie" id="cookie"></div> <div class="upgrades" id="upgradesList"> <div class="upgrade-column auto-column"></div> <div class="upgrade-column multi-column"></div> <div class="upgrade-column production-column"></div> </div> <div class="story-section" id="storySection"> <h3>📖 История</h3> <div class="story-text" id="storyText">Вы начали свой путь как простой пекарь, но вскоре поняли, что ваша печенька может стать легендой...</div> </div> <div class="achievement-section"> <h3 style="margin: 0 0 1rem 0;">🏆 Достижения</h3> <div class="achievements" id="achievementsList"></div> </div> </div> </div> <script> let cookies = 0; let cps = 0; let clickMultiplier = 1; const counter = document.getElementById('counter'); const cookie = document.getElementById('cookie'); const upgradesList = document.getElementById('upgradesList'); const achievementsList = document.getElementById('achievementsList'); const storyText = document.getElementById('storyText'); // Инициализация улучшений const upgrades = [ // Автокуки { name: "⚙️ Автокуки I", cost: 50, cps: 1, level: 0, maxLevel: 10, type: 'auto' }, { name: "⚙️ Автокуки II", cost: 500, cps: 10, level: 0, maxLevel: 5, type: 'auto' }, { name: "⚙️ Автокуки III", cost: 5000, cps: 100, level: 0, maxLevel: 3, type: 'auto' }, { name: "⚙️ Автокуки IV", cost: 50000, cps: 1000, level: 0, maxLevel: 2, type: 'auto' }, // Мультиклик { name: "🔄 Мультиклик I", cost: 1000, multiplier: 2, level: 0, maxLevel: 3, type: 'multi' }, { name: "🔄 Мультиклик II", cost: 10000, multiplier: 3, level: 0, maxLevel: 2, type: 'multi' }, { name: "🔄 Мультиклик III", cost: 100000, multiplier: 5, level: 0, maxLevel: 1, type: 'multi' }, // Производство { name: "🏭 Печь I", cost: 1000, production: 5, level: 0, maxLevel: 5, type: 'production' }, { name: "🏭 Фабрика I", cost: 10000, production: 50, level: 0, maxLevel: 3, type: 'production' }, { name: "🏭 Конвейер I", cost: 100000, production: 500, level: 0, maxLevel: 2, type: 'production' } ]; // Инициализация достижений const achievements = [ { name: "🍪 Первый вкус", condition: 10, completed: false }, { name: "🍪 Много куки", condition: 100, completed: false }, { name: "🍪 Профи куки", condition: 1000, completed: false }, { name: "🍪 Легенда куки", condition: 10000, completed: false }, { name: "🍪 Миллионер куки", condition: 1000000, completed: false } ]; // Сюжетные события const storyEvents = [ { name: "Печь первого пекаря", condition: 10, text: "Вы создали первую печь для выпечки печеньки. Это был важный шаг в вашем пути!" }, { name: "Расширение производства", condition: 100, text: "Вы решили расширить производство и построили вторую печь. Теперь вы можете выпускать больше печеньки!" }, { name: "Франшиза", condition: 1000, text: "Ваш бизнес стал процветать. Вы решили открыть первую филиальную пекарню!" }, { name: "Мировая слава", condition: 10000, text: "Ваши печеньки стали известны по всему миру. Ваши рецепты изучают профессиональные пекари!" }, { name: "Корпорация печеньки", condition: 1000000, text: "Вы официально стали крупнейшей компанией по производству печеньки в мире!" } ]; // Обработка кликов cookie.addEventListener('click', () => { for (let i = 0; i < clickMultiplier; i++) { cookies++; } updateCounter(); checkAchievements(); checkStoryEvents(); }); // Автоматическая генерация куки setInterval(() => { if (cps > 0) { cookies += cps; updateCounter(); } // Генерация от производства upgrades.forEach(upg => { if (upg.type === 'production' && upg.level > 0) { cookies += upg.production * upg.level; } }); }, 1000); // Создание интерфейса улучшений function createUpgradesUI() { const autoColumn = document.querySelector('.auto-column'); const multiColumn = document.querySelector('.multi-column'); const productionColumn = document.querySelector('.production-column'); autoColumn.innerHTML = ''; multiColumn.innerHTML = ''; productionColumn.innerHTML = ''; upgrades.forEach((upgrade, index) => { const upgradeEl = document.createElement('div'); upgradeEl.className = `upgrade ${upgrade.type}-upgrade`; const icon = document.createElement('span'); icon.className = 'icon'; icon.textContent = upgrade.name.split(" ")[0]; upgradeEl.appendChild(icon); const text = document.createElement('span'); if (upgrade.type === 'auto') { text.textContent = `${upgrade.name} (Уровень ${upgrade.level}/${upgrade.maxLevel}) - ${formatNumber(upgrade.cost)} куки`; } else if (upgrade.type === 'multi') { text.textContent = `${upgrade.name} (x${upgrade.multiplier}) - ${formatNumber(upgrade.cost)} куки`; } else { text.textContent = `${upgrade.name} (Уровень ${upgrade.level}/${upgrade.maxLevel}) - ${formatNumber(upgrade.cost)} куки`; } upgradeEl.appendChild(text); upgradeEl.addEventListener('click', () => buyUpgrade(index)); if (upgrade.type === 'auto') { autoColumn.appendChild(upgradeEl); } else if (upgrade.type === 'multi') { multiColumn.appendChild(upgradeEl); } else { productionColumn.appendChild(upgradeEl); } }); } // Покупка улучшения function buyUpgrade(index) { const upgrade = upgrades[index]; if (cookies >= upgrade.cost && upgrade.level < upgrade.maxLevel) { cookies -= upgrade.cost; if (upgrade.type === 'multi') { clickMultiplier = upgrade.multiplier; } else if (upgrade.type === 'auto') { cps += upgrade.cps; } upgrade.level++; // Увеличиваем стоимость улучшения upgrade.cost = Math.floor(upgrade.cost * 1.5); createUpgradesUI(); updateCounter(); showNotification(`Покупка: ${upgrade.name}`); } } // Обновление счетчика function updateCounter() { counter.textContent = `Куки: ${formatNumber(cookies)} | CPS: ${formatNumber(cps)} | x${clickMultiplier} клик`; } // Форматирование чисел function formatNumber(num) { if (num >= 1e12) return (num / 1e12).toFixed(1) + 'T'; if (num >= 1e9) return (num / 1e9).toFixed(1) + 'B'; if (num >= 1e6) return (num / 1e6).toFixed(1) + 'M'; if (num >= 1e3) return (num / 1e3).toFixed(1) + 'K'; return num; } // Проверка достижений function checkAchievements() { achievements.forEach((achievement, index) => { if (!achievement.completed && cookies >= achievement.condition) { achievement.completed = true; showNotification(`${achievement.name} ✅`); updateAchievements(); } }); } // Проверка сюжетных событий function checkStoryEvents() { storyEvents.forEach((event, index) => { if (!event.completed && cookies >= event.condition) { event.completed = true; updateStoryText(event.text); showNotification(`Событие: ${event.name}`); } }); } // Обновление списка достижений function updateAchievements() { achievementsList.innerHTML = ''; achievements.forEach(achievement => { const achievementEl = document.createElement('div'); achievementEl.className = 'achievement' + (achievement.completed ? ' completed' : ''); achievementEl.textContent = achievement.name; achievementsList.appendChild(achievementEl); }); // Прокручиваем к последнему достижению achievementsList.scrollLeft = achievementsList.scrollWidth; } // Обновление текста истории function updateStoryText(text) { storyText.textContent = text; storyText.style.color = '#4caf50'; setTimeout(() => { storyText.style.color = '#ccc'; }, 2000); } // Всплывающие уведомления function showNotification(message) { const notification = document.createElement('div'); notification.className = 'notification'; notification.textContent = message; document.body.appendChild(notification); setTimeout(() => { notification.classList.add('fade-out'); setTimeout(() => notification.remove(), 500); }, 3000); } // Инициализация createUpgradesUI(); updateCounter(); updateAchievements(); </script> </body> </html>