{"id":23849,"date":"2025-10-25T20:36:29","date_gmt":"2025-10-26T00:36:29","guid":{"rendered":"https:\/\/allianceenjesus.com\/?page_id=23849"},"modified":"2025-11-13T18:59:13","modified_gmt":"2025-11-13T22:59:13","slug":"jeux-versets-biblique","status":"publish","type":"page","link":"https:\/\/allianceenjesus.com\/?page_id=23849","title":{"rendered":"Jeu versets biblique"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"23849\" class=\"elementor elementor-23849\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-80b8b02 ang-section-padding-no elementor-section-boxed elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no elementor-repeater-item-none elementor-repeater-item-none_hover wpr-equal-height-no\" data-id=\"80b8b02\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5ffec01 elementor-repeater-item-none elementor-repeater-item-none_hover\" data-id=\"5ffec01\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-1e2c660 elementor-repeater-item-none elementor-repeater-item-none_hover elementor-widget elementor-widget-spacer\" data-id=\"1e2c660\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-xus5xau elementor-section-content-middle elementor-section-height-full ang-section-padding-no elementor-section-boxed elementor-section-height-default elementor-section-items-middle wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no elementor-repeater-item-none elementor-repeater-item-none_hover wpr-equal-height-no\" data-id=\"xus5xau\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;slideshow&quot;,&quot;background_slideshow_gallery&quot;:[{&quot;id&quot;:25071,&quot;url&quot;:&quot;https:\\\/\\\/allianceenjesus.com\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/brain-9810769_1280.jpg&quot;}],&quot;background_slideshow_loop&quot;:&quot;yes&quot;,&quot;background_slideshow_slide_duration&quot;:5000,&quot;background_slideshow_slide_transition&quot;:&quot;fade&quot;,&quot;background_slideshow_transition_duration&quot;:500}\">\n\t\t\t\t\t\t\t<div class=\"elementor-background-overlay\"><\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b1952b1 elementor-repeater-item-none elementor-repeater-item-none_hover\" data-id=\"b1952b1\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-03b93f0 elementor-repeater-item-none elementor-repeater-item-none_hover elementor-widget elementor-widget-heading\" data-id=\"03b93f0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Jeu versets biblique<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-70705e0 ang-section-padding-no elementor-section-boxed elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no elementor-repeater-item-none elementor-repeater-item-none_hover wpr-equal-height-no\" data-id=\"70705e0\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-6a764aa elementor-repeater-item-none elementor-repeater-item-none_hover\" data-id=\"6a764aa\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f8ae447 elementor-repeater-item-none elementor-repeater-item-none_hover elementor-widget elementor-widget-spacer\" data-id=\"f8ae447\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t<div class=\"elementor-element elementor-element-7d0ccda e-flex e-con-boxed elementor-repeater-item-default_padding elementor-repeater-item-none elementor-repeater-item-none_hover wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-equal-height-no e-con e-parent\" data-id=\"7d0ccda\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;ang_container_spacing_size&quot;:&quot;default_padding&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e0e1608 elementor-repeater-item-none elementor-repeater-item-none_hover elementor-widget elementor-widget-shortcode\" data-id=\"e0e1608\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">    <div id=\"jeu-versets-container\" style=\"max-width:1000px;margin:20px auto;padding:18px;background:#f9f9f9;border:1px solid #e0e0e0;border-radius:10px;font-family:Arial,Helvetica,sans-serif;\">\n        <h2 style=\"text-align:center;color:#4aa3df;margin:0 0 12px 0;\">Jeu Versets Bibliques<\/h2>\n\n        <!-- Params -->\n        <div id=\"jeu-params\" style=\"display:block;margin-bottom:14px;padding:12px;border-radius:8px;background:#fff;border:1px solid #e6eef6;\">\n            <div style=\"display:flex;gap:12px;flex-wrap:wrap;align-items:center;\">\n                <label>Nom: <input id=\"joueurNom\" type=\"text\" placeholder=\"Pseudo\" style=\"padding:6px;border-radius:4px;border:1px solid #ccc;\"><\/label>\n\n                <label>Mode:\n                    <select id=\"versetChoix\" style=\"padding:6px;border-radius:4px;border:1px solid #ccc;\">\n                        <option value=\"aleatoire\">Al\u00e9atoire (toute la Bible)<\/option>\n                        <option value=\"livre\">Al\u00e9atoire par livre<\/option>\n                        <option value=\"livre_chapitre\">Al\u00e9atoire par livre & chapitre<\/option>\n                        <option value=\"manuel\">S\u00e9lection manuel (livre\/chapitre\/verset)<\/option>\n                    <\/select>\n                <\/label>\n\n                <div id=\"selectionZone\" style=\"display:flex;gap:8px;align-items:center;\">\n                    <label>Livre:\n                        <select id=\"livreSelect\" style=\"padding:6px;border-radius:4px;border:1px solid #ccc;min-width:180px;\"><\/select>\n                    <\/label>\n\n                    <label id=\"chapLabel\" style=\"display:none;\">Chapitre:\n                        <select id=\"chapSelect\" style=\"padding:6px;border-radius:4px;border:1px solid #ccc;width:100px;\"><\/select>\n                    <\/label>\n\n                    <label id=\"versLabel\" style=\"display:none;\">Verset:\n                        <select id=\"versSelect\" style=\"padding:6px;border-radius:4px;border:1px solid #ccc;width:100px;\"><\/select>\n                    <\/label>\n                <\/div>\n            <\/div>\n\n            <div style=\"margin-top:10px;display:flex;gap:12px;flex-wrap:wrap;align-items:center;\">\n                <label>Police: <input id=\"fontSize\" type=\"number\" min=\"10\" max=\"48\" value=\"18\" style=\"width:70px;padding:6px;border-radius:4px;border:1px solid #ccc;\"><\/label>\n                <label>Couleur texte: <input id=\"fontColor\" type=\"color\" value=\"#000000\"><\/label>\n                <label>Couleur fond: <input id=\"bgColor\" type=\"color\" value=\"#f9f9f9\"><\/label>\n\n                <label>Dur\u00e9e (sec): <input id=\"versetTime\" type=\"number\" min=\"3\" max=\"300\" value=\"10\" style=\"width:80px;padding:6px;border-radius:4px;border:1px solid #ccc;\"><\/label>\n\n                <label>Nombre de versets par session:\n                    <select id=\"sessionCount\" style=\"padding:6px;border-radius:4px;border:1px solid #ccc;\">\n                        <option value=\"100000\">Illimit\u00e9<\/option>\n                        <option value=\"5\">5<\/option>\n                        <option value=\"10\">10<\/option>\n                        <option value=\"15\">15<\/option>\n                        <option value=\"20\">20<\/option>\n                        <option value=\"25\">25<\/option>\n                        <option value=\"30\">30<\/option>\n                        <option value=\"custom\">Saisir...<\/option>\n                    <\/select>\n                <\/label>\n                <input id=\"sessionCustom\" type=\"number\" min=\"1\" value=\"10\" style=\"width:90px;padding:6px;border-radius:4px;border:1px solid #ccc;display:none;\" placeholder=\"Nombre\">\n\n                <label>Filtrer par nbr mots:\n                    <input id=\"minWords\" type=\"number\" min=\"0\" value=\"0\" style=\"width:70px;padding:6px;border-radius:4px;border:1px solid #ccc;\"> \u2014\n                    <input id=\"maxWords\" type=\"number\" min=\"0\" value=\"0\" style=\"width:70px;padding:6px;border-radius:4px;border:1px solid #ccc;\">\n                    <small style=\"margin-left:6px;color:#666;\">0 = illimit\u00e9<\/small>\n                <\/label>\n            <\/div>\n\n            <div style=\"margin-top:10px;\">\n                <button id=\"startJeu\" style=\"padding:8px 14px;background:#4a90e2;color:#fff;border:none;border-radius:6px;cursor:pointer;\">D\u00e9marrer<\/button>\n                <button id=\"suivantSess\" style=\"padding:8px 14px;background:#2980b9;color:#fff;border:none;border-radius:6px;cursor:pointer;margin-left:6px;display:none;\">Suivant<\/button>\n                <button id=\"resetJeu\" style=\"padding:8px 14px;background:#e74c3c;color:#fff;border:none;border-radius:6px;cursor:pointer;margin-left:6px;\">Reset<\/button>\n                <button id=\"backToParams\" style=\"padding:8px 14px;background:#95a5a6;color:#fff;border:none;border-radius:6px;cursor:pointer;margin-left:6px;\">Param\u00e8tres<\/button>\n            <\/div>\n        <\/div>\n\n        <!-- Zone de jeu -->\n        <div id=\"jeu-area\" style=\"display:none;padding:14px;border-radius:8px;background:#fff;border:1px solid #e6eef6;\">\n            <div style=\"display:flex;justify-content:space-between;align-items:center;\">\n                <div style=\"font-weight:bold;\"><span id=\"versetInfo\"><\/span><\/div>\n                <div style=\"text-align:right;\">\n                    <div>Temps restant: <span id=\"timer\">0<\/span> s<\/div>\n                    <div style=\"font-size:13px;color:#555;\">Score verset: <span id=\"scoreActuel\">0<\/span> \u2014 Total: <span id=\"scoreJeu\">0<\/span><\/div>\n                <\/div>\n            <\/div>\n\n            <div id=\"versetAffiche\" style=\"margin:12px 0;padding:12px;border-radius:6px;background:transparent;font-size:20px;line-height:1.4;\"><\/div>\n\n            <textarea id=\"reponseVerset\" style=\"width:100%;height:110px;padding:10px;border-radius:6px;border:1px solid #ccc;font-size:16px;\"><\/textarea>\n\n            <div style=\"margin-top:10px;\">\n                <button id=\"validerVerset\" style=\"padding:8px 14px;background:#27ae60;color:#fff;border:none;border-radius:6px;cursor:pointer;\">Valider<\/button>\n                <button id=\"suivantVerset\" style=\"padding:8px 14px;background:#2980b9;color:#fff;border:none;border-radius:6px;cursor:pointer;margin-left:8px;display:none;\">Suivant<\/button>\n                <button id=\"closeJeu\" style=\"padding:8px 14px;background:#7f8c8d;color:#fff;border:none;border-radius:6px;cursor:pointer;margin-left:8px;\">Fermer<\/button>\n            <\/div>\n        <\/div>\n\n        <div style=\"margin-top:12px;display:flex;gap:8px;align-items:center;\">\n            <button id=\"exportPDF\" style=\"padding:8px 14px;background:#8e44ad;color:#fff;border:none;border-radius:6px;cursor:pointer;\">T\u00e9l\u00e9charger r\u00e9ponses (PDF)<\/button>\n            <label style=\"margin-left:8px;\">Lien partage:\n                <input id=\"shareLink\" type=\"text\" readonly style=\"width:420px;padding:6px;border-radius:4px;border:1px solid #ccc;margin-left:6px;\">\n            <\/label>\n        <\/div>\n    <\/div>\n\n    <!-- jQuery et html2pdf d\u00e9j\u00e0 fournis par WordPress si actif, mais on inclut CDN fallback -->\n    <script>\n    (function($){\n        const ajaxUrl = 'https:\/\/allianceenjesus.com\/wp-admin\/admin-ajax.php';\n\n        \/\/ State\n        let versets = [];         \/\/ array of {book,chapter,verse,text}\n        let index = 0;\n        let totalScore = 0;\n        let currentScore = 0;\n        let timerInt = null;\n        let secondsLeft = 0;\n        let responses = [];       \/\/ collected answers\n        let sessionLimit = 0;     \/\/ 0 = unlimited\n        let playedCount = 0;\n\n        \/\/ UI shortcuts\n        const $versetAffiche = $('#versetAffiche');\n        const $versetInfo = $('#versetInfo');\n        const $timer = $('#timer');\n        const $scoreActuel = $('#scoreActuel');\n        const $scoreJeu = $('#scoreJeu');\n\n        \/\/ Toggle controls display based on mode\n        function updateSelectionVisibility(){\n            const mode = $('#versetChoix').val();\n            $('#selectionZone').toggle(mode !== 'aleatoire');\n            $('#chapLabel').toggle(mode === 'livre_chapitre' || mode === 'manuel');\n            $('#versLabel').toggle(mode === 'manuel');\n        }\n        $('#versetChoix').on('change', updateSelectionVisibility);\n        updateSelectionVisibility();\n\n        \/\/ sessionCount custom handling\n        $('#sessionCount').on('change', function(){\n            if($(this).val() === 'custom'){ $('#sessionCustom').show(); }\n            else { $('#sessionCustom').hide(); }\n        });\n\n        \/\/ Load books (in Bible order using min(id) heuristic)\n        function loadBooks(){\n            $.post(ajaxUrl, { action:'get_livres' }, function(resp){\n                if(!Array.isArray(resp)) return;\n                $('#livreSelect').empty().append('<option value=\"\">--Choisir livre--<\/option>');\n                resp.forEach(b => $('#livreSelect').append('<option value=\"'+b+'\">'+b+'<\/option>'));\n            }, 'json').fail(function(){ console.error('Erreur get_livres'); });\n        }\n\n        \/\/ Load chapters for chosen book\n        $('#livreSelect').on('change', function(){\n            const livre = $(this).val();\n            $('#chapSelect').empty(); $('#versSelect').empty();\n            if(!livre) return;\n            $.post(ajaxUrl, { action:'get_chapitres', livre: livre }, function(resp){\n                $('#chapSelect').append('<option value=\"\">--Choisir--<\/option>');\n                resp.forEach(c => $('#chapSelect').append('<option value=\"'+c+'\">'+c+'<\/option>'));\n            }, 'json').fail(()=>console.error('Erreur get_chapitres'));\n        });\n\n        \/\/ Load verses for chosen (book,chap)\n        $('#chapSelect').on('change', function(){\n            const livre = $('#livreSelect').val();\n            const chap = $(this).val();\n            $('#versSelect').empty();\n            if(!livre || !chap) return;\n            $.post(ajaxUrl, { action:'get_versets', livre: livre, chapitre: chap }, function(resp){\n                $('#versSelect').append('<option value=\"\">--Choisir--<\/option>');\n                resp.forEach(v => $('#versSelect').append('<option value=\"'+v+'\">'+v+'<\/option>'));\n            }, 'json').fail(()=>console.error('Erreur get_versets'));\n        });\n\n        \/\/ Helper: stop timer\n        function stopTimer(){\n            if(timerInt){ clearInterval(timerInt); timerInt = null; }\n        }\n\n        \/\/ Hide verse after time => set versetAffiche blank and enable validate button (so user can still submit)\n        function startTimer(){\n            stopTimer();\n            secondsLeft = parseInt($('#versetTime').val(),10) || 10;\n            $timer.text(secondsLeft);\n            timerInt = setInterval(function(){\n                secondsLeft--;\n                $timer.text(Math.max(0, secondsLeft));\n                if(secondsLeft <= 0){\n                    stopTimer();\n                    \/\/ hide the verse (mask)\n                    $versetAffiche.css('visibility','hidden');\n                    $('#validerVerset').show();            \/\/ ensure validate visible\n                    $('#suivantVerset').show();            \/\/ allow next\n                }\n            },1000);\n        }\n\n        \/\/ Score calculation (simple word-match percentage)\n        function calcScore(answer, reference){\n            if(!reference) return 0;\n            const ref = reference.toLowerCase().replace(\/[^\\w\\d\u00e0\u00e2\u00e4\u00e9\u00e8\u00ea\u00eb\u00ef\u00ee\u00f4\u00f6\u00f9\u00fb\u00fc\u00e7'\\- ]\/g,'').trim();\n            const ans = (answer||'').toLowerCase().replace(\/[^\\w\\d\u00e0\u00e2\u00e4\u00e9\u00e8\u00ea\u00eb\u00ef\u00ee\u00f4\u00f6\u00f9\u00fb\u00fc\u00e7'\\- ]\/g,'').trim();\n            if(ans.length===0) return 0;\n            if(ans === ref) return 100;\n            const refWords = ref.split(\/\\s+\/).filter(Boolean);\n            const ansWords = ans.split(\/\\s+\/).filter(Boolean);\n            let common = 0;\n            const refSet = new Set(refWords);\n            ansWords.forEach(w=>{ if(refSet.has(w)) common++; });\n            const score = Math.floor((common \/ Math.max(1, refWords.length)) * 100);\n            return Math.min(100, score);\n        }\n\n        \/\/ Display current verse\n        function showCurrent(){\n            if(index < 0) index = 0;\n            if(index >= versets.length){\n                \/\/ if session limit reached or list exhausted\n                alert('Session termin\u00e9e! Score total: ' + totalScore);\n                $('#suivantVerset').hide();\n                $('#validerVerset').hide();\n                $('#suivantSess').hide();\n                return;\n            }\n            const v = versets[index];\n            $('#jeu-area').css('background-color', $('#bgColor').val());\n            $versetAffiche.css({'visibility':'visible'}).text(v.text).css({'color':$('#fontColor').val(), 'font-size': $('#fontSize').val()+'px'});\n            $versetInfo.text(v.book + ' ' + v.chapter + ':' + v.verse);\n            $('#reponseVerset').val('');\n            $('#validerVerset').show();\n            $('#suivantVerset').hide();\n            $('#suivantSess').show();\n            $scoreActuel.text(0);\n            startTimer();\n        }\n\n        \/\/ Build parameters to send to get verses\n        function buildParams(){\n            const mode = $('#versetChoix').val();\n            const livre = $('#livreSelect').val() || '';\n            const chap = $('#chapSelect').val() || '';\n            const vers = $('#versSelect').val() || '';\n            const minWords = parseInt($('#minWords').val(),10) || 0;\n            const maxWords = parseInt($('#maxWords').val(),10) || 0;\n            let params = { action:'get_verset_mode', mode: mode, minWords: minWords, maxWords: maxWords };\n            if(mode !== 'aleatoire'){\n                params.livre = livre;\n            }\n            if(mode === 'livre_chapitre' || mode === 'manuel'){\n                params.chapitre = chap;\n            }\n            if(mode === 'manuel'){\n                params.verset = vers;\n            }\n            \/\/ session count\n            const sc = $('#sessionCount').val();\n            if(sc === 'custom') params.count = parseInt($('#sessionCustom').val(),10) || 0;\n            else params.count = parseInt(sc,10) || 0;\n            return params;\n        }\n\n        \/\/ Start game\n        $('#startJeu').on('click', function(){\n            \/\/ determine session limit\n            const sc = $('#sessionCount').val();\n            if(sc === 'custom') sessionLimit = parseInt($('#sessionCustom').val(),10) || 0;\n            else sessionLimit = parseInt(sc,10) || 0;\n\n            \/\/ basic validation\n            const mode = $('#versetChoix').val();\n            if(mode !== 'aleatoire' && !$('#livreSelect').val()){\n                alert('Veuillez choisir un livre pour ce mode.');\n                return;\n            }\n            if(mode === 'livre_chapitre' && !$('#chapSelect').val()){\n                alert('Veuillez choisir un chapitre.');\n                return;\n            }\n            if(mode === 'manuel' && (!$('#chapSelect').val() || !$('#versSelect').val())){\n                alert('Veuillez choisir chapitre et verset.');\n                return;\n            }\n\n            \/\/ reset\n            index = 0; totalScore = 0; responses = []; playedCount = 0;\n            $scoreJeu.text(totalScore);\n            \/\/ request verses\n            const params = buildParams();\n            $.post(ajaxUrl, params, function(resp){\n                if(!Array.isArray(resp) || resp.length === 0){\n                    alert('Aucun verset trouv\u00e9 pour ces filtres.');\n                    return;\n                }\n                versets = resp;\n                \/\/ if count specified >0, slice\n                if(sessionLimit > 0) versets = versets.slice(0, sessionLimit);\n                $('#jeu-area').show();\n                $('#suivantSess').show();\n                $('#suivantJeu').hide;\n                showCurrent();\n                \/\/ set share link\n                const shareUrl = window.location.href.split('#')[0] + '?jeu_mode=' + encodeURIComponent($('#versetChoix').val()) + '&livre=' + encodeURIComponent($('#livreSelect').val()) + '&chap=' + encodeURIComponent($('#chapSelect').val()) + '&vers=' + encodeURIComponent($('#versSelect').val());\n                $('#shareLink').val(shareUrl);\n            }, 'json').fail(function(){ alert('Erreur serveur: impossible de r\u00e9cup\u00e9rer les versets'); });\n        });\n\n        \/\/ Validate\n        $('#validerVerset').on('click', function(){\n            stopTimer();\n            const answer = $('#reponseVerset').val().trim();\n            const ref = (versets[index] && versets[index].text) ? versets[index].text : '';\n            const pts = calcScore(answer, ref);\n            currentScore = pts;\n            totalScore += pts;\n            $scoreActuel.text(pts);\n            $scoreJeu.text(totalScore);\n            responses.push({\n                livre: versets[index].book,\n                chapter: versets[index].chapter,\n                verse: versets[index].verse,\n                texte: versets[index].text,\n                reponse: answer,\n                score: pts\n            });\n            $('#validerVerset').hide();\n            $('#suivantVerset').show();\n        });\n\n        \/\/ Next verse (does NOT finish the session)\n        $('#suivantVerset, #suivantSess').on('click', function(){\n            \/\/ increment counts and move on\n            playedCount++;\n            index++;\n            if(sessionLimit > 0 && playedCount >= sessionLimit){\n                alert('Session termin\u00e9e! Score total: ' + totalScore);\n                $('#suivantVerset').hide();\n                $('#validerVerset').hide();\n                return;\n            }\n            showCurrent();\n        });\n\n        \/\/ Reset game\n        $('#resetJeu').on('click', function(){\n            stopTimer();\n            versets = []; index = 0; totalScore = 0; currentScore = 0; responses = []; playedCount = 0;\n            $scoreActuel.text(0); $scoreJeu.text(0);\n            $('#jeu-area').hide();\n            $('#versetAffiche').text('');\n            $('#shareLink').val('');\n        });\n\n        \/\/ Back to params view\n        $('#backToParams').on('click', function(){\n            $('#jeu-area').hide();\n        });\n\n        \/\/ Close game entirely\n        $('#closeJeu').on('click', function(){\n            stopTimer();\n            $('#jeu-area').hide();\n            $('#versetAffiche').text('');\n        });\n\n        \/\/ Export PDF of all responses\n        $('#exportPDF').on('click', function(){\n            const nom = $('#joueurNom').val() || 'Joueur';\n            let html = `<h2>R\u00e9sultats de ${nom}<\/h2><p>Score final: ${totalScore}<\/p>`;\n            html += `<div class=\"table-wrapper\"><table border=\"1\" style=\"border-collapse:collapse;width:100%\"><thead><tr><th>Livre<\/th><th>Chapitre<\/th><th>Verset<\/th><th>Texte<\/th><th>R\u00e9ponse<\/th><th>Score<\/th><\/tr><\/thead><tbody>`;\n            responses.forEach(r => {\n                html += `<tr><td>${r.livre}<\/td><td>${r.chapter}<\/td><td>${r.verse}<\/td><td>${r.texte}<\/td><td>${r.reponse}<\/td><td>${r.score}<\/td><\/tr>`;\n            });\n            html += `<\/tbody><\/table><\/div>`;\n            \/\/ Use html2pdf if included\n            if(window.html2pdf){\n                html2pdf().from(html).save('jeu_versets_resultats.pdf');\n            } else {\n                \/\/ fallback: open in new tab\n                const win = window.open('', '_blank');\n                win.document.write(html);\n                win.document.close();\n            }\n        });\n\n        \/\/ On load\n        loadBooks();\n\n    })(jQuery);\n    <\/script>\n\n    <!-- simple css tweaks -->\n    <style>\n    #jeu-versets-container select, #jeu-versets-container input, #jeu-versets-container textarea { font-family: inherit; }\n    <\/style>\n    <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-17c4de7 elementor-section-boxed ang-section-padding-initial elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no elementor-repeater-item-none elementor-repeater-item-none_hover wpr-equal-height-no\" data-id=\"17c4de7\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-71dfbc9 elementor-repeater-item-none elementor-repeater-item-none_hover\" data-id=\"71dfbc9\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-c3de6d4 elementor-repeater-item-none elementor-repeater-item-none_hover elementor-widget elementor-widget-shortcode\" data-id=\"c3de6d4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><div class=\"audio-list-box\">\r\n\r\n<div class=\"row\">\r\n\t<div class=\"col-sm-3\">\r\n\t\t<div class=\"filterbox\">\r\n\t\t\t<h2>Filter<\/h2>\r\n\t\t<form method=\"get\">\r\n\t\t<ul>\r\n\t\t\t\t\t\t<li><div class=\"checkbox\"><input type=\"checkbox\" name=\"category[]\" value=\"dictionnaire-biblique\" > Dictionnaire biblique<\/div><\/li>\r\n\t\t\t\t\t\t\t<li><div class=\"checkbox\"><input type=\"checkbox\" name=\"category[]\" value=\"gs-audios\" > GS - Audios<\/div><\/li>\r\n\t\t\t\t\t\t\t<li><div class=\"checkbox\"><input type=\"checkbox\" name=\"category[]\" value=\"gs-images\" > GS - Images<\/div><\/li>\r\n\t\t\t\t\t\t\t<li><div class=\"checkbox\"><input type=\"checkbox\" name=\"category[]\" value=\"gs-jpeg\" > GS - JPEG<\/div><\/li>\r\n\t\t\t\t\t\t\t<li><div class=\"checkbox\"><input type=\"checkbox\" name=\"category[]\" value=\"gs-pdf\" > GS - PDF<\/div><\/li>\r\n\t\t\t\t\t\t\t<li><div class=\"checkbox\"><input type=\"checkbox\" name=\"category[]\" value=\"gs-textes\" > GS - Textes<\/div><\/li>\r\n\t\t\t\t\t\t\t<li><div class=\"checkbox\"><input type=\"checkbox\" name=\"category[]\" value=\"gs-videos\" > GS - Vid\u00e9os<\/div><\/li>\r\n\t\t\t\t\t\t\t<li><div class=\"checkbox\"><input type=\"checkbox\" name=\"category[]\" value=\"meditations-meditations\" > M\u00e9ditations<\/div><\/li>\r\n\t\t\t\t\t\t\t<li><div class=\"checkbox\"><input type=\"checkbox\" name=\"category[]\" value=\"partages\" > Partages<\/div><\/li>\r\n\t\t\t\t\t\t\t<li><div class=\"checkbox\"><input type=\"checkbox\" name=\"category[]\" value=\"predications\" > Pr\u00e9dications<\/div><\/li>\r\n\t\t\t\t\t\t\t<li><div class=\"checkbox\"><input type=\"checkbox\" name=\"category[]\" value=\"reseau_social\" > R\u00e9seau social<\/div><\/li>\r\n\t\t\t\t\t\t\t<li><div class=\"checkbox\"><input type=\"checkbox\" name=\"category[]\" value=\"videos-partage\" > Vid\u00e9os - partage<\/div><\/li>\r\n\t\t\t\t\t\t<li><button type=\"submit\" class=\"a_btn btn-primary\">Filter<\/button><\/li>\r\n\t\t \t\t<\/ul>\r\n\t<\/form>\r\n\r\n\t<\/div>\r\n\t<\/div>\r\n\t<div class=\"col-sm-9\">\r\n\r\n\t\t<div class=\"main_contentbox\">\r\n\t\t<div class=\"row\">\r\n\t\r\n<div style=\"clear: both;\"><\/div>\r\n    <div class=\"paginationbox\">\r\n    \t<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\t<\/div>\r\n\t<\/div>\r\n\t<style type=\"text\/css\">\r\n\t.paginationbox .page-numbers {    padding: 4px 9px;    background: #898989;    color: #fff;    border-radius: 2px;    margin: 2px 0 !important;    display: inline-flex;}\r\n\t<\/style>\r\n\r\n<\/div>\r\n<\/div>\r\n\r\n\t<\/div>\r\n\r\n\r\n<\/div>\r\n<\/div>\r\n\r\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t<div class=\"elementor-element elementor-element-9f1bb89 e-flex e-con-boxed elementor-repeater-item-default_padding elementor-repeater-item-none elementor-repeater-item-none_hover wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-equal-height-no e-con e-parent\" data-id=\"9f1bb89\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;ang_container_spacing_size&quot;:&quot;default_padding&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-2d83e25 elementor-section-boxed ang-section-padding-initial elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no elementor-repeater-item-none elementor-repeater-item-none_hover wpr-equal-height-no\" data-id=\"2d83e25\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-09749ea elementor-repeater-item-none elementor-repeater-item-none_hover\" data-id=\"09749ea\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a52b321 elementor-repeater-item-none elementor-repeater-item-none_hover elementor-widget elementor-widget-spacer\" data-id=\"a52b321\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t<div class=\"elementor-element elementor-element-f33e6bb e-flex e-con-boxed elementor-repeater-item-default_padding elementor-repeater-item-none elementor-repeater-item-none_hover wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-equal-height-no e-con e-parent\" data-id=\"f33e6bb\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;ang_container_spacing_size&quot;:&quot;default_padding&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0192aba elementor-repeater-item-none elementor-repeater-item-none_hover elementor-widget elementor-widget-spacer\" data-id=\"0192aba\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-8a302ec e-flex e-con-boxed elementor-repeater-item-default_padding elementor-repeater-item-none elementor-repeater-item-none_hover wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-equal-height-no e-con e-parent\" data-id=\"8a302ec\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;ang_container_spacing_size&quot;:&quot;default_padding&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e41c5d5 external_elementor-repeater-item-none_external elementor-repeater-item-none elementor-repeater-item-none_hover elementor-widget elementor-widget-image\" data-id=\"e41c5d5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"640\" height=\"336\" src=\"https:\/\/allianceenjesus.com\/wp-content\/uploads\/2025\/10\/olympia-159933_640.webp\" class=\"attachment-large size-large wp-image-23884\" alt=\"Jeux de versets biblique\" srcset=\"https:\/\/allianceenjesus.com\/wp-content\/uploads\/2025\/10\/olympia-159933_640.webp 640w, https:\/\/allianceenjesus.com\/wp-content\/uploads\/2025\/10\/olympia-159933_640-300x158.webp 300w, https:\/\/allianceenjesus.com\/wp-content\/uploads\/2025\/10\/olympia-159933_640-600x315.webp 600w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-d4b99ec elementor-section-boxed ang-section-padding-initial elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no elementor-repeater-item-none elementor-repeater-item-none_hover wpr-equal-height-no\" data-id=\"d4b99ec\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1b557a5 elementor-repeater-item-none elementor-repeater-item-none_hover\" data-id=\"1b557a5\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-9a6f859 elementor-repeater-item-none elementor-repeater-item-none_hover elementor-widget elementor-widget-spacer\" data-id=\"9a6f859\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-c85a638 elementor-section-boxed ang-section-padding-initial elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no elementor-repeater-item-none elementor-repeater-item-none_hover wpr-equal-height-no\" data-id=\"c85a638\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-768f705 elementor-repeater-item-none elementor-repeater-item-none_hover\" data-id=\"768f705\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-8764299 elementor-repeater-item-none elementor-repeater-item-none_hover elementor-widget elementor-widget-spacer\" data-id=\"8764299\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Jeu versets biblique<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_eb_attr":"","_uag_custom_page_level_css":"","site-sidebar-layout":"no-sidebar","site-content-layout":null,"ast-site-content-layout":"full-width-container","site-content-style":"unboxed","site-sidebar-style":"unboxed","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":null,"ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":null,"ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"enabled","adv-header-id-meta":null,"stick-header-meta":null,"header-above-stick-meta":null,"header-main-stick-meta":null,"header-below-stick-meta":null,"astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-23849","page","type-page","status-publish","hentry"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"tp-image-grid":false,"ca-people-thumb":false,"ca-address-thumb":false,"ultp_layout_landscape_large":false,"ultp_layout_landscape":false,"ultp_layout_portrait":false,"ultp_layout_square":false,"mailpoet_newsletter_max":false,"masvideos_video_large":false,"masvideos_video_medium":false,"masvideos_video_thumbnail":false,"masvideos_movie_large":false,"masvideos_movie_medium":false,"masvideos_movie_thumbnail":false,"woocommerce_thumbnail":false,"woocommerce_single":false,"woocommerce_gallery_thumbnail":false},"uagb_author_info":{"display_name":"Serviteur","author_link":"https:\/\/allianceenjesus.com\/author\/jaijp3a12g7"},"uagb_comment_info":0,"uagb_excerpt":"Jeu versets biblique","_links":{"self":[{"href":"https:\/\/allianceenjesus.com\/index.php?rest_route=\/wp\/v2\/pages\/23849","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/allianceenjesus.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/allianceenjesus.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/allianceenjesus.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/allianceenjesus.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=23849"}],"version-history":[{"count":32,"href":"https:\/\/allianceenjesus.com\/index.php?rest_route=\/wp\/v2\/pages\/23849\/revisions"}],"predecessor-version":[{"id":25075,"href":"https:\/\/allianceenjesus.com\/index.php?rest_route=\/wp\/v2\/pages\/23849\/revisions\/25075"}],"wp:attachment":[{"href":"https:\/\/allianceenjesus.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=23849"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}