document.addEventListener('DOMContentLoaded', () => { const circle = document.getElementById('circle'); const smiley = document.getElementById('smiley'); const errorMessages = document.getElementById('error-messages'); const container = document.getElementById('container'); let lastX = 0; let lastY = 0; let currentX = 0; let currentY = 0; let velocityX = 0; let velocityY = 0; let size = 30; let isExploded = false; let isSecondPhase = false; const errorCodes = [ 'ERR_CIRCLE_OVERFLOW', 'CRITICAL_VELOCITY_EXCEEDED', 'SYSTEM_FAILURE_0x8F2A', 'BUFFER_OVERFLOW_EXCEPTION', 'RENDER_ENGINE_CRASH', 'PHYSICS_MODEL_BREAKDOWN', 'DIMENSION_BOUNDARY_BREACH', '0xDEADBEEF', 'CIRCULAR_REFERENCE_ERROR', 'CATASTROPHIC_FAILURE' ]; function update() { // Smooth follow with natural motion velocityX = (currentX - lastX) * 0.2; velocityY = (currentY - lastY) * 0.2; // Calculate speed (distance moved per frame) const speed = Math.sqrt(velocityX * velocityX + velocityY * velocityY); // Update circle position with smoothing lastX += (currentX - lastX) * 0.2; lastY += (currentY - lastY) * 0.2; if (!isExploded && !isSecondPhase) { circle.style.left = `${lastX}px`; circle.style.top = `${lastY}px`; // Adjust size based on mouse speed size = 30 + speed * 1.5; circle.style.width = `${size}px`; circle.style.height = `${size}px`; // Check if circle should pop if (size > 100) { explodeCircle(); } } requestAnimationFrame(update); } function explodeCircle() { isExploded = true; circle.classList.add('hidden'); errorMessages.classList.remove('hidden'); // Show random error messages let messageCount = 0; const maxMessages = 100; const showErrors = setInterval(() => { const randomX = Math.floor(Math.random() * window.innerWidth); const randomY = Math.floor(Math.random() * window.innerHeight); const randomError = errorCodes[Math.floor(Math.random() * errorCodes.length)]; const errorElement = document.createElement('div'); errorElement.textContent = randomError; errorElement.style.position = 'absolute'; errorElement.style.left = `${randomX}px`; errorElement.style.top = `${randomY}px`; errorMessages.appendChild(errorElement); messageCount++; if (messageCount >= maxMessages) { clearInterval(showErrors); // Reset after a delay setTimeout(() => { resetToSmiley(); }, 3000); } }, 50); } function resetToSmiley() { errorMessages.classList.add('hidden'); errorMessages.innerHTML = ''; smiley.classList.remove('hidden'); isSecondPhase = true; } document.addEventListener('mousemove', (event) => { currentX = event.clientX; currentY = event.clientY; }); update(); });