Spins: 0
🏆

Welcome to Wheel of Challenges!

Get ready for an exciting adventure of fun, laughter, and unforgettable moments!

🎯 Manage Challenges

🎮 Let the Fun Begin: Wheel of Challenges! 🎲

🌟 Ready for an adventure that will turn any occasion into an unforgettable experience? The Wheel of Challenges is your ultimate game companion, bringing endless fun and excitement to any gathering. Whether it's a family game night, birthday party, or casual hangout, this spinning wheel adds a thrilling random element to the mix! 🎉

🛠️ How to Use the Wheel of Challenges 🎯

Getting started with the Wheel of Challenges is super easy and fun. Just follow these simple steps:

  1. 🎪 Click the magical "Spin the Wheel" button to start the fun!
  2. ✨ Watch the wheel spin and land on a challenge – the suspense makes it exciting!
  3. 🎭 Accept your challenge and embrace the thrill of completing it!
  4. 🎨 Create your own challenges and add a personal twist to the game!

⭐ Amazing Features That Await You! 🌈

The Wheel of Challenges is packed with incredible features that make each spin more exciting. Check out some of the highlights:

🎉 Multiplayer Fun

Perfect for parties and gatherings! Compete with friends, family, or coworkers and enjoy the fun together.

🎵 Sound Effects

Immerse yourself with fun sound effects that play every time you spin the wheel!

✨ Custom Challenges

Add your own creative challenges! Personalize the game with unique tasks for more fun!

🏆 Track Progress

Keep track of your spins and challenges completed, and watch your victories grow!

💡 Why You'll Love the Wheel of Challenges! 🌟

The Wheel of Challenges isn't just a game – it's a dynamic, fun experience that brings people together. Whether you want to create hilarious moments or challenge your friends to do something outrageous, this tool makes it happen effortlessly.

  • 🎉 Get everyone involved in friendly competition
  • 🥳 Create fun and silly moments that everyone will enjoy
  • 📸 Take fun photos or videos and share the challenges on social media

Spin the wheel, accept the challenge, and make unforgettable memories! 🌟

Contact Us

Thank you for your message!
` }, privacy: { title: "Privacy Policy", content: `At Wheel of Challenges, we take your privacy seriously. This privacy policy explains how we collect, use, and protect your personal information.

• We only collect information that you voluntarily provide
• Your data is never sold to third parties
• We use industry-standard security measures
• You can request your data to be deleted at any time

Last updated: March 2024` }, disclaimer: { title: "Disclaimer", content: `Please read this disclaimer carefully before using Wheel of Challenges:

• Challenges are created by users and we don't endorse specific content
• Participate in challenges at your own risk
• We're not responsible for any consequences from challenge participation
• Some challenges may not be suitable for all ages or abilities

