|
|
document.addEventListener('DOMContentLoaded', () => { |
|
|
|
|
|
let balance = localStorage.getItem('coinBalance') ? parseInt(localStorage.getItem('coinBalance')) : 0; |
|
|
let totalTaps = localStorage.getItem('totalTaps') ? parseInt(localStorage.getItem('totalTaps')) : 0; |
|
|
let coinsPerTap = 1; |
|
|
|
|
|
|
|
|
const character = document.getElementById('character'); |
|
|
const balanceDisplay = document.querySelector('#balance span'); |
|
|
const totalTapsDisplay = document.getElementById('total-taps'); |
|
|
const coinsPerTapDisplay = document.getElementById('coins-per-tap'); |
|
|
const coinEffect = document.getElementById('coin-effect'); |
|
|
|
|
|
|
|
|
updateDisplays(); |
|
|
|
|
|
|
|
|
character.addEventListener('click', (e) => { |
|
|
|
|
|
totalTaps++; |
|
|
balance += coinsPerTap; |
|
|
|
|
|
|
|
|
localStorage.setItem('coinBalance', balance); |
|
|
localStorage.setItem('totalTaps', totalTaps); |
|
|
|
|
|
|
|
|
updateDisplays(); |
|
|
|
|
|
|
|
|
createCoinEffect(e); |
|
|
|
|
|
|
|
|
character.classList.add('animate-pulse'); |
|
|
setTimeout(() => { |
|
|
character.classList.remove('animate-pulse'); |
|
|
}, 200); |
|
|
}); |
|
|
|
|
|
function updateDisplays() { |
|
|
balanceDisplay.textContent = balance.toLocaleString(); |
|
|
totalTapsDisplay.textContent = totalTaps.toLocaleString(); |
|
|
coinsPerTapDisplay.textContent = coinsPerTap; |
|
|
} |
|
|
|
|
|
function createCoinEffect(e) { |
|
|
|
|
|
const rect = character.getBoundingClientRect(); |
|
|
const centerX = rect.left + rect.width / 2; |
|
|
const centerY = rect.top + rect.height / 2; |
|
|
|
|
|
|
|
|
for (let i = 0; i < 3; i++) { |
|
|
const coin = document.createElement('div'); |
|
|
coin.classList.add('coin'); |
|
|
|
|
|
|
|
|
const offsetX = (Math.random() - 0.5) * 40; |
|
|
const offsetY = (Math.random() - 0.5) * 40; |
|
|
|
|
|
coin.style.left = `${centerX + offsetX}px`; |
|
|
coin.style.top = `${centerY + offsetY}px`; |
|
|
|
|
|
|
|
|
coin.style.animationDelay = `${i * 0.1}s`; |
|
|
|
|
|
document.body.appendChild(coin); |
|
|
|
|
|
|
|
|
setTimeout(() => { |
|
|
coin.remove(); |
|
|
}, 800); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (totalTaps > 0) { |
|
|
|
|
|
const welcomeBack = document.createElement('div'); |
|
|
welcomeBack.className = 'fixed top-4 left-1/2 transform -translate-x-1/2 bg-green-500 text-white px-4 py-2 rounded-full shadow-lg z-50 animate-bounce'; |
|
|
welcomeBack.textContent = `Welcome back! You have ${balance} coins!`; |
|
|
document.body.appendChild(welcomeBack); |
|
|
|
|
|
setTimeout(() => { |
|
|
welcomeBack.remove(); |
|
|
}, 3000); |
|
|
} |
|
|
}); |