{"id":1202,"date":"2026-03-16T18:57:50","date_gmt":"2026-03-16T18:57:50","guid":{"rendered":"https:\/\/entrenacalculo.com\/?page_id=1202"},"modified":"2026-03-23T12:59:51","modified_gmt":"2026-03-23T12:59:51","slug":"desafio-de-numeros-positivos-y-negativos","status":"publish","type":"page","link":"https:\/\/entrenacalculo.com\/en\/desafio-de-numeros-positivos-y-negativos\/","title":{"rendered":"Positive and Negative Numbers Challenge"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1202\" class=\"elementor elementor-1202\">\n\t\t\t\t<div class=\"elementor-element elementor-element-52df14e e-flex e-con-boxed e-con e-parent\" data-id=\"52df14e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a644ffc elementor-widget elementor-widget-html\" data-id=\"a644ffc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js\"><\/script>\r\n<style>\r\n    .juego-fiel-enteros-container {\r\n        font-family: Arial, sans-serif;\r\n        background-color: #f0f0f0;\r\n        margin: 0;\r\n        padding: 5px;\r\n        border-radius: 10px;\r\n    }\r\n    .juego-fiel-enteros-container .container {\r\n        max-width: 800px; margin: 0 auto; padding: 10px 15px; background-color: #fff; border-radius: 10px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); text-align: center;\r\n    }\r\n    .juego-fiel-enteros-container h2 { color: #333; }\r\n    .juego-fiel-enteros-container .lesson { \r\n        font-style: italic; color: #666;\r\n        margin: 0 0 10px 0; \r\n        font-size: 0.9em; \r\n        line-height: 1.2; \r\n    }\r\n    .juego-fiel-enteros-container button { margin: 10px; padding: 5px 10px; font-size: 16px; border: none; border-radius: 5px; cursor: pointer; background-color: #007bff; color: #fff; transition: background-color 0.3s ease; }\r\n    .juego-fiel-enteros-container button:hover { background-color: #0056b3; }\r\n    \r\n    .juego-fiel-enteros-container .questions-container {\r\n        display: grid;\r\n        grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));\r\n        grid-gap: 5px;\r\n        margin-bottom: 10px;\r\n    }\r\n    .juego-fiel-enteros-container .question {\r\n        padding: 8px;\r\n        background-color: #f9f9f9;\r\n        border-radius: 5px;\r\n    }\r\n    .juego-fiel-enteros-container .question p { margin: 2px 0; }\r\n\r\n    .juego-fiel-enteros-container .correct-answer { color: green; font-weight: bold; }\r\n    .juego-fiel-enteros-container .incorrect-answer { color: red; font-weight: bold; }\r\n    .juego-fiel-enteros-container .hidden { display: none; }\r\n    .juego-fiel-enteros-container .error-blink { animation: blink-animation-enteros 0.5s infinite alternate; }\r\n    @keyframes blink-animation-enteros { from { background-color: #ff9999; } to { background-color: inherit; } }\r\n    \r\n    .juego-fiel-enteros-container .modal { display: none; position: fixed; z-index: 10000; left: 50%; top: 50%; transform: translate(-50%, -50%); width: 90%; max-width: 600px; background-color: rgba(0, 0, 0, 0.5); border-radius: 10px; }\r\n    .juego-fiel-enteros-container .modal-content { background-color: #fefefe; margin: 20px auto; padding: 20px; border: 1px solid #888; border-radius: 10px; text-align: center; }\r\n    .juego-fiel-enteros-container .close { color: #aaa; float: right; font-size: 28px; font-weight: bold; }\r\n    \/* CORRECCI\u00d3N: Selector hover para el nivel de enteros *\/\r\n    .juego-fiel-enteros-container .close:hover, .juego-fiel-enteros-container .close:focus { color: black; text-decoration: none; cursor: pointer; }\r\n    \r\n    \/* COLOR IDENTIDAD: Violeta para L\u00f3gica de Signos *\/\r\n    .juego-fiel-enteros-container .titulo-division { color: #9b59b6; }\r\n    \r\n    .juego-fiel-enteros-container .userAnswer {\r\n        width: 65px; padding: 2px 5px; height: 30px; text-align: center;\r\n        border: 2px solid #cccccc !important; border-radius: 5px;\r\n        background-color: #ffffff !important; font-size: 18px; color: #333;\r\n        display: block; margin: 5px auto;\r\n    }\r\n    .juego-fiel-enteros-container .userAnswer:focus {\r\n        border-color: #9b59b6 !important;\r\n        outline: none;\r\n        box-shadow: 0 0 5px rgba(155, 89, 182, 0.6);\r\n    }\r\n    \r\n    .progress-wrapper-enteros { \r\n        background-color: #eee; border-radius: 10px; height: 20px; \r\n        width: 100%; margin: 15px 0; position: relative; border: 1px solid #ccc; overflow: hidden; \r\n    }\r\n    #progressBar-fiel-enteros { background: #4caf50; height: 100%; width: 0%; transition: width 0.3s; }\r\n    .progress-text-enteros { position: absolute; width: 100%; text-align: center; top: 0; font-size: 12px; font-weight: bold; color: #000; line-height: 20px; }\r\n<\/style>\r\n\r\n<div class=\"juego-fiel-enteros-container\">\r\n    <div class=\"container\">\r\n        <p class=\"lesson titulo-division\">\"Regla de los Signos: Si son iguales, sumamos y mantenemos el signo. Si son distintos, restamos y dejamos el signo del n\u00famero con mayor valor absoluto.\"<\/p>\r\n        <div class=\"questions-container\" id=\"exercise-fiel-enteros\"><\/div>\r\n        <div id=\"roundResult-fiel-enteros\" class=\"hidden\"><\/div>\r\n        <div class=\"progress-wrapper-enteros\">\r\n            <div id=\"progressBar-fiel-enteros\"><\/div>\r\n            <div class=\"progress-text-enteros\" id=\"progressText-fiel-enteros\">Racha: 0 \/ 27<\/div>\r\n        <\/div>\r\n        <div id=\"consecutiveCorrect-fiel-enteros\" class=\"hidden\"><\/div>\r\n        <button id=\"verify-btn-fiel-enteros\">Verificar respuestas<\/button>\r\n        <button id=\"continue-btn-fiel-enteros\">Continuar reto<\/button>\r\n        <button id=\"finish-btn-fiel-enteros\">An\u00e1lisis de errores<\/button>\r\n        <button id=\"restart-btn-fiel-enteros\">Reiniciar reto<\/button>\r\n\r\n        <div id=\"errorModal-fiel-enteros\" class=\"modal\">\r\n            <div class=\"modal-content\">\r\n                <span id=\"closeError-fiel-enteros\" class=\"close\">&times;<\/span>\r\n                <div id=\"errorContent-fiel-enteros\"><\/div>\r\n                <button id=\"download-txt-btn-fiel-enteros\">Descargar refuerzo de signos en PDF<\/button>\r\n            <\/div>\r\n        <\/div>\r\n        <div id=\"winModal-fiel-enteros\" class=\"modal\">\r\n            <div class=\"modal-content\">\r\n                <span id=\"closeWin-fiel-enteros\" class=\"close\">&times;<\/span>\r\n                <div id=\"winContent-fiel-enteros\"><\/div>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n<\/div>\r\n\r\n<script>\r\n(function() {\r\n    const suffix = '-fiel-enteros';\r\n    const consecutiveCorrectKey = 'consecutiveCorrect_fiel_enteros';\r\n    const allErrorsKey = 'allErrors_fiel_enteros';\r\n    const exercisesKey = 'exercises_fiel_enteros';\r\n\r\n    const exerciseDiv = document.getElementById('exercise' + suffix);\r\n    const roundResult = document.getElementById('roundResult' + suffix);\r\n    const consecutiveCorrectPara = document.getElementById('consecutiveCorrect' + suffix);\r\n    const errorModal = document.getElementById('errorModal' + suffix);\r\n    const winModal = document.getElementById('winModal' + suffix);\r\n    const errorContent = document.getElementById('errorContent' + suffix);\r\n    const winContent = document.getElementById('winContent' + suffix);\r\n\r\n    let consecutiveCorrect = parseInt(localStorage.getItem(consecutiveCorrectKey)) || 0;\r\n    let allErrors = JSON.parse(localStorage.getItem(allErrorsKey)) || [];\r\n    let startTime;\r\n    let verifyButtonClicked = false;\r\n\r\n    function updateProgressBar() {\r\n        const perc = Math.min((consecutiveCorrect \/ 27) * 100, 100);\r\n        document.getElementById('progressBar-fiel-enteros').style.width = perc + '%';\r\n        document.getElementById('progressText-fiel-enteros').innerHTML = `Racha: ${consecutiveCorrect} \/ 27`;\r\n    }\r\n\r\n    function generateExercise() {\r\n        let n1 = Math.floor(Math.random() * 30) - 15;\r\n        let n2 = Math.floor(Math.random() * 30) - 15;\r\n        if (n1 === 0) n1 = 7; if (n2 === 0) n2 = -5;\r\n        \r\n        const esSuma = Math.random() < 0.5;\r\n        let visual, result;\r\n\r\n        if (esSuma) {\r\n            visual = `${n1} + (${n2})`;\r\n            result = n1 + n2;\r\n        } else {\r\n            visual = `${n1} - (${n2})`;\r\n            result = n1 - n2;\r\n        }\r\n        return { visual, result };\r\n    }\r\n\r\n    function generateExercises() {\r\n        const exercises = [];\r\n        for (let i = 0; i < 9; i++) {\r\n            exercises.push(generateExercise());\r\n        }\r\n        localStorage.setItem(exercisesKey, JSON.stringify(exercises));\r\n        return exercises;\r\n    }\r\n\r\n    function showExercises(exercises) {\r\n        if (!exerciseDiv) return;\r\n        exerciseDiv.innerHTML = '';\r\n        exercises.forEach((ex, index) => {\r\n            exerciseDiv.innerHTML += `\r\n            <div class=\"question\">\r\n                <p>Reto ${index + 1}: \u00bfCu\u00e1nto es ${ex.visual}?<\/p>\r\n                <input type=\"text\" inputmode=\"numeric\" pattern=\"-?[0-9]*\" id=\"userAnswer${index}${suffix}\" class=\"userAnswer\">\r\n                <p id=\"feedback${index}${suffix}\" class=\"feedback\"><\/p>\r\n            <\/div>`;\r\n        });\r\n        updateProgressBar();\r\n    }\r\n\r\n    function verifyAnswers() {\r\n        if (verifyButtonClicked) return;\r\n        verifyButtonClicked = true;\r\n        let correctAnswers = 0;\r\n        const exercises = JSON.parse(localStorage.getItem(exercisesKey));\r\n        const errors = [];\r\n\r\n        exercises.forEach((ex, index) => {\r\n            const userAnswer = parseInt(document.getElementById(`userAnswer${index}${suffix}`).value);\r\n            const feedbackPara = document.getElementById(`feedback${index}${suffix}`);\r\n            if (!isNaN(userAnswer) && userAnswer === ex.result) {\r\n                feedbackPara.innerHTML = '\u00a1Correcto!';\r\n                feedbackPara.classList.add('correct-answer');\r\n                correctAnswers++;\r\n                consecutiveCorrect++;\r\n            } else {\r\n                feedbackPara.innerHTML = `Era ${ex.result}`;\r\n                feedbackPara.classList.add('incorrect-answer');\r\n                feedbackPara.classList.add('error-blink');\r\n                consecutiveCorrect = 0;\r\n                errors.push({ visual: ex.visual, result: ex.result });\r\n            }\r\n        });\r\n\r\n        localStorage.setItem(consecutiveCorrectKey, consecutiveCorrect);\r\n        allErrors.push(...errors);\r\n        localStorage.setItem(allErrorsKey, JSON.stringify(allErrors));\r\n        updateProgressBar();\r\n        showRoundResult(correctAnswers);\r\n        showConsecutiveCorrect();\r\n    }\r\n\r\n    function showRoundResult(correctAnswers) {\r\n        if(roundResult) {\r\n            roundResult.innerHTML = `Ronda finalizada: ${correctAnswers}\/9 correctas.`;\r\n            roundResult.classList.remove('hidden');\r\n        }\r\n    }\r\n\r\n    function showConsecutiveCorrect() {\r\n        if(consecutiveCorrectPara) {\r\n            consecutiveCorrectPara.classList.remove('hidden');\r\n            if (consecutiveCorrect >= 27) {\r\n                winContent.innerHTML = `<h2 style=\"color: #9b59b6;\">\u00a1Maestro de los Signos!<\/h2><p>Has superado los 27 desaf\u00edos sin fallar.<\/p>`;\r\n                if(winModal) winModal.style.display = \"block\";\r\n            } else {\r\n                consecutiveCorrectPara.innerHTML = `Racha actual: ${consecutiveCorrect}. \u00a1Necesitas 27!`;\r\n            }\r\n        }\r\n    }\r\n\r\n    function showErrors() {\r\n        const currentAllErrors = JSON.parse(localStorage.getItem(allErrorsKey)) || [];\r\n        if(errorContent) {\r\n            errorContent.innerHTML = '<h2>Historial de Signos<\/h2>';\r\n            currentAllErrors.forEach((err, i) => {\r\n                errorContent.innerHTML += `<p>${i+1}. ${err.visual} = <span style=\"color:red;\">${err.result}<\/span><\/p>`;\r\n            });\r\n        }\r\n        if(errorModal) errorModal.style.display = \"block\";\r\n    }\r\n\r\n    function restartGame() {\r\n        consecutiveCorrect = 0; allErrors = [];\r\n        localStorage.setItem(consecutiveCorrectKey, '0');\r\n        localStorage.setItem(allErrorsKey, '[]');\r\n        updateProgressBar();\r\n        verifyButtonClicked = false;\r\n        showExercises(generateExercises());\r\n    }\r\n\r\n    function generateTextFile() {\r\n        const allErrors = JSON.parse(localStorage.getItem(allErrorsKey)) || [];\r\n        let content = \"Lecci\u00f3n: Suma y Resta de Enteros\\n\\n\";\r\n        if (allErrors.length > 0) {\r\n            content += \"REGLA: Signos iguales se suman. Signos distintos se restan.\\n\\n\";\r\n            allErrors.forEach((e, i) => content += `${i+1}. Resolver: ${e.visual} = \\n`);\r\n        } else { content += \"\u00a1Dominio perfecto de la regla de signos!\"; }\r\n\r\n        const { jsPDF } = window.jspdf;\r\n        const doc = new jsPDF();\r\n        doc.text(doc.splitTextToSize(content, 180), 15, 20);\r\n        doc.save('Refuerzo_Signos_Enteros.pdf');\r\n    }\r\n\r\n    document.getElementById('restart-btn' + suffix).onclick = restartGame;\r\n    document.getElementById('verify-btn' + suffix).onclick = verifyAnswers;\r\n    document.getElementById('continue-btn' + suffix).onclick = () => { verifyButtonClicked = false; showExercises(generateExercises()); };\r\n    document.getElementById('finish-btn' + suffix).onclick = showErrors;\r\n    document.getElementById('download-txt-btn' + suffix).onclick = generateTextFile;\r\n    document.getElementById('closeError' + suffix).onclick = () => errorModal.style.display = \"none\";\r\n    document.getElementById('closeWin' + suffix).onclick = () => winModal.style.display = \"none\";\r\n\r\n    startTime = new Date();\r\n    showExercises(JSON.parse(localStorage.getItem(exercisesKey)) || generateExercises());\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u00abRegla de los Signos: Si son iguales, sumamos y mantenemos el signo. Si son distintos, restamos y dejamos el signo del n\u00famero con mayor valor absoluto.\u00bb Racha: 0 \/ 27 Verificar respuestas Continuar reto An\u00e1lisis de errores Reiniciar reto &times; Descargar refuerzo de signos en PDF &times;<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1202","page","type-page","status-publish","hentry"],"blocksy_meta":[],"_hostinger_reach_plugin_has_subscription_block":false,"_hostinger_reach_plugin_is_elementor":false,"_links":{"self":[{"href":"https:\/\/entrenacalculo.com\/en\/wp-json\/wp\/v2\/pages\/1202","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/entrenacalculo.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/entrenacalculo.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/entrenacalculo.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/entrenacalculo.com\/en\/wp-json\/wp\/v2\/comments?post=1202"}],"version-history":[{"count":6,"href":"https:\/\/entrenacalculo.com\/en\/wp-json\/wp\/v2\/pages\/1202\/revisions"}],"predecessor-version":[{"id":1467,"href":"https:\/\/entrenacalculo.com\/en\/wp-json\/wp\/v2\/pages\/1202\/revisions\/1467"}],"wp:attachment":[{"href":"https:\/\/entrenacalculo.com\/en\/wp-json\/wp\/v2\/media?parent=1202"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}