// Function to handle answer click const correctAnswer = "1"; const createRiddleUuid = "2"; const createRiddleToken = "3"; const createRiddleUser_id = "4"; const answers = document.querySelectorAll('.answer'); const notification = document.getElementById('notification'); // Notification element const emojiDisplay = document.createElement('div'); emojiDisplay.style.fontSize = '80px'; emojiDisplay.style.position = 'absolute'; emojiDisplay.style.top = '50%'; emojiDisplay.style.left = '50%'; emojiDisplay.style.transform = 'translate(-50%, -50%)'; emojiDisplay.style.display = 'none'; // Hidden by default document.body.appendChild(emojiDisplay); // Retrieve the list of already answered UUIDs let answeredUuids = JSON.parse(localStorage.getItem('answeredUuids')) || []; // Check if the current UUID has already been answered let alreadyAnswered = answeredUuids.includes(createRiddleUuid); // Déclarer le countdownInterval à un niveau global pour pouvoir l'arrêter plus tard let countdownInterval; // Si la question n'a pas encore été jouée, afficher le timer if (!alreadyAnswered) { const countdownTimer = document.getElementById('countdownTimer'); countdownTimer.style.display = 'flex'; let timeLeft = 6; countdownInterval = setInterval(() => { timeLeft--; countdownTimer.textContent = timeLeft; if (timeLeft <= 0) { clearInterval(countdownInterval); // Stopper le timer countdownTimer.style.display = 'none'; disableAnswers(); // Désactiver les réponses showTimeoutNotification(); // Afficher la notification } }, 1000); } else { // Si déjà répondu, masquer le timer const countdownTimer = document.getElementById('countdownTimer'); countdownTimer.style.display = 'none'; } // Fonction pour désactiver les réponses function disableAnswers() { // Ajouter l'UUID à la liste des réponses déjà faites et l'enregistrer dans localStorage answeredUuids.push(createRiddleUuid); localStorage.setItem('answeredUuids', JSON.stringify(answeredUuids)); answers.forEach(answer => { answer.style.pointerEvents = 'none'; // Désactiver les clics answer.style.border = '2px solid rgba(211, 211, 211, 0.5)'; // Changer la bordure // }); } // Fonction pour afficher une notification "Temps écoulé" function showTimeoutNotification() { notification.classList.remove('correct', 'incorrect', 'anonymous', 'show', 'hide'); notification.classList.add('notification', 'incorrect', 'show'); notification.textContent = "Time's up! ⏳"; setTimeout(() => { notification.classList.remove('show'); notification.classList.add('hide'); }, 3000); } answers.forEach(answer => { answer.addEventListener('click', () => { if (alreadyAnswered) { // Si l'utilisateur a déjà répondu, afficher un message et revenir notification.classList.remove('correct', 'incorrect', 'anonymous', 'show', 'hide'); notification.classList.add('notification', 'incorrect', 'show'); notification.textContent = "Whoops, you've already played for this question! 😇"; scrollToTop(); // Cacher la notification après 2 secondes setTimeout(() => { notification.classList.remove('show'); notification.classList.add('hide'); }, 2100); return; // Retourne ici sans exécuter le reste du code } alreadyAnswered = true; // Ajouter l'UUID à la liste des réponses et le sauvegarder dans localStorage answeredUuids.push(createRiddleUuid); localStorage.setItem('answeredUuids', JSON.stringify(answeredUuids)); const selectedAnswer = answer.getAttribute('data-answer'); // Désactiver toutes les réponses et les griser answers.forEach(a => { a.style.pointerEvents = 'none'; // Désactiver les clics a.style.border = '2px solid rgba(211, 211, 211, 0.5)'; // Bordure gris clair avec opacité }); // Si l'utilisateur a déjà répondu, afficher un message et revenir notification.classList.remove('correct', 'incorrect', 'anonymous', 'show', 'hide'); answer.style.border = 'none'; // Enlever la bordure de la réponse choisie pour la rendre visible // Si une réponse est cliquée avant que le timer arrive à 0, annuler le timer clearInterval(countdownInterval); // Annuler le timer ici pour éviter toute interaction avec le countdown // Mettre à jour le countdownTimer avec la valeur restante de timeLeft const countdownTimer = document.getElementById('countdownTimer'); countdownTimer.style.display = 'none'; // Vérification de la réponse if (selectedAnswer === correctAnswer) { correctAnswersCount++; localStorage.setItem('correctAnswersCount', correctAnswersCount); answer.classList.add('correct'); // Affichage de la notification de réponse correcte notification.classList.add('notification', 'correct', 'show'); notification.textContent = "True 🎉"; // Mettre à jour l'affichage des emojis updateEmojiDisplay(correctAnswersCount); // Envoyer la notification sendNotification(createRiddleToken, "Riddle", "New riddle received", createRiddleUser_id); saveChoice(createRiddleUuid, selectedAnswer, savedName, createRiddleUser_id); } else { incorrectAnswersCount++; localStorage.setItem('incorrectAnswersCount', incorrectAnswersCount); answer.classList.add('incorrect'); // Affichage de la notification de réponse incorrecte notification.classList.add('notification', 'incorrect', 'show'); notification.textContent = "False 💩"; // Mettre à jour l'affichage des emojis updateEmojiDisplay2(incorrectAnswersCount); // Envoyer la notification sendNotification(createRiddleToken, "Riddle", "New riddle received", createRiddleUser_id); saveChoice(createRiddleUuid, selectedAnswer, savedName, createRiddleUser_id); } // Affichage de l'emoji emojiDisplay.style.display = 'block'; // Cacher l'emoji après 2 secondes setTimeout(() => { emojiDisplay.style.display = 'none'; }, 2100); // Masquer la notification après 2 secondes setTimeout(() => { notification.classList.remove('show'); notification.classList.add('hide'); // Optionnellement appeler fetchNextRiddle après la notification // fetchNextRiddle(); }, 2100); // Scroll vers le haut scrollToTop(); // Désactiver toutes les réponses une fois qu'une a été choisie answers.forEach(a => a.classList.add('disabled')); }); }); // Go back function function goBack() { // Supprime la mémoire de redirection pour éviter la boucle sessionStorage.removeItem('isReturning'); sessionStorage.setItem('lastPage', 'Answer'); console.log("Referrer:", document.referrer); // Vérifie si on peut vraiment revenir en arrière if (document.referrer) { window.location.href = document.referrer; // Force la redirection vers la page précédente } else { window.history.back(); // Si aucun referrer, essaie de revenir en arrière } } // Scroll to top function function scrollToTop() { const scrollY = window.scrollY; let currentScroll = scrollY; const intervalId = setInterval(() => { currentScroll -= 10; window.scrollTo(0, currentScroll); if (currentScroll <= 0) { clearInterval(intervalId); } }, 10); } // Counter for riddles created const riddleCounterElement = document.getElementById('riddleCounter'); let currentRiddles = Math.floor(Math.random() * (3100 - 200 + 1)) + 200; // Update the riddle label function updateRiddleLabel() { riddleCounterElement.style.opacity = 0; setTimeout(() => { riddleCounterElement.innerText = `${currentRiddles} riddles 💌 created!`; riddleCounterElement.style.opacity = 1; }, 300); } // Start the riddle counter function startRiddleCounter() { updateRiddleLabel(); const interval = setInterval(() => { if (currentRiddles >= 100000) { clearInterval(interval); riddleCounterElement.innerText = "+100000 riddles 💌 created!"; return; } const increment = Math.floor(Math.random() * 100); currentRiddles = Math.min(currentRiddles + increment, 100000); updateRiddleLabel(); }, 10000); } document.addEventListener('DOMContentLoaded', startRiddleCounter);