`;
document.querySelectorAll('.game-option-btn').forEach(btn => btn.addEventListener('click', handleAnswer));
};
const handleAnswer = (e) => {
const selectedAnswer = e.target.textContent;
const correctAnswer = quizData[currentGameIndex].correctAnswer;
const isCorrect = selectedAnswer === correctAnswer;
if (isCorrect) score++;
document.querySelectorAll('.game-option-btn').forEach(btn => {
if (btn.textContent === correctAnswer) {
btn.classList.add('correct');
} else if (btn.textContent === selectedAnswer) {
btn.classList.add('incorrect');
}
btn.disabled = true;
});
setTimeout(() => {
currentGameIndex++;
loadGameQuestion(currentGameIndex);
}, 1500);
};
const endGame = () => {
quizGameView.innerHTML = `
Quiz Complete!
Your final score is ${score} out of ${quizData.length}.
`; document.getElementById('play-again-btn').addEventListener('click', () => showTab(0)); }; // --- PDF Export --- pdfBtn.addEventListener('click', () => { if (quizData.length === 0) { showMessage('No quiz to download.', 'error'); return; } const { jsPDF } = window.jspdf; const doc = new jsPDF(); doc.setFontSize(18); doc.text(`${currentQuizConfig.language} Quiz`, 105, 20, { align: 'center' }); doc.setFontSize(12); doc.text(`Difficulty: ${currentQuizConfig.difficulty} | Type: ${currentQuizConfig.quizType}`, 105, 28, { align: 'center' }); const tableData = quizData.map((q, i) => [ i + 1, q.question, q.correctAnswer ]); doc.autoTable({ startY: 40, head: [['#', 'Question', 'Correct Answer']], body: tableData, headStyles: { fillColor: [79, 70, 229] }, columnStyles: { 1: { cellWidth: 'auto' } } }); doc.save('language-quiz.pdf'); }); // --- Utility --- const showMessage = (message, type = 'success') => { messageBox.textContent = message; messageBox.className = `message-box ${type} show`; setTimeout(() => { messageBox.classList.remove('show'); }, 3000); }; });