By using this site, you agree to these terms.` } }; function drawWheel() { const centerX = wheel.width / 2; const centerY = wheel.height / 2; const radius = Math.min(centerX, centerY) - 10; ctx.clearRect(0, 0, wheel.width, wheel.height); segments.forEach((segment, i) => { const startAngle = (i * 2 * Math.PI) / segments.length; const endAngle = ((i + 1) * 2 * Math.PI) / segments.length; // Draw segment ctx.beginPath(); ctx.moveTo(centerX, centerY); ctx.arc(centerX, centerY, radius, startAngle, endAngle); ctx.closePath(); ctx.fillStyle = segment.color; ctx.fill(); ctx.strokeStyle = '#fff'; ctx.lineWidth = 2; ctx.stroke(); // Add text ctx.save(); ctx.translate(centerX, centerY); ctx.rotate(startAngle + (Math.PI / segments.length)); ctx.textAlign = 'right'; ctx.fillStyle = '#fff'; ctx.font = 'bold 16px Arial'; ctx.fillText(segment.text, radius - 20, 0); ctx.restore(); }); // Draw center circle ctx.beginPath(); ctx.arc(centerX, centerY, 20, 0, 2 * Math.PI); ctx.fillStyle = '#ffd700'; ctx.fill(); ctx.strokeStyle = '#fff'; ctx.lineWidth = 2; ctx.stroke(); } function spinWheel() { if (isSpinning) return; isSpinning = true; spinBtn.disabled = true; result.style.display = 'none'; if (!isMuted) { spinSound.currentTime = 0; spinSound.play(); } const spinDuration = 4000; const minSpins = 5; const startTime = performance.now(); const totalRotation = (Math.random() * 2 + minSpins) * 2 * Math.PI; function animate(currentTime) { const elapsed = currentTime - startTime; const progress = Math.min(elapsed / spinDuration, 1); const easeOut = t => 1 - Math.pow(1 - t, 3); const rotation = totalRotation * easeOut(progress); ctx.save(); ctx.translate(wheel.width / 2, wheel.height / 2); ctx.rotate(rotation); ctx.translate(-wheel.width / 2, -wheel.height / 2); drawWheel(); ctx.restore(); if (progress < 1) { requestAnimationFrame(animate); } else { isSpinning = false; spinBtn.disabled = false; spins++; spinCount.textContent = `Spins: ${spins}`; if (!isMuted) { winSound.currentTime = 0; winSound.play(); } const finalAngle = totalRotation % (2 * Math.PI); const segmentAngle = (2 * Math.PI) / segments.length; const resultIndex = Math.floor(((2 * Math.PI - finalAngle) % (2 * Math.PI)) / segmentAngle); result.textContent = `Challenge: ${segments[resultIndex].text}`; result.style.display = 'block'; } } requestAnimationFrame(animate); } function addCustomChallenge() { const challenge = newChallengeInput.value.trim(); if (challenge) { const colors = [ "#FF6B6B", "#4ECDC4", "#45B7D1", "#96CEB4", "#D4A5A5", "#9B5DE5", "#F15BB5", "#FEE440", "#FF9A8B", "#88D8B0", "#FF85A1", "#FFC75F", "#907AD6", "#4DA1A9", "#F7A072", "#00AFB9" ]; let newColor = colors[Math.floor(Math.random() * colors.length)]; while (segments.some(segment => segment.color === newColor)) { newColor = colors[Math.floor(Math.random() * colors.length)]; } segments.push({ text: challenge, color: newColor }); if (!isMuted) { addSound.currentTime = 0; addSound.play(); } newChallengeInput.value = ''; drawWheel(); updateChallengeList(); } } function removeChallenge(index) { segments.splice(index, 1); drawWheel(); updateChallengeList(); } function updateChallengeList() { challengeList.innerHTML = ''; segments.forEach((segment, index) => { const div = document.createElement('div'); div.className = 'challenge-item'; div.style.backgroundColor = segment.color; div.innerHTML = ` ${segment.text} `; challengeList.appendChild(div); }); } function scrollToTop() { window.scrollTo({ top: 0, behavior: 'smooth' }); } function showModal(page) { const content = modalContent[page]; if (content) { modalTitle.textContent = content.title; modalBody.innerHTML = content.content; modal.classList.add('active'); } } function hideModal() { modal.classList.remove('active'); } // Event Listeners spinBtn.addEventListener('click', spinWheel); soundToggle.addEventListener('click', () => { isMuted = !isMuted; soundToggle.textContent = isMuted ? '🔇' : '🔊'; }); addChallengeBtn.addEventListener('click', addCustomChallenge); newChallengeInput.addEventListener('keypress', (e) => { if (e.key === 'Enter') addCustomChallenge(); }); // Modal Event Listeners document.querySelectorAll('.page-btn[data-page]').forEach(button => { button.addEventListener('click', () => showModal(button.dataset.page)); }); closeModal.addEventListener('click', hideModal); modal.addEventListener('click', (e) => { if (e.target === modal) hideModal(); }); // Initialize drawWheel(); updateChallengeList();