{"id":49446,"date":"2025-08-16T18:57:03","date_gmt":"2025-08-16T18:57:03","guid":{"rendered":"https:\/\/skdojo.com\/?p=49446"},"modified":"2025-08-16T18:59:00","modified_gmt":"2025-08-16T18:59:00","slug":"quick-typing-test-az","status":"publish","type":"post","link":"https:\/\/skdojo.com\/en\/quick-typing-test-az\/","title":{"rendered":"A-Z Challenge \u2013 Fast Finger Challenge"},"content":{"rendered":"\n<p class=\"translation-block\">O&nbsp;<strong>A-Z Challenge<\/strong>&nbsp;\u00e9 um jogo simples e viciante onde voc\u00ea precisa provar sua velocidade e reflexo no teclado. O objetivo \u00e9 direto:&nbsp;<strong>digitar todas as letras do alfabeto, de A at\u00e9 Z, na ordem correta, antes que o tempo acabe<\/strong>.<\/p>\n\n\n\n<p class=\"translation-block\">Parece f\u00e1cil? Pode at\u00e9 ser\u2026 mas o cron\u00f4metro est\u00e1 contra voc\u00ea! Cada erro ou hesita\u00e7\u00e3o pode custar segundos preciosos, e s\u00f3 quem tem foco e rapidez consegue chegar at\u00e9 o final.<\/p>\n\n\n\n<div class=\"quiz-container\">\n    <p class=\"translation-block\">Digite de <strong>A<\/strong> at\u00e9 <strong>Z<\/strong> na ordem correta!<\/p>\n\n    <select id=\"difficulty-select\">\n        <option value=\"normal\" data-time=\"15\" selected>Normal (15s)<\/option>\n        <option value=\"facil\" data-time=\"20\">F\u00e1cil (20s)<\/option>\n        <option value=\"facil\" data-time=\"30\">Mobile (30s)<\/option>\n        <option value=\"dificil\" data-time=\"10\">Dif\u00edcil (10s)<\/option>\n        <option value=\"dificil\" data-time=\"5\">Imposs\u00edvel (10s)<\/option>\n    <\/select>\n\n    <div id=\"timer\">00:15<\/div>\n\n    <div id=\"input-area\">\n        <input type=\"text\" id=\"guess-input\" placeholder=\"Digite a pr\u00f3xima letra...\" autofocus maxlength=\"1\">\n         <button id=\"guess-button\">Enviar<\/button>\n        <button id=\"reset-button\">Resetar<\/button>\n    <\/div>\n\n    <div id=\"message\"><\/div>\n\n    <div id=\"results-container\"><\/div>\n<\/div>\n\n\n\n<script>\ndocument.addEventListener('DOMContentLoaded', () => {\n    const guessInput       = document.getElementById('guess-input');\n    const guessButton      = document.getElementById('guess-button');\n    const resetButton      = document.getElementById('reset-button');\n    const resultsContainer = document.getElementById('results-container');\n    const timerDisplay     = document.getElementById('timer');\n    const messageDisplay   = document.getElementById('message');\n    const diffSelect       = document.getElementById('difficulty-select');\n\n    const alphabet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\".split(\"\");\n    let currentIndex, timeLeft, timer, started;\n\n    \/\/ ------- Fun\u00e7\u00f5es principais -------\n    function updateTimerText(sec) {\n        const m=Math.floor(sec\/60), s=sec%60;\n        timerDisplay.textContent = `${String(m).padStart(2,'0')}:${String(s).padStart(2,'0')}`;\n        timerDisplay.style.color = sec<=5 ? '#d9534f' : '#337ab7';\n    }\n\n    function tick() {\n        updateTimerText(timeLeft);\n        if (timeLeft <= 0) end(false);\n        else timeLeft--;\n    }\n\n    function start() {\n        if (started) return;\n        started = true;\n        timeLeft = parseInt(diffSelect.options[diffSelect.selectedIndex].dataset.time, 10) || 15;\n        diffSelect.disabled = true;\n        updateTimerText(timeLeft);\n        timer = setInterval(tick, 1000);\n        render();\n    }\n\n    function end(won) {\n        clearInterval(timer);\n        guessInput.disabled = true;\n        guessButton.disabled = true;\n        if (won) {\n            messageDisplay.textContent = \"Parab\u00e9ns! Voc\u00ea digitou de A at\u00e9 Z!\";\n            messageDisplay.style.color = '#5cb85c';\n        } else {\n            messageDisplay.textContent = `Tempo esgotado! Voc\u00ea chegou at\u00e9: ${alphabet[currentIndex-1] || 'nenhuma'}.`;\n            messageDisplay.style.color = '#d9534f';\n        }\n    }\n\n    function render() {\n        resultsContainer.innerHTML = '';\n        alphabet.forEach((letter, i) => {\n            const div = document.createElement('div');\n            div.className = 'result-item';\n            div.textContent = (i < currentIndex) ? letter : '---';\n            if (i < currentIndex) div.classList.add('correct');\n            resultsContainer.appendChild(div);\n        });\n    }\n\n    function handleEnter() {\n        start();\n        const guess = guessInput.value.trim().toUpperCase();\n        guessInput.value = '';\n        if (!guess) return;\n\n        if (guess === alphabet[currentIndex]) {\n            currentIndex++;\n            render();\n            if (currentIndex === alphabet.length) {\n                end(true);\n            }\n        } else {\n            messageDisplay.textContent = `Errado! A pr\u00f3xima letra \u00e9: ${alphabet[currentIndex]}`;\n            messageDisplay.style.color = '#d9534f';\n        }\n    }\n\n    \/\/ ------- Reset do jogo -------\n    function resetGame() {\n        clearInterval(timer);\n        currentIndex = 0;\n        started = false;\n        guessInput.disabled = false;\n        guessButton.disabled = false;\n        diffSelect.disabled = false;\n        messageDisplay.textContent = '';\n        timeLeft = parseInt(diffSelect.options[diffSelect.selectedIndex].dataset.time, 10) || 15;\n        updateTimerText(timeLeft);\n        render();\n        guessInput.value = '';\n        guessInput.focus();\n    }\n\n    \/\/ ------- Eventos -------\n    guessInput.addEventListener('keydown', (e) => { if (e.key==='Enter') handleEnter(); });\n    guessButton.addEventListener('click', handleEnter);\n    resetButton.addEventListener('click', resetGame);\n\n    \/\/ ------- Inicializa\u00e7\u00e3o -------\n    resetGame();\n});\n<\/script>\n\n<style>\n.result-item {\n    display: inline-block;\n    width: 24px;\n    height: 24px;\n    text-align: center;\n    margin: 2px;\n    padding: 2px;\n    border: 1px solid #ccc;\n    border-radius: 4px;\n}\n.correct {\n    background: #5cb85c;\n    color: white;\n    font-weight: bold;\n}\n#reset-button {\n    margin-left: 8px;\n    background: #f0ad4e;\n    border: none;\n    padding: 5px 10px;\n    border-radius: 4px;\n    cursor: pointer;\n}\n#reset-button:hover {\n    background: #ec971f;\n    color: white;\n}\n<\/style>\n\n\n\n<h3 class=\"wp-block-heading\"> Dicas para mandar bem<\/h3>\n\n\n\n<ul class=\"wp-block-list translation-block\">\n<li>Use apenas uma m\u00e3o ou as duas, mas mantenha sempre os dedos pr\u00f3ximos \u00e0s teclas.<\/li>\n\n\n\n<li>Memorize a sequ\u00eancia para n\u00e3o perder tempo pensando.<\/li>\n\n\n\n<li>Comece no modo&nbsp;<strong>F\u00e1cil (20s)<\/strong>&nbsp;at\u00e9 pegar o jeito, depois arrisque o&nbsp;<strong>Dif\u00edcil (10s)<\/strong>.<\/li>\n<\/ul>\n\n\n\n<p class=\"translation-block\">O A-Z Challenge \u00e9 um jogo perfeito para:<\/p>\n\n\n\n<ul class=\"wp-block-list translation-block\">\n<li>Treinar&nbsp;<strong>rapidez de digita\u00e7\u00e3o<\/strong>.<\/li>\n\n\n\n<li>Melhorar sua&nbsp;<strong>concentra\u00e7\u00e3o e reflexos<\/strong>.<\/li>\n\n\n\n<li>Competir com amigos para ver quem consegue completar o alfabeto mais r\u00e1pido.<\/li>\n\n\n\n<li>Fazer uma pausa r\u00e1pida e divertida no dia a dia.<\/li>\n<\/ul>\n\n\n\n<p class=\"translation-block\">\u00c9 uma experi\u00eancia simples, mas que cria aquela tens\u00e3o gostosa de correr contra o tempo. Voc\u00ea vai sentir o cora\u00e7\u00e3o acelerar quando faltar apenas algumas letras e o cron\u00f4metro estiver nos \u00faltimos segundos!<\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":49451,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-49446","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-games","generate-columns","tablet-grid-50","mobile-grid-100","grid-parent","grid-25","no-featured-image-padding"],"_links":{"self":[{"href":"https:\/\/skdojo.com\/en\/wp-json\/wp\/v2\/posts\/49446","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/skdojo.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/skdojo.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/skdojo.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/skdojo.com\/en\/wp-json\/wp\/v2\/comments?post=49446"}],"version-history":[{"count":9,"href":"https:\/\/skdojo.com\/en\/wp-json\/wp\/v2\/posts\/49446\/revisions"}],"predecessor-version":[{"id":49493,"href":"https:\/\/skdojo.com\/en\/wp-json\/wp\/v2\/posts\/49446\/revisions\/49493"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/skdojo.com\/en\/wp-json\/wp\/v2\/media\/49451"}],"wp:attachment":[{"href":"https:\/\/skdojo.com\/en\/wp-json\/wp\/v2\/media?parent=49446"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/skdojo.com\/en\/wp-json\/wp\/v2\/categories?post=49446"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/skdojo.com\/en\/wp-json\/wp\/v2\/tags?post=49446"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}