var visibilidade_jogo_pdf_jm = false; var jogo_da_memoria_pdf_jm = document.querySelector(".jogo_da_memoria_pdf_jm"); var container_pdf_jm = document.getElementById("container_pdf_jm"); var som_ativado_pdf_jm = true; var som_pdf_jm = document.querySelector(".som_pdf_jm"); var sucesso_pdf_jm = document.getElementById("sucesso_pdf_jm"); var erro_pdf_jm = document.getElementById("erro_pdf_jm"); var fim_de_jogo_pdf_jm = document.getElementById("fim_de_jogo_pdf_jm"); var tela_final_pdf_jm = document.querySelector(".tela_final_pdf_jm"); var virando_a_carta_pdf_jm = document.getElementById("virando_a_carta_pdf_jm"); var jogo_pdf_jm = ""; var vez_pdf_jm = null; var proximo_pdf_jm = null; var tentativa_pdf_jm = 0; let carta_anterior_pdf_jm; var jg1_pdf_jm = null; var jg2_pdf_jm = null; var cor_de_acerto_pdf_jm = {"1":"#4CAF50","-1":"#03A9F4"}; var cor_padrao_pdf_jm = "antiquewhite"; var pontuacoes_pdf_jm = {"1":0,"-1":0}; var jogador_el_pdf_jm = { "1": document.querySelector("#jogador1_pdf_jm"), "-1": document.querySelector("#jogador2_pdf_jm") } var pontuacao_el_pdf_jm = { "1": document.querySelector("#jogador1_pdf_jm .pontuacao_pdf_jm"), "-1": document.querySelector("#jogador2_pdf_jm .pontuacao_pdf_jm") //"-1" é o segundo jogador, usei para facilitar a troca na seleção dos jogadores }; var nome_el_pdf_jm = { "1": document.querySelector("#jogador1_pdf_jm .nome_pdf_jm:first-child"), "-1": document.querySelector("#jogador2_pdf_jm .nome_pdf_jm:first-child") } let questoes_pdf_jm = [ {"enunciado" : "Laura comeu 1/6 de um bolo e João 1/3 desse mesmo bolo. Qual é a fração que representa a maior quantidade de bolo que foi comido?", "par" : 1 }, {"enunciado": "1/3 > 1/6, João comeu mais bolo.", "par" : 1 }, {"enunciado": "Represente o número decimal 0,2 em forma de fração. Em seguida, represente essa fração na forma irredutível.", "par" : 2 }, {"enunciado": "\\(\\frac{2}{10} = \\frac{1}{5}\\)", "par" : 2 }, {"enunciado": "No aniversário de Maria, foram encomendados 900 salgadinhos, sendo \\(\\frac{2}{5}\\) de coxinha. Quantas coxinhas foram encomendadas para o aniversário?", "par" : 3 }, {"enunciado": "360", "par" : 3 }, {"enunciado" : "Para ir à escola, João utiliza sua bicicleta. Quando já havia percorrido \\(\\frac{1}{5}\\) da distância, sua bicicleta estragou. A partir daí ele foi caminhando. Qual a distância restante que ele deverá caminhar até a escola?", "par" : 4 }, {"enunciado": "João caminhará \\(\\frac{4}{5}\\) do percurso restante até a escola.", "par" : 4 }, {"enunciado": "Maria e José estão comendo uma pizza de 18 fatias. Sabendo que Maria comeu \\(\\frac{1}{3}\\) e José comeu \\(\\frac{1}{6}\\), quantas fatias eles comeram no total?", "par" : 5 }, {"enunciado": "9 fatias", "par" : 5 }, {"enunciado": "Num centro de convivência com 260 alunos, foram ofertadas três atividades extraclasse: música, dança e artes marciais. Sabe-se que \\(\\frac{3}{13}\\) escolheu música e dança, \\(\\frac{2}{5}\\) escolheu somente música, \\(\\frac{1}{4}\\) escolheu artes marciais e o restante escolheu apenas dança. Quantos alunos escolheram apenas dança?", "par" : 6 }, {"enunciado": "31 alunos escolheram apenas dança.", "par" : 6 }, {"enunciado" : "Em uma corrida participaram 26 ciclistas. Desses ciclistas, \\(\\frac{4}{13}\\) abandonaram a corrida por problemas na bicicleta. Quantos ciclistas terminaram a corrida?", "par" : 7 }, {"enunciado": "18 ciclistas", "par" : 7 }, {"enunciado": "Uma piscina teve \\(\\frac{4}{3}\\) da sua capacidade preenchida. No entanto, ainda faltam 2700 litros para que ela seja enchida por completo. Qual é a capacidade total dessa piscina?", "par" : 8 }, {"enunciado": "10.800 litros", "par" : 8 }, {"enunciado": "Nicolau tinha previsto, no orçamento, um gasto de R$ 2100,00 para pintar sua casa. Mas devido a imprevistos na obra, o valor aumentou 30%. Calcule quantos reais ele gastou na pintura?", "par" : 9 }, {"enunciado": "R$ 2.730,00", "par" : 9 }, {"enunciado" : "João corre todo fim de tarde. Sabe-se que ontem, a distância percorrida foi dada pela fórmula \\(P(n) = 4^{\\frac{n}{2}}\\) com \\(n = 3\\). Quantos km ele correu ontem?", "par" : 10 }, {"enunciado": "8 km", "par" : 10 }, {"enunciado" : "Para efetuar a compra de uma tv no valor de R$ 1420,00, José recebeu um desconto de R$ 426,00 no pagamento à vista. Qual é a fração que representa a porcentagem de desconto?", "par" : 11 }, {"enunciado": "\\(\\frac{30}{100}\\)", "par" : 11 }, {"enunciado": "Manoela comeu a quantia equivalente a 0,4444... de fatias de uma torta. Mostre em forma de fração quantas fatias ela comeu.", "par" : 12 }, {"enunciado": "\\(\\frac{4}{9}\\)", "par" : 12 }, {"enunciado": "Considere os números a seguir: \\({(\\frac{1}{4})}^{\\frac{-1}{2}}\\) e \\({(4)}^{\\frac{-3}{2}}\\). Indique qual representa o maior valor.", "par" : 13 }, {"enunciado": "\\({(\\frac{1}{4})}^{\\frac{-1}{2}}\\) = \\({(4)}^{\\frac{1}{2}} = \\sqrt{4} = 2\\)", "par" : 13 }, {"enunciado" : "Lançando um dado comum (valores de 1 a 6), não viciado, qual as chances de se obter um valor ímpar?", "par" : 14 }, {"enunciado": "\\(\\frac{3}{6}\\)", "par" : 14 }, {"enunciado": "Dentre os números \\(\\frac{7}{5}\\), \\(1,25\\) e \\(\\frac{9}{8}\\), qual representa o maior e menor valor, respectivamente?", "par" : 15 }, {"enunciado": "\\(\\frac{7}{5}\\) e \\(\\frac{9}{8}\\)", "par" : 15 }, ] let embaralhado_pdf_jm = []; let interior_cartas_pdf_jm = []; function abrir_jogo_da_memoria_pdf_jm(){ pegarnumJogadores_pdf_jm(); atualizarCamponomeJogador2_pdf_jm(); if(visibilidade_jogo_pdf_jm){ jogo_da_memoria_pdf_jm.classList.remove("fechar_pdf_jm"); jogo_da_memoria_pdf_jm.innerHTML = "Abrir Jogo da Memória"; container_pdf_jm.style.display = "none"; visibilidade_jogo_pdf_jm = false; } else { jogo_da_memoria_pdf_jm.classList.add("fechar_pdf_jm"); jogo_da_memoria_pdf_jm.innerHTML = "Fechar Jogo da Memória"; container_pdf_jm.style.display = "block"; visibilidade_jogo_pdf_jm = true; } } function voltar_tela_inicial_pdf_jm(){ document.querySelector("#info_pdf_jm").style.visibility = "hidden"; document.querySelector("#info_pdf_jm").style.opacity = "0"; document.querySelector("#container_cartas_pdf_jm").style.visibility = "hidden"; document.querySelector("#container_cartas_pdf_jm").style.opacity = "0"; document.querySelector(".tela_inicial_pdf_jm").style.display = "flex"; } function toggle_som_pdf_jm() { if(som_ativado_pdf_jm){ som_pdf_jm.classList.toggle("som_desativado_pdf_jm"); som_ativado_pdf_jm = false; } else { som_pdf_jm.classList.toggle("som_desativado_pdf_jm"); som_ativado_pdf_jm = true; } } var listeners_pdf_jm = {} for(i = 0; i < questoes_pdf_jm.length; i++){ listeners_pdf_jm[i] = null; } function gerenciar_apos_erro(param_pdf_jm, x_pdf_jm, carta) { let id_pdf_jm = parseInt(carta.parentNode.id); listeners_pdf_jm[id_pdf_jm] = (event) => { desvirar_apos_erro(event, param_pdf_jm, x_pdf_jm, carta, listeners_pdf_jm[id_pdf_jm]); }; x_pdf_jm.addEventListener("click", listeners_pdf_jm[id_pdf_jm]); } function desvirar_apos_erro(event, param_pdf_jm, x_pdf_jm, carta, desvirar_apos_erro_callback) { event.stopPropagation(); carta_anterior_pdf_jm.classList.toggle('virada_pdf_jm'); carta_anterior_pdf_jm.classList.add('disponivel_pdf_jm'); carta.classList.toggle('virada_pdf_jm'); carta.classList.add('disponivel_pdf_jm'); tentativa_pdf_jm = 1; x_pdf_jm.style.display = "none"; disponibilizar_pdf_jm(); x_pdf_jm.removeEventListener("click", desvirar_apos_erro_callback); if(param_pdf_jm == "com_2_jogadores"){ jogador_el_pdf_jm[vez_pdf_jm].classList.remove('pulsar'); jogador_el_pdf_jm[proximo_pdf_jm].classList.add('pulsar'); vez_pdf_jm = proximo_pdf_jm; proximo_pdf_jm = (parseInt(vez_pdf_jm, 10)*(-1)).toString(); } } function fechar_tela_final_pdf_jm() { tela_final_pdf_jm.style.display = "none"; } function sanitizeInput(input) { return input.replace(/[^a-zA-Z0-9\sçáâéêíóôúãõ]/g, ''); } function disponibilizar_pdf_jm(){ for(i=0; i= numVezes_pdf_jm) { clearInterval(intervaloID_pdf_jm); carta_pdf_jm.style.left = '0px'; // Restaura a posição original da div } } // Inicia o intervalo para cacoalhar a div let intervaloID_pdf_jm = setInterval(moverDiv_pdf_jm, intervalo_pdf_jm); } const finalizar_jogada_pdf_jm = { "com_1_jogador": function(carta){ if(embaralhado_pdf_jm[carta_anterior_pdf_jm.parentNode.id]["par"] == embaralhado_pdf_jm[carta.parentNode.id]["par"]){ pontuacoes_pdf_jm[vez_pdf_jm] += 1; pontuacao_el_pdf_jm[vez_pdf_jm].innerHTML = " = "+pontuacoes_pdf_jm[vez_pdf_jm]; console.log("Acertou!"); setTimeout(() => { som_ativado_pdf_jm? sucesso_pdf_jm.play():null; }, 500); setTimeout(() => { if(pontuacoes_pdf_jm["1"] < (questoes_pdf_jm.length/2)){ carta_anterior_pdf_jm.classList.add("finalizado_pdf_jm"); carta.classList.add("finalizado_pdf_jm"); carta_anterior_pdf_jm.querySelector('.verso_pdf_jm').style.backgroundColor = cor_de_acerto_pdf_jm[vez_pdf_jm]; carta.querySelector('.verso_pdf_jm').style.backgroundColor = cor_de_acerto_pdf_jm[vez_pdf_jm]; tentativa_pdf_jm = 1; disponibilizar_pdf_jm(); } else { carta_anterior_pdf_jm.classList.add("finalizado_pdf_jm"); carta.classList.add("finalizado_pdf_jm"); carta_anterior_pdf_jm.querySelector('.verso_pdf_jm').style.backgroundColor = cor_de_acerto_pdf_jm[vez_pdf_jm]; carta.querySelector('.verso_pdf_jm').style.backgroundColor = cor_de_acerto_pdf_jm[vez_pdf_jm]; setTimeout(() => { som_ativado_pdf_jm? fim_de_jogo_pdf_jm.play():null; let txt_pdf_jm = `Você conseguiu, ${jg1_pdf_jm}! Parabéns!`; tela_final_pdf_jm.children[0].innerHTML = txt_pdf_jm; tela_final_pdf_jm.style.display = "flex"; }, 1200); } }, 800); } else { console.log("Errou!"); setTimeout(() => { som_ativado_pdf_jm? erro_pdf_jm.play():null; chacoalharCarta(carta_anterior_pdf_jm); chacoalharCarta(carta); let x_pdf_jm = carta.querySelector(".fechar_pdf_jm"); x_pdf_jm.style.display = "block"; gerenciar_apos_erro("com_1_jogador", x_pdf_jm, carta); }, 500); } }, "com_2_jogadores": function(carta){ if(embaralhado_pdf_jm[carta_anterior_pdf_jm.parentNode.id]["par"] == embaralhado_pdf_jm[carta.parentNode.id]["par"]){ pontuacoes_pdf_jm[vez_pdf_jm] += 1; pontuacao_el_pdf_jm[vez_pdf_jm].innerHTML = " = "+pontuacoes_pdf_jm[vez_pdf_jm]; console.log("Acertou!"); setTimeout(() => { som_ativado_pdf_jm? sucesso_pdf_jm.play():null; }, 500); setTimeout(() => { if(pontuacoes_pdf_jm["1"]+pontuacoes_pdf_jm["-1"] < (questoes_pdf_jm.length/2)){ carta_anterior_pdf_jm.classList.add("finalizado_pdf_jm"); carta.classList.add("finalizado_pdf_jm"); carta_anterior_pdf_jm.querySelector('.verso_pdf_jm').style.backgroundColor = cor_de_acerto_pdf_jm[vez_pdf_jm]; carta.querySelector('.verso_pdf_jm').style.backgroundColor = cor_de_acerto_pdf_jm[vez_pdf_jm]; tentativa_pdf_jm = 1; disponibilizar_pdf_jm(); } else { carta_anterior_pdf_jm.classList.add("finalizado_pdf_jm"); carta.classList.add("finalizado_pdf_jm"); carta_anterior_pdf_jm.querySelector('.verso_pdf_jm').style.backgroundColor = cor_de_acerto_pdf_jm[vez_pdf_jm]; carta.querySelector('.verso_pdf_jm').style.backgroundColor = cor_de_acerto_pdf_jm[vez_pdf_jm]; jogador_el_pdf_jm[vez_pdf_jm].classList.remove('pulsar'); setTimeout(() => { som_ativado_pdf_jm? fim_de_jogo_pdf_jm.play():null; if(pontuacoes_pdf_jm["1"] > pontuacoes_pdf_jm["-1"]){ let txt_pdf_jm = `${jg1_pdf_jm} ganhou!

${jg1_pdf_jm} = ${pontuacoes_pdf_jm["1"]} ponto(s)
${jg2_pdf_jm} = ${pontuacoes_pdf_jm["-1"]} ponto(s)`; tela_final_pdf_jm.children[0].innerHTML = txt_pdf_jm; tela_final_pdf_jm.style.display = "flex"; } else if(pontuacoes_pdf_jm["1"] == pontuacoes_pdf_jm["-1"]){ let txt_pdf_jm = `O jogo empatou!

${jg1_pdf_jm} = ${pontuacoes_pdf_jm["1"]} ponto(s)
${jg2_pdf_jm} = ${pontuacoes_pdf_jm["-1"]} ponto(s)`; tela_final_pdf_jm.children[0].innerHTML = txt_pdf_jm; tela_final_pdf_jm.style.display = "flex"; } else { let txt_pdf_jm = `${jg2_pdf_jm} ganhou!

${jg1_pdf_jm} = ${pontuacoes_pdf_jm["1"]} ponto(s)
${jg2_pdf_jm} = ${pontuacoes_pdf_jm["-1"]} ponto(s)`; tela_final_pdf_jm.children[0].innerHTML = txt_pdf_jm; tela_final_pdf_jm.style.display = "flex"; } }, 1200); } }, 800); } else { console.log("Errou!"); setTimeout(() => { som_ativado_pdf_jm? erro_pdf_jm.play():null; chacoalharCarta(carta_anterior_pdf_jm); chacoalharCarta(carta); let x_pdf_jm = carta.querySelector(".fechar_pdf_jm"); x_pdf_jm.style.display = "block"; gerenciar_apos_erro("com_2_jogadores", x_pdf_jm, carta); }, 500); } } } function virarCarta(carta) { if(carta.classList.contains('disponivel_pdf_jm')){ carta.classList.toggle('virada_pdf_jm'); som_ativado_pdf_jm? virando_a_carta_pdf_jm.play():null; processar_jogada(carta); } } function embaralhar_pdf_jm(array) { for (let i = array.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [array[i], array[j]] = [array[j], array[i]]; } return array; } function processar_jogada(carta){ carta.classList.remove('disponivel_pdf_jm'); if(tentativa_pdf_jm == 1){ carta_anterior_pdf_jm = carta; tentativa_pdf_jm = 2; } else if (tentativa_pdf_jm == 2){ indisponibilizar_pdf_jm(); finalizar_jogada_pdf_jm[jogo_pdf_jm](carta); } else { alert("O Jogo Já Acabou!"); } } function iniciar_pdf_jm(){ jogo_pdf_jm = ""; vez_pdf_jm = null; proximo_pdf_jm = null; tentativa_pdf_jm = 0; jg1_pdf_jm = null; jg2_pdf_jm = null; pontuacoes_pdf_jm = {"1":0,"-1":0}; nome_el_pdf_jm["1"].innerHTML = ""; nome_el_pdf_jm["-1"].innerHTML = ""; pontuacao_el_pdf_jm["1"].innerHTML = ""; pontuacao_el_pdf_jm["-1"].innerHTML = ""; tela_final_pdf_jm.style.display = "none"; atualizarCamponomeJogador2_pdf_jm() embaralhado_pdf_jm = embaralhar_pdf_jm(questoes_pdf_jm); let numJogadores_pdf_jm = pegarnumJogadores_pdf_jm(); for(i=0; i { container_jogo_pf.style.display = "none"; }, 600); btn_pf.innerHTML = "Abrir Jogo Percurso das Frações"; btn_pf.classList.remove("jogo_ativo_pf"); const msg = document.querySelector(".msg_sorteio_ordem"); const d8 = document.querySelector(".dado_8_pf-container"); const titulo_jan = document.querySelector(".titulo_ordem_pf"); const resultados = document.querySelector(".sorteados_sorteio_ordem"); msg.style.display = "block"; d8.style.display = "block"; titulo_jan.style.display = "block"; resultados.style.display = "block"; removerInstanciasJogadorPF(); } else {// --------------------------------- Abrindo o jogo percurso das fracoes ---------------------------------- atualizarJogadores_pf(); jogadores_ordenados_temp = []; numeros_a_sortear_8_pf = [1,2,3,4,5,6,7,8]; container_jogo_pf.style.display = "block"; tela_inicial_pf.style.display = "flex"; setTimeout(() => { container_jogo_pf.style.opacity = "1"; tela_inicial_pf.style.opacity = "1"; container_jogo_pf.style.height = "auto"; }, 200); btn_pf.innerHTML = "Encerrar Jogo Percurso das Frações"; btn_pf.classList.add("jogo_ativo_pf"); atualizar_nome_jogadores_pf(); }//fecha o if das configuracoes de inicio do jogo }// fecha a funcao iniciar_pf() // Função para atualizar a interface de acordo com o número de jogadores selecionado function atualizarJogadores_pf() { const numJogadoresSelect = document.getElementById("numJogadores_pf"); const numJogadores = parseInt(numJogadoresSelect.value); for (let i = 3; i <= 8; i++) {//8 é o número total de jogadores e comeca do 3 porque os jogadores 1 e 2 sempre existirao let jg = "jogador_"+i+"_pf"; if(i <= numJogadores){ document.getElementById(jg).style.display = "flex"; } else { document.getElementById(jg).style.display = "none"; } } } function atualizar_nome_jogadores_pf(){ let jogador_div_pf = document.querySelectorAll(".jogador_div_pf"); for (i=0; i<8; i++){// 8 é o total de jogadores let j_d_pf = jogador_div_pf[i]; let div_nome_pf = j_d_pf.querySelector("div:nth-child(2)"); let jogador_input_pf = j_d_pf.querySelector("input"); jogador_input_pf.value !== ""? div_nome_pf.textContent = sanitizeInput_pf(jogador_input_pf.value): null; jogador_input_pf.addEventListener("input", function(){ div_nome_pf.textContent = sanitizeInput_pf(jogador_input_pf.value); jogador_input_pf.value == ""? div_nome_pf.textContent = jogador_input_pf.placeholder: null; }); } } function inverter_ordem_pf(o){//a ordem nas linhas nem sempre casa com a ordem das casas do tabuleiro, pois contamos as div da esquerda para direita e no tabuleiro pode estar sendo contado da direita para esquerda switch(true){ case o >= 5 && o <= 8: o = 13 - o; break; case o >= 16 && o <= 18: o = 34 - o; break; case o >= 19 && o <= 21: o = 40 - o; break; case o >= 29 && o <= 32: o = 61 - o; break; default: console.log("A linha não precisa de reorganização."); break; } //se nao for nenhuma dessas linhas nada é invertido return o; } function iniciarJogo_pf(){ const casa_surpresa = ["-1","+1", "-2","+2", "+3"]; // Sortear um número aleatório entre 3 e 30 let numeros_a_sortear = []; for(i=3; i<=30; i++){//preparando os números de 3 a 30 para serem sorteados numeros_a_sortear.push(i); } function sortearNumero() { const len = numeros_a_sortear.length; const indice_sorteado = Math.floor(Math.random() * (len-1)); const numeroSorteado = numeros_a_sortear[indice_sorteado]; numeros_a_sortear = numeros_a_sortear.filter(function(el){ return el !== numeroSorteado; }) if(4 < numeroSorteado < 29){//eliminando o os dois números anteriores e os dois posteriores numeros_a_sortear = numeros_a_sortear.filter(function(el){ return el !== numeroSorteado - 2 && el !== numeroSorteado - 1 && el !== numeroSorteado + 1 && el !== numeroSorteado + 2; }) } console.log(numeroSorteado); return numeroSorteado; } const tam = casa_surpresa.length; //manter fixo para a iteracao for (i=0; i { tela_inicial_pf.style.display = "none"; tabuleiro_pf.style.opacity = "1"; }, 200); const numJogadoresSelect = document.getElementById("numJogadores_pf"); const numJogadores = parseInt(numJogadoresSelect.value); const jogador_div_pf = document.querySelectorAll(".jogador_div_pf"); for (i=0; i { jan.style.opacity = "1"; }, 300); } function apagar_janela_definicao_ordem_pf(){ const jan = document.getElementById("janela_definicao_ordem_pf"); jan.style.opacity = "0"; setTimeout(() => { jan.style.display = "none"; document.querySelector(".container_ordem_definida_pf").remove(); }, 500); } function mostrar_janela_de_jogadas_pf() { const jan = document.getElementById("janela_de_jogadas_pf"); const msg_jan = document.getElementById("msg_janela_de_jogadas_pf"); msg_jan.textContent = jogadores_pf[vez_pf].nome+", role o dado e responda a pergunta que aparecerá abaixo do dado."; jan.style.display = "flex"; setTimeout(() => { jan.style.opacity = "1"; }, 300); } function apagar_janela_de_jogadas_pf() { const jan = document.getElementById("janela_de_jogadas_pf"); jan.style.opacity = "0"; setTimeout(() => { jan.style.display = "none"; }, 500); } function definir_ordem_pf(d8_r){ let msg_ini = "Aguarde..."; iteracaoAtual_pf < jogadores_pf.length? msg_ini = jogadores_pf[iteracaoAtual_pf].nome+", role o dado!":null; let msg = document.querySelector(".msg_sorteio_ordem"); let sorteados = document.querySelector(".sorteados_sorteio_ordem"); msg.style.opacity = "0"; setTimeout(() => { msg.textContent = msg_ini; msg.style.opacity = "1"; if(iteracaoAtual_pf >= jogadores_pf.length){ console.log("Ordem definida"); let temp = Object.keys(jogadores_ordenados_temp) .filter(index => jogadores_ordenados_temp[index] !== undefined) .map(index => jogadores_ordenados_temp[index]); jogadores_pf = temp.reverse(); const jan = document.getElementById("janela_definicao_ordem_pf"); // Criação dos elementos let container_ordem_definida = document.createElement("div"); container_ordem_definida.classList.add("container_ordem_definida_pf"); container_ordem_definida.style.display = "flex"; container_ordem_definida.style.flexDirection = "column"; container_ordem_definida.style.textAlign = "center"; let titulo = "

Ordem Definida

"; let nomesJogadores = []; for (i = 0; i < jogadores_pf.length; i++) { nomesJogadores.push(jogadores_pf[i].nome); } let textoJogadores = ""; if (nomesJogadores.length === 1) { textoJogadores = nomesJogadores[0]; } else if (nomesJogadores.length === 2) { textoJogadores = nomesJogadores.join(" e "); } else { textoJogadores = nomesJogadores.slice(0, -1).join(", ") + " e " + nomesJogadores.slice(-1); } let botaoOk = document.createElement("button"); botaoOk.style.cssText = "border-radius: 7px; margin: 15px; padding: 5px; background-color:#ff6c61; color: #fff; font-weight: bold; cursor: pointer;"; botaoOk.onclick = function() {apagar_janela_definicao_ordem_pf()}; botaoOk.textContent = "Ok"; let divConteudo = document.createElement("div"); divConteudo.innerHTML = titulo + "
" + textoJogadores + "
"; container_ordem_definida.appendChild(divConteudo); container_ordem_definida.appendChild(botaoOk); //display none nos elementos para definir a ordem const d8 = document.querySelector(".dado_8_pf-container"); const titulo_jan = document.querySelector(".titulo_ordem_pf"); const resultados = document.querySelector(".sorteados_sorteio_ordem"); msg.style.display = "none"; d8.style.display = "none"; d8_r? d8.querySelector(".dado_8_pf").classList.remove("mostrar_face_"+d8_r+"_d8"):null; titulo_jan.style.display = "none"; resultados.innerHTML = " "; resultados.style.display = "none"; // Adiciona os elementos à janela de definicao de ordem jan.appendChild(container_ordem_definida); ativar_vez(); return; } else { dado_8_pf.addEventListener('click', callback); } }, 500); mostrar_janela_definicao_ordem_pf(); function callback() { const resultado = sortearDado_8_pf(); // Remover o eventListener após a primeira chamada dado_8_pf.removeEventListener('click', callback); jogadores_ordenados_temp[resultado] = jogadores_pf[iteracaoAtual_pf]; setTimeout(() => { resultado > 4? msg.textContent = "Boa jogada!": msg.textContent = "Poderia ter sido melhor!"; sorteados.innerHTML+= " ("+jogadores_pf[iteracaoAtual_pf].nome+" = "+resultado+")"; iteracaoAtual_pf++; }, 1000); if(iteracaoAtual_pf < jogadores_pf.length){ setTimeout(() => { definir_ordem_pf(resultado); }, 3000); } } } function ativar_vez(){ setTimeout(() => { vez_el_pf.textContent = jogadores_pf[vez_pf].nome+", clique na sua peça."; const peca = pecas[jogadores_pf[vez_pf].id]; const localizacao = peca.parentNode.offsetTop; const posicao_scroll = parseInt(localizacao) - (parseInt(window.innerHeight / 2)); window.scrollTo({ top: posicao_scroll, behavior: "smooth" }); peca.classList.add("pulsar_pf"); peca.style.cursor = "pointer"; peca.addEventListener("click", gerenciar_jogada_pf); }, 1500); } function gerenciar_jogada_pf() { mostrar_janela_de_jogadas_pf(); vez_el_pf.textContent = jogadores_pf[vez_pf].nome+" ainda está concluindo sua jogada..."; dado_pf.addEventListener('click', callback_sorteioDado_pf); } function callback_sorteioDado_pf(){ dado_resultado_pf = sortearDado_pf(); dado_pf.removeEventListener('click', callback_sorteioDado_pf); sortear_pergunta_pf(); } function sortear_pergunta_pf(){ const jan = document.getElementById("janela_de_jogadas_pf"); let pergunta; if(perguntas_pf.length > 0){ const num = Math.floor(Math.random() * perguntas_pf.length); pergunta = perguntas_pf[num]; } else if(perguntas_pf.length == 0 && respondidas_erradas_pf.length > 0){ const num = Math.floor(Math.random() * respondidas_erradas_pf.length); pergunta = respondidas_erradas_pf[num]; } else { perguntas_pf = respondidas_certas_pf.slice(); //perguntas_pf recebe o respondidas_certas_pf respondidas_certas_pf.length = 0; //apagando o array respondidas_certas_pf const num = Math.floor(Math.random() * perguntas_pf.length); pergunta = perguntas_pf[num]; } const enunciado = pergunta["enunciado"]; const el_pergunta = document.createElement('div'); el_pergunta.classList.add('el_pergunta_pf'); const enun = document.createElement('div'); enun.innerHTML = enunciado; const titulo = document.createElement('h3'); const titulo_resp = document.createElement('h4'); titulo.textContent = "Pergunta"; titulo_resp.textContent = "Sua Resposta" const divRespostaJogador = document.createElement('div'); divRespostaJogador.classList.add('el_resp_jogador_pf'); const divEspacoResposta = document.createElement("div"); const bt = document.createElement("button"); bt.classList.add("bt_responder_pf"); bt.onclick = function() {corrigir_pf(pergunta)}; bt.textContent = "Ok"; if(pergunta["fracao"]){ divEspacoResposta.style.cssText = "display: flex; justify-content: center; align-items: center;"; const html_conteudo = `
Numerador

Denominador

`; divEspacoResposta.innerHTML = html_conteudo; divEspacoResposta.appendChild(bt); } else { divEspacoResposta.style.cssText = "display: flex; justify-content: center; align-items: center;"; const html_conteudo = `
`; divEspacoResposta.innerHTML = html_conteudo; divEspacoResposta.appendChild(bt); } divRespostaJogador.appendChild(titulo_resp); divRespostaJogador.appendChild(divEspacoResposta); el_pergunta.appendChild(titulo); el_pergunta.appendChild(enun); el_pergunta.appendChild(divRespostaJogador); jan.appendChild(el_pergunta); MathJax.typesetClear(); MathJax.typeset(); } function corrigir_pf(pergunta) { const divPergunta = document.querySelector(".el_pergunta_pf"); if(pergunta["fracao"]){ const n_jogador = deixarSoNumerosVirgula_pf(document.querySelector(".numerador_pf").textContent); const d_jogador = deixarSoNumerosVirgula_pf(document.querySelector(".denominador_pf").textContent); if(pergunta["multiplas_respostas"]){ if(pergunta["n"].includes(n_jogador)){ const index = pergunta["n"].indexOf(n_jogador); const d_resp = pergunta["d"][index]; if(d_resp == d_jogador){ som_ativado_pf? som_acerto_pf.play(): null; apresentar_resultado("Correto!"); respondidas_certas_pf.push(pergunta); const x = perguntas_pf.indexOf(pergunta); const y = respondidas_erradas_pf.indexOf(pergunta); x !== -1 ? perguntas_pf.splice(x, 1) : null; y !== -1 ? respondidas_erradas_pf.splice(y, 1) : null; } else { som_ativado_pf? som_erro_pf.play(): null; apresentar_resultado("Errado!"); const y = respondidas_erradas_pf.indexOf(pergunta); y == -1 ? respondidas_erradas_pf.push(pergunta): null; const x = perguntas_pf.indexOf(pergunta); x !== -1 ? perguntas_pf.splice(x, 1) : null; } } else { som_ativado_pf? som_erro_pf.play(): null; apresentar_resultado("Errado!"); const y = respondidas_erradas_pf.indexOf(pergunta); y == -1 ? respondidas_erradas_pf.push(pergunta): null; const x = perguntas_pf.indexOf(pergunta); x !== -1 ? perguntas_pf.splice(x, 1) : null; } } else {//se nao tem múltiplas respostas const n_sol = pergunta["n"]; const d_sol = pergunta["d"]; if(n_sol == n_jogador && d_sol == d_jogador) { som_ativado_pf? som_acerto_pf.play(): null; apresentar_resultado("Correto!"); respondidas_certas_pf.push(pergunta); const x = perguntas_pf.indexOf(pergunta); const y = respondidas_erradas_pf.indexOf(pergunta); x !== -1 ? perguntas_pf.splice(x, 1) : null; y !== -1 ? respondidas_erradas_pf.splice(y, 1) : null; } else { som_ativado_pf? som_erro_pf.play(): null; apresentar_resultado("Errado!"); const y = respondidas_erradas_pf.indexOf(pergunta); y == -1 ? respondidas_erradas_pf.push(pergunta): null; const x = perguntas_pf.indexOf(pergunta); x !== -1 ? perguntas_pf.splice(x, 1) : null; } } } else {//se nao é fracao const resp_jogador = deixarSoNumerosVirgula_pf(document.querySelector(".el_resp_pf").textContent); const sol = pergunta["r"]; if(sol == resp_jogador) { som_ativado_pf? som_acerto_pf.play(): null; apresentar_resultado("Correto!"); respondidas_certas_pf.push(pergunta); const x = perguntas_pf.indexOf(pergunta); const y = respondidas_erradas_pf.indexOf(pergunta); x !== -1 ? perguntas_pf.splice(x, 1) : null; y !== -1 ? respondidas_erradas_pf.splice(y, 1) : null; } else { som_ativado_pf? som_erro_pf.play(): null; apresentar_resultado("Errado!"); const y = respondidas_erradas_pf.indexOf(pergunta); y == -1 ? respondidas_erradas_pf.push(pergunta): null; const x = perguntas_pf.indexOf(pergunta); x !== -1 ? perguntas_pf.splice(x, 1) : null; } } function apresentar_resultado(valor){ const acertou = valor == "Correto!"? true: false; const peca = pecas[jogadores_pf[vez_pf].id]; const classe_a_remover = "mostrar_face_"+dado_resultado_pf; divPergunta.innerHTML = `
${valor}
`; peca.classList.remove("pulsar_pf"); peca.style.cursor = "auto"; peca.removeEventListener("click", gerenciar_jogada_pf); setTimeout(() => { apagar_janela_de_jogadas_pf(); mover_peca(acertou); setTimeout(() => { dado_pf.classList.remove(classe_a_remover); divPergunta.remove(); }, 2000); }, 2000); } } function mover_peca(acertou) { if(acertou){ const peca = pecas[jogadores_pf[vez_pf].id]; let num_casa_destino = jogadores_pf[vez_pf].avancar_casas(dado_resultado_pf); num_casa_destino > 34? num_casa_destino = 34: null; let id_destino = "c_"+num_casa_destino+"_pf"; let casa_destino = document.getElementById(id_destino); let bonus; let passar_vez = false; const is_casa_surpresa = casa_destino.classList.toString().includes('cs'); animar_movimento_pf(peca, casa_destino, num_casa_destino, is_casa_surpresa, passar_vez, bonus); if(is_casa_surpresa){ let classes = casa_destino.classList; for(i=0; i < classes.length; i++){ const classe = classes[i]; if(classe.startsWith("cs")){ bonus = parseInt(classe.split("_")[1]); console.log("Bonus: "+bonus); let novo_num_destino = jogadores_pf[vez_pf].avancar_casas(bonus); novo_num_destino > 34? novo_num_destino = 34: null; const novo_id_destino = "c_"+novo_num_destino+"_pf"; const novo_destino = document.getElementById(novo_id_destino); passar_vez = true; setTimeout(() => { mostrar_casa_surpresa_pf(bonus); animar_movimento_pf(peca, novo_destino, novo_num_destino, is_casa_surpresa, passar_vez, bonus); }, duracao_movimento); break; } } } } else { if(vez_pf == jogadores_pf.length - 1){ vez_pf = 0; ativar_vez(); } else { vez_pf++; ativar_vez(); } } } function mostrar_casa_surpresa_pf(bonus) { // Criar a div bonus_pf com o valor do bônus const divBonus = document.createElement('div'); divBonus.classList.add('bonus_pf'); divBonus.textContent = bonus; divBonus.style.cssText = "z-index: 90; border-radius: 5px; box-sizing: border-box; box-shadow: 0 6px 15px #444; padding: 10px; text-shadow: 0 6px 15px #222; color: #fff; font-size: 100px;"; if(bonus > 0){ divBonus.style.backgroundColor = "#22b902"; const txt = "+"+bonus; divBonus.textContent = txt; } else {divBonus.style.backgroundColor = "#ff2b2b"; som_ativado_pf? som_erro_pf.play(): null;} // Definir a posição fixed e centralizar a div bonus_pf divBonus.style.position = 'fixed'; divBonus.style.top = '55%'; divBonus.style.left = '50%'; divBonus.style.transform = 'translate(-50%, -50%)'; // Adicionar a div bonus_pf ao container_jogo_pf const containerJogo = document.querySelector('.container_jogo_pf'); containerJogo.appendChild(divBonus); // Animar a div bonus_pf let tamanhoFinal = parseInt(getComputedStyle(divBonus).fontSize) * 2; let duracao = 2500; divBonus.animate([ { transform: 'translate(-50%, -50%)', opacity: 1 }, { transform: `translate(-50%, -50%) translateY(-${tamanhoFinal}px)`, opacity: 0 } ], { duration: duracao, easing: 'ease-in-out' }); // Tocar som com base no valor do bônus if (bonus > 0) { // Tocar som de sucesso som_ativado_pf? som_acerto_pf.play(): null; } else { // Tocar som de erro som_ativado_pf? som_erro_pf.play(): null; } //Remover a div bonus_pf após a conclusão da animação setTimeout(function() { divBonus.remove(); }, duracao); } function sortearDado_pf(){ const IniTop = dado_pf.offsetTop; const PosTop = Math.floor(Math.random() * (80 - 20 + 1)) + 20; const IniLeft = dado_pf.offsetLeft; const PosLeft = Math.floor(Math.random() * (90 - 5 + 1)) + 5; dado_pf.style.cursor = "grabbing"; const numero_sorteado = Math.floor(Math.random() * 6) + 1; console.log("Numero Sorteado: "+numero_sorteado); let face_sorteada = "mostrar_face_"+numero_sorteado; face_atual_pf? dado_pf.classList.remove(face_atual_pf):null; dado_pf.classList.add(face_sorteada); face_atual_pf = face_sorteada; setTimeout(() => { dado_pf.style.cursor = "grab"; }, 500); let duracao = 1000; function moverdado_pf(tempoAtual) { let tempoDecorrido = tempoAtual - tempoInicio; // Tempo decorrido desde o início da animação let PosicaoTopAtual = IniTop + ((PosTop - IniTop) * tempoDecorrido / duracao); dado_pf.style.top = PosicaoTopAtual + 'px'; let PosicaoLeftAtual = IniLeft + ((PosLeft - IniLeft) * tempoDecorrido / duracao); dado_pf.style.left = PosicaoLeftAtual + 'px'; if (tempoDecorrido < duracao) { requestAnimationFrame(moverdado_pf); } } let tempoInicio = null; function iniciarAnimacao(tempoAtual) { if (!tempoInicio) tempoInicio = tempoAtual; // Armazene o tempo inicial apenas na primeira chamada moverdado_pf(tempoAtual); } if(num_sorteado_anterior_pf !== numero_sorteado) { requestAnimationFrame(iniciarAnimacao); num_sorteado_anterior_pf = numero_sorteado; } else { num_sorteado_anterior_pf = numero_sorteado; } som_ativado_pf? som_dado_pf.play(): null; return numero_sorteado; } const dado_8_pf = document.querySelector('.dado_8_pf'); const dado_8_pfFaces = document.querySelectorAll('.dado_8_pf-face'); let face_atual_8_pf; let num_sorteado_anterior_8_pf; let numeros_a_sortear_8_pf = [1,2,3,4,5,6,7,8]; function sortearDado_8_pf(){ const IniTop = dado_8_pf.offsetTop; const PosTop = Math.floor(Math.random() * (80 - 20 + 1)) + 20; const IniLeft = dado_8_pf.offsetLeft; const PosLeft = Math.floor(Math.random() * (90 - 5 + 1)) + 5; dado_8_pf.style.cursor = "grabbing"; let numero_sorteado; let indice = Math.floor(Math.random() * (numeros_a_sortear_8_pf.length)); if(numeros_a_sortear_8_pf.length > 0){ numero_sorteado = numeros_a_sortear_8_pf[indice]; numeros_a_sortear_8_pf.splice(indice,1); console.log("Número Sorteado: "+numero_sorteado); } else {return} let face_sorteada = "mostrar_face_"+numero_sorteado+"_d8"; face_atual_8_pf? dado_8_pf.classList.remove(face_atual_8_pf):null; dado_8_pf.classList.add(face_sorteada); face_atual_8_pf = face_sorteada; setTimeout(() => { dado_8_pf.style.cursor = "grab"; }, 500); let duracao = 1000; function moverdado_8_pf(tempoAtual) { let tempoDecorrido = tempoAtual - tempoInicio; // Tempo decorrido desde o início da animação let PosicaoTopAtual = IniTop + ((PosTop - IniTop) * tempoDecorrido / duracao); dado_8_pf.style.top = PosicaoTopAtual + 'px'; let PosicaoLeftAtual = IniLeft + ((PosLeft - IniLeft) * tempoDecorrido / duracao); dado_8_pf.style.left = PosicaoLeftAtual + 'px'; if (tempoDecorrido < duracao) { requestAnimationFrame(moverdado_8_pf); } } let tempoInicio = null; function iniciarAnimacao(tempoAtual) { if (!tempoInicio) tempoInicio = tempoAtual; // Armazene o tempo inicial apenas na primeira chamada moverdado_8_pf(tempoAtual); } if(num_sorteado_anterior_8_pf !== numero_sorteado) { requestAnimationFrame(iniciarAnimacao); num_sorteado_anterior_8_pf = numero_sorteado; } else { num_sorteado_anterior_8_pf = numero_sorteado; } som_ativado_pf? som_dado_pf.play(): null; return numero_sorteado; } function removerInstanciasJogadorPF() {//zera tb o array jogadores_pf jogadores_pf.forEach(function(instancia) { delete instancia.nome; delete instancia.casa; delete instancia.id; delete instancia.avancar_casas; }); JogadorPF.id = 0; jogadores_pf.length = 0; } function animar_movimento_pf(peca, destino, num_destino, casa_surpresa, passar_vez, bonus) { const easeInOut = "cubic-bezier(0.42, 0, 0.58, 1)"; // Função de easing const pecaClone = peca.cloneNode(true); // Clone da peça para a animação const pecaPosicaoOriginal = peca.getBoundingClientRect(); // Posição original da peça // Configuração de estilos para a animação peca.style.opacity = "0"; // Oculta a peça original durante a animação pecaClone.style.transform = "scale(4)"; // Define a escala da peça para 4 // Adiciona a peça clonada antes da peça original peca.parentNode.insertBefore(pecaClone, peca); // Calcula a posição do destino const destinoPosicao = destino.getBoundingClientRect(); const destinoE = destinoPosicao.left + destinoPosicao.width/2; const destinoTop = destino.offsetTop; // Define uma função para executar a animação requestAnimationFrame(() => { pecaClone.style.transition = `transform ${duracao_movimento}ms ${easeInOut}`; pecaClone.style.transform = `translate(${destinoE - pecaPosicaoOriginal.left}px, ${destinoPosicao.top - pecaPosicaoOriginal.top}px)`; }); //Som do Movimento if(!bonus){ som_ativado_pf? som_movimento_pf.play(): null; } else if (bonus && bonus > 0){ som_ativado_pf? som_movimento_pf.play(): null; } else { som_ativado_pf? som_voltar_pf.play(): null; } // Atualiza o scroll da tela de forma suave const posicao_scroll = parseInt(destinoTop) - (parseInt(window.innerHeight / 2)); window.scrollTo({ top: posicao_scroll, behavior: "smooth" }); // Define um timeout para remover a peça original e colocar a clonada dentro do destino e verificar se chegou ao final setTimeout(() => { if(num_destino == 34){ const concluinte = jogadores_pf[vez_pf].nome; const peca = pecas[jogadores_pf[vez_pf].id]; const sua_peca = peca.cloneNode(true); const jogadorRemovido = jogadores_pf.splice(vez_pf, 1)[0]; chegada_pf.push(jogadorRemovido); mostrar_tela_chegada_pf(concluinte, sua_peca); } else if(!casa_surpresa || (casa_surpresa && passar_vez)){ if(vez_pf == jogadores_pf.length - 1){ vez_pf = 0; ativar_vez(); } else { vez_pf++; ativar_vez();} } peca.parentNode.removeChild(pecaClone); destino.appendChild(peca); peca.style.opacity = "1"; // Mostra a peça original após a animação pecaClone.style.transform = "none"; // Anula o transform scale }, duracao_movimento); } function mostrar_tela_chegada_pf(concluinte, sua_peca){ const container = document.createElement("div"); container.style.cssText = `position: fixed; margin: 20px auto 35px auto; box-sizing: border-box; padding: 35px; min-width: 275px; width: 91%; max-height: 90vh; top: 50%; left: 50%; transform: translate(-50%, -50%); background: linear-gradient(45deg, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%), linear-gradient(-45deg, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%); background-size: 20px 20px; background-color: #999; color: #fff; box-shadow: 2px 2px 5px #777; z-index: 50; overflow: auto; border-radius: 10px; transition: opacity 0.7s ease-in-out;`; const divInterna = document.createElement("div"); divInterna.style.cssText = "margin: 0 auto; color: #fff; background-color: #777; position: relative; border-radius: 10px; box-sizing: border-box; height: 100%; width: 100%; text-align: center; display: flex; flex-direction: column; align-items: center; justify-content: space-between;" const titulo = document.createElement("h3"); titulo.textContent = "Chegada"; sua_peca.style.color = "#fff"; sua_peca.style.opacity = "1"; sua_peca.style.transform = "scale(1.8)"; const txt = document.createElement("span"); txt.textContent = `Parabéns, ${concluinte}! Você conseguiu!`; txt.style.margin = "15px auto 0 auto"; const bt = document.createElement("button"); bt.textContent = "Ok"; bt.classList.add("bt_responder_pf"); bt.style.cssText = "margin: 25px 0; width: 50%; box-shadow: 1px 1px 2px #fff;"; bt.onclick = function() { container.remove(); if(jogadores_pf.length == 1){ mostrar_tela_final(); } else { vez_pf == jogadores_pf.length? vez_pf = 0: null; ativar_vez(); } } divInterna.appendChild(titulo); divInterna.appendChild(sua_peca); divInterna.appendChild(txt); divInterna.appendChild(bt); container.appendChild(divInterna); som_ativado_pf? som_chegada_pf.play(): null; const container_jogo = document.querySelector(".container_jogo_pf"); container_jogo.appendChild(container); } function mostrar_tela_final(){ console.log("O jogo acabou!"); vez_el_pf.textContent = "O jogo terminou!"; let ordem_chegada = "Ordem de chegada: "; for(i=0; i < chegada_pf.length; i++){ if(chegada_pf.length == 1){ ordem_chegada += i+1+"° "+chegada_pf[i].nome+"."; } else if(chegada_pf.length > 1 && i != chegada_pf.length - 1) { ordem_chegada += i+1+"° "+chegada_pf[i].nome+"; "; } else { ordem_chegada += i+1+"° "+chegada_pf[i].nome+"."; } } const container = document.createElement("div"); container.style.cssText = `position: fixed; display: flex; flex-direction: column; align-items: center; justify-content: center; margin: 20px auto 35px auto; box-sizing: border-box; padding: 15px; min-width: 275px; width: 91%; max-height: 90vh; top: 50%; left: 50%; transform: translate(-50%, -50%); background: rgb(177,206,52); background: linear-gradient(0deg, rgba(177,206,52,1) 1%, rgba(255,108,97,1) 50%); color: #fff; box-shadow: 6px 6px 7px #777; z-index: 50; overflow: auto; border-radius: 10px; opacity: 1; transition: opacity 0.7s ease-in-out;`; const titulo = document.createElement("h3"); titulo.textContent = "Fim de Jogo"; const div_1 = document.createElement("div"); div_1.textContent = ordem_chegada; div_1.style.margin = "15px auto"; const div_2 = document.createElement("div"); div_2.textContent = jogadores_pf[0].nome+", não desista! Na próxima vez você terá mais sorte."; div_2.style.margin = "15px auto"; const bt = document.createElement("button"); bt.textContent = "Ok"; bt.classList.add("bt_responder_pf"); bt.style.cssText = "margin: 25px 0; width: 50%; box-shadow: 1px 1px 2px #fff; background-color: rgb(46 211 124);"; bt.onmouseenter = function() { this.style.backgroundColor = '#209557'; }; bt.onmouseleave = function() { this.style.backgroundColor = "rgb(46 211 124)"; }; bt.onclick = function() { container.remove(); } container.appendChild(titulo); container.appendChild(div_1); container.appendChild(div_2); container.appendChild(bt); const container_jogo = document.querySelector(".container_jogo_pf"); container_jogo.appendChild(container); som_ativado_pf? som_finale_pf.play(): null; } // ++++++++++++++++++++++++++++++++++++++ FIM Jogo Percurso das Frações +++++++++++++++++++++++++++++++++++++++++ /********************************************* Jogo Card das Frações *******************************************/ const botao = document.querySelector(".botao-jogo-cf"); const container = document.getElementById("container_jogo_cf"); let som_ativado_cf = true; const cores_overlay_cf = ["aliceblue", "#ea3546", "#4ddb25", "#dbad25"]; let ultima_cor_overlay_cf = ""; let jogadores_cf = [ {"nome": "Grupo 1", "pontos":0}, {"nome": "Grupo 2", "pontos":0} ] let questoes_cf = [ { "enunciado":"Professora Helena comprou determinada quantidade de pizzas para 3 turmas. Sabendo que a turma A comeu \\(\\frac{6}{16}\\)(seis dezesseis avos) do total de pedaços, a turma B comeu \\(\\frac{2}{8}\\)(dois oitavos) e a turma C comeu \\(\\frac{5}{12}\\)(cinco doze avos), qual fração representa a turma que comeu mais?", "fracao":true, "ordenacao":false, "n": ["5"], "d":["12"] }, { "enunciado":"Comprei uma barra de chocolate que possui vinte pedaços (quadradinhos) de mesmo tamanho. No primeiro dia comi \\(\\frac{1}{5}\\)(um quinto) da barra. Já no segundo dia, comi o equivalente a \\(\\frac{4}{10}\\)(quatro décimos) da barra inicial. Em qual dia eu comi mais chocolate?", "fracao":false, "r": ["Segundo dia", "segundo", "2", "2°"] }, { "enunciado":"A fração \\(\\frac{2}{5}\\)(dois quintos) pode ser representada por qual ponto na reta numérica?", "imagem":"r1.jpg", "fracao":false, "r": ["Ponto B", "B"] }, { "enunciado":"Indique quais pontos podem representar as frações \\(\\frac{7}{8}\\)(sete oitavos), \\(\\frac{35}{7}\\) e \\(\\frac{16}{6}\\)(dezesseis sextos) na reta numérica, respectivamente. Separe os pontos com o uso da vírgula", "imagem":"r3.jpg", "fracao":false, "r": ["B, D, E"] }, { "enunciado":"Elisa possui uma coleção de 90 carrinhos colecionáveis que são réplicas de diversas marcas, sendo 12 da Volkswagen, 27 da Chevrolet, 16 da Ford e 35 Fiat. Quais frações representam a razão entre os carrinhos da marca Fiat e Chevrolet, e da marca Ford e Volkswagen.", "fracao":true, "ordenacao":true, "n": ["35", "4"], "d":["27", "3"] }, { "enunciado":"A fração \\(\\frac{17}{9}\\)(dezessete nonos) pode ser localizada entre quais pontos na reta numérica? Separe os pontos com a letra \"e\".", "imagem":"r2.jpg", "fracao":false, "r": ["Entre os pontos B e C.", "B e C", "B e C"] }, { "enunciado":"Yara comprou um pote de sorvete que tinha as seguintes dimensões: 22 cm de comprimento, 8 cm de largura e 20 cm de altura. Beatriz também queria comprar um pote de sorvete, porém, não tinha dinheiro suficiente e então resolveu comprar um que tinha \\(\\frac{25}{88}\\)(vinte e cinco oitenta e oito avos) do volume do pote de Yara. Quantos mililitros têm o pote de Beatriz? Use somente números e vírgulas.", "fracao":false, "r": ["1.000 ml", "1000"] }, { "enunciado":"Ana quer comprar um celular no Paraguai e que custa 2.500,00 reais; ela já tem 2/5 do valor. Quantos reais faltam para ela conseguir comprar o celular? Use somente números e vírgulas.", "fracao":false, "r": ["R$ 1.500,00", "1500", "1500,00"] }, { "enunciado":"Sabe-se que uma caixa d'água, inicialmente, estava com \\(\\frac{1}{4}\\)(um quarto) da sua capacidade e foi completada com mais \\(\\frac{2}{5}\\)(dois quintos) da sua capacidade. Responda: a) Qual é a fração que representa a quantidade de água na caixa d'água? b) Qual é a fração que representa a parte vazia da caixa d'água? Responda em ordem.", "fracao":true, "ordenacao":true, "n": ["13", "7"], "d":["20", "20"] }, { "enunciado":"Calcule \\(\\frac{3}{8}\\)(três oitavos) mais \\(\\frac{75}{3}\\)(setenta e cinco terços). Responda em forma de fração irredutível.", "fracao":true, "ordenacao":false, "n": ["203"], "d":["8"] }, { "enunciado":"Calcule \\(\\frac{3}{4}\\)(três quartos) mais \\(\\frac{2}{8}\\)(dois oitavos). Responda em forma de fração irredutível.", "fracao":true, "ordenacao":false, "n": ["1"], "d":["1"] }, { "enunciado":"Calcule \\(\\frac{3}{8}\\)(três oitavos) menos \\(\\frac{4}{16}\\)(quatro dezesseis avos). Responda em forma de fração irredutível.", "fracao":true, "ordenacao":false, "n": ["1"], "d":["8"] }, { "enunciado":"Obtenha o resultado, em forma de fração irredutível, da operação \\(\\frac{3}{2} - \\frac{1}{4}\\)(três meios menos um quarto).", "fracao":true, "ordenacao":false, "n": ["5"], "d":["4"] }, { "enunciado":"Obtenha o resultado, em forma de fração irredutível, da operação \\(\\frac{3}{2} + \\frac{1}{4}\\)(três meios mais um quarto).", "fracao":true, "ordenacao":false, "n": ["7"], "d":["4"] }, { "enunciado":"Caio, Raquel e Douglas estavam apostando uma corrida, na qual eles deveriam correr o máximo possível dentro de um determinado tempo estipulado por eles. Quando acabou o tempo, Caio, Raquel e Douglas verificaram a distância que cada um tinha percorrido que era, respectivamente, \\(\\frac{6}{24}\\)(seis vinte e quatro avos), \\(\\frac{9}{24}\\)(nove vinte e quatro avos) e \\(\\frac{4}{30}\\)(quatro trinta avos) do percurso em linha reta. Qual deles ficou em último lugar? Responda com o nome do corredor.", "fracao":false, "r": ["Douglas"] }, { "enunciado":"A mãe de Lucas e Beatriz comprou uma pizza de 8 pedaços e resolveu dividi-la entre os três da seguinte maneira: Beatriz ficaria com \\(\\frac{1}{2}\\)(um meio) da pizza, Lucas com \\(\\frac{1}{8}\\)(um oitavo) e sua mãe com \\(\\frac{6}{16}\\)(seis dezesseis avos). Qual deles ficou com mais pedaços? Responda com o nome.", "fracao":false, "r": ["Beatriz"] }, { "enunciado":"Luana comprou 9 balões vermelhos e 15 amarelos. Qual é a fração que representa a razão entre o número de balões amarelos e vermelhos?", "fracao":true, "ordenacao":false, "n": ["5"], "d":["3"] }, { "enunciado":"Ao dividir um bolo, em partes iguais, para oito pessoas, a razão estabelecida a cada pedaço do bolo será?", "fracao":true, "ordenacao":false, "n": ["1"], "d":["8"] }, { "enunciado":"Considere que uma pizza tenha 4 sabores, possua ao total 12 pedaços do mesmo tamanho e que cada sabor possua a mesma quantidade de pedaços. Se uma pessoa comer um pedaço de cada sabor, qual será a razão do que ela comeu em relação ao total de pizza?", "fracao":true, "ordenacao":false, "n": ["1"], "d":["3"] }, { "enunciado":"Calcule \\(\\frac{2}{3}(\\frac{16}{7} + \\frac{\\frac{5}{9}}{\\frac{4}{8}})\\). Responda na forma de fração irredutível.", "fracao":true, "ordenacao":false, "n": ["428"], "d":["189"] }, { "enunciado":"Calcule \\( \\left( \\frac{9}{5} - \\frac{3}{16} \\right) \\div \\frac{5}{4} \\times \\frac{1}{3}\\). Responda na forma de fração irredutível.", "fracao":true, "ordenacao":false, "n": ["43"], "d":["100"] }, { "enunciado":"Calcule \\( \\frac{8}{9} \\times \\left( \\frac{9}{8} \\times \\frac{1}{5} \\right)\\). Responda na forma de fração irredutível.", "fracao":true, "ordenacao":false, "n": ["1"], "d":["5"] }, { "enunciado":"Calcule \\(\\frac{1}{5}(\\frac{0}{3} + \\frac{5}{4})\\). Responda na forma de fração irredutível.", "fracao":true, "ordenacao":false, "n": ["1"], "d":["4"] }, { "enunciado":"Calcule \\(\\frac{55}{9} + \\frac{8}{9}\\) (cinquenta e cinco nonos mais oito nonos). Responda na forma de fração irredutível.", "fracao":true, "ordenacao":false, "n": ["7"], "d":["1"] }, { "enunciado":"Calcule \\(\\frac{8}{33} \\times \\left( \\frac{66}{4} + \\frac{3}{4} \\right)\\). Responda na forma de fração irredutível.", "fracao":true, "ordenacao":false, "n": ["46"], "d":["11"] }, { "enunciado":"Calcule \\(\\frac{2}{3} \\times \\left( \\frac{14}{8} \\div \\frac{3}{2} \\right)\\). Responda na forma de fração irredutível.", "fracao":true, "ordenacao":false, "n": ["7"], "d":["9"] }, { "enunciado":"Um comerciante oferece 7% de desconto no pagamento à vista de um determinado produto. Sabe-se que esse produto custa R$ 120,00 para pagamento a prazo. No pagamento à vista, qual é o valor pago pelo produto? Responda somente com números e vírgulas.", "fracao":false, "r": ["R$ 111,60", "111,60", "111,6"] }, { "enunciado":"Sabrina entrou em uma loja que anunciava a seguinte promoção: “Não perca essa chance! Calças por apenas \\(\\text{R}\\$ \\thinspace 125,00\\) e na compra de duas pague apenas \\(\\text{R}\\$ \\thinspace 95,00\\) em cada!”. Qual porcentagem de desconto Sabrina ganhará no valor final caso compre duas calças? Responda na forma de fração irredutível.", "fracao":false, "ordenacao":false, "r": ["24%"] }, { "enunciado":"Escreva três formas fracionárias que podem representar 88%.", "fracao":true, "ordenacao":false, "n": ["88", "44", "22"], "d":["100", "50", "25"] }, { "enunciado":"Qual é a fração geratriz da dizima periódica 0,4444...?", "fracao":true, "ordenacao":false, "n": ["4"], "d":["9"] }, { "enunciado":"Qual é a fração geratriz da dizima periódica 0,8888...?", "fracao":true, "ordenacao":false, "n": ["8"], "d":["9"] }, { "enunciado":"Qual é a fração geratriz da dízima periódica 2,6666...?", "fracao":true, "ordenacao":false, "n": ["8"], "d":["3"] } ]; let erradas_cf = []; let corretas_cf = []; let i_cf = 0; let vez_cf = 0; botao.addEventListener("click", function() { if (botao.innerText === "Abrir Jogo Card das Frações") {//Iniciando o jogo botao.innerText = "Fechar Jogo Card das Frações"; botao.classList.add("btn_ativo_cf"); container.style.display = "block"; mostrar_tela_inicial_cf(); vez_cf = 0; } else {//Encerrando o jogo i_cf = 0; ultima_cor_overlay_cf = ""; botao.innerText = "Abrir Jogo Card das Frações"; botao.classList.remove("btn_ativo_cf"); container.style.display = "none"; jogadores_cf[0].nome = "Grupo 1"; jogadores_cf[0].pontos = 0; jogadores_cf[1].nome = "Grupo 2"; jogadores_cf[1].pontos = 0; let combinado = questoes_cf.concat(erradas_cf, corretas_cf); questoes_cf.splice(0, questoes_cf.length, ...combinado); combinado.length = 0; erradas_cf.length = 0; corretas_cf.length = 0; } }); function toggle_som_cf() { const som_el = document.querySelector(".som_el_cf"); if(som_ativado_cf){ som_el.classList.toggle("som_desativado_cf"); som_ativado_cf = false; } else { som_el.classList.toggle("som_desativado_cf"); som_ativado_cf = true; } } function mostrar_tela_inicial_cf(){ function sanitizar(txt){ const regex = /[^\wÀ-ÿ,\s]/g; const textoSanitizado = txt.replace(regex, ''); return textoSanitizado; } const container_jogo = document.getElementById("container_jogo_cf"); const trilha = document.createElement("div"); trilha.classList.add("trilha_dos_cards_cf"); container_jogo.replaceChildren(trilha); const container = document.createElement("div"); const titulo = document.createElement("h3"); titulo.textContent = "Escolha o nome dos grupos"; container.classList.add("container_tela_inicial_cf"); const grupo_1 = document.createElement("div"); const grupo_2 = document.createElement("div"); grupo_1.classList.add("grupo_cf"); grupo_2.classList.add("grupo_cf"); const div_1 = document.createElement("div"); const div_2 = document.createElement("div"); const input_1 = document.createElement("input"); const input_2 = document.createElement("input"); input_1.type = "text"; input_2.type = "text"; input_1.placeholder = "Preenchimento opcional" input_2.placeholder = "Preenchimento opcional" div_1.textContent = "Grupo 1"; div_2.textContent = "Grupo 2"; const bt = document.createElement("button"); bt.classList.add("bt_iniciar_cf"); bt.textContent = "iniciar" bt.onclick = function (){ questoes_cf = shuffleArray(questoes_cf); let nome_1 = sanitizar(input_1.value); let nome_2 = sanitizar(input_2.value); nome_1? jogadores_cf[0].nome = nome_1: null; nome_2? jogadores_cf[1].nome = nome_2: null; const barra = montar_barra_superior(jogadores_cf[0].nome, jogadores_cf[1].nome); const barra_inferior = montar_barra_inferior(); container.remove(); container_jogo.prepend(barra); container_jogo.appendChild(barra_inferior); const card_conteudo = montar_pergunta_cf(); mostrar_card_cf(card_conteudo[0].innerHTML, card_conteudo[1].innerHTML); MathJax.typesetClear(); MathJax.typeset(); gerenciar_vez_visual_cf(); } grupo_1.appendChild(div_1); grupo_1.appendChild(input_1); grupo_2.appendChild(div_2); grupo_2.appendChild(input_2); container.appendChild(titulo); container.appendChild(grupo_1); container.appendChild(grupo_2); container.appendChild(bt); container_jogo.prepend(container); setTimeout(() => { container.style.opacity = "1"; }, 150); } function montar_barra_superior(nome_1, nome_2){ const barra = document.createElement("div"); barra.classList.add("barra_superior_cf"); barra.style.cssText = "margin: 10px 0; padding: 2px 10px; width: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center;"; const div_1 = document.createElement("div"); const div_2 = document.createElement("div"); div_1.style.cssText = "gap: 15px; color: #999; margin: 3px 0; display: flex; align-items: center; justify-content: center;"; div_2.style.cssText = "gap: 15px; color: #3366ff; margin: 13px 0 2px 0; display: flex; align-items: center; justify-content: center;"; const span_1 = document.createElement("span"); const span_2 = document.createElement("span"); const span_1_nome = document.createElement("span"); const span_2_nome = document.createElement("span"); span_1.classList.add("pts_cf"); span_2.classList.add("pts_cf"); span_1.style.cssText = "color: #ff335a; font-weight: bold;" span_2.style.cssText = "color: #ff335a; font-weight: bold;" span_1.textContent = "0"; span_2.textContent = "0"; const div_1_ = document.createElement("div"); const div_2_ = document.createElement("div"); div_1_.classList.add("placar_cf"); div_2_.classList.add("placar_cf"); span_1_nome.textContent = nome_1+" → "; span_2_nome.textContent = nome_2+" → "; div_1_.appendChild(span_1_nome); div_2_.appendChild(span_2_nome); div_1_.appendChild(span_1); div_2_.appendChild(span_2); div_1.appendChild(div_1_); div_1.appendChild(div_2_); const bt_som = document.createElement("button"); bt_som.title = som_ativado_cf == true? "Desativar som": "Ativar som"; bt_som.classList.add("som_el_cf"); bt_som.innerHTML = "♫"; bt_som.onclick = function(){ toggle_som_cf(); bt_som.title = som_ativado_cf == true? "Desativar som": "Ativar som"; } div_2.appendChild(bt_som); const bt_falar = document.createElement("button"); bt_falar.title = "Ouvir card" bt_falar.classList.add("falar_el_cf"); bt_falar.innerHTML = "🔊"; bt_falar.onclick = function(){falar_cf();} div_2.appendChild(bt_falar); barra.appendChild(div_1); barra.appendChild(div_2); return barra; } function montar_barra_inferior() { const barra = document.createElement("div"); barra.classList.add("barra_inferior_cf"); barra.style.cssText = "margin: 10px 0 60px 0; padding: 2px 10px; width: 100%; display: flex; align-items: center; justify-content: flex-start;"; const div_1 = document.createElement("div"); div_1.classList.add("qtde_cards_cf"); div_1.style.cssText = "font-size: 13px; color: #999; display: flex; align-items: center; justify-content: center; width: 50px;"; div_1.textContent = `${i_cf+1}/${questoes_cf.length+erradas_cf.length}`; const div_2 = document.createElement("div"); const bt_corrigir = document.createElement("button"); const bt_pular = document.createElement("button"); bt_corrigir.classList.add("bt_corrigir_cf"); bt_corrigir.textContent = "➔"; bt_corrigir.title = "Girar e corrigir card"; bt_corrigir.onclick = function(){corrigir_btn_onclick_cf();} bt_pular.classList.add("bt_pular_cf"); bt_pular.textContent = "✖"; bt_pular.title = "Pular card"; bt_pular.onclick = function(){pular_btn_onclick_cf()} div_2.style.cssText = "margin-left: -50px; gap: 15px; font-size: 13px; color: #999; display: flex; align-items: center; justify-content: center; width: 100%;"; div_2.appendChild(bt_pular); div_2.appendChild(bt_corrigir); barra.appendChild(div_1); barra.appendChild(div_2); return barra; } function montar_pergunta_cf(){ const questao = questoes_cf[i_cf]; const DivEnunciado = document.createElement("div"); DivEnunciado.classList.add("enunciado_cf"); const DivEspacoResposta = document.createElement("div"); DivEspacoResposta.classList.add("espaco_resposta_cf"); const DivResposta = document.createElement("div"); DivResposta.classList.add("resposta_cf"); DivEnunciado.innerHTML = questao.enunciado; const titulo = document.createElement("h3"); titulo.textContent = "Sua resposta:"; DivEspacoResposta.appendChild(titulo); DivEnunciado.style.cssText = "margin: 5px 0; width: 100%; box-sizing: border-box;"; DivEspacoResposta.style.cssText = "margin: 15px 0; width: 100%; display: flex; align-items: center; justify-content: center; box-sizing: border-box;"; DivResposta.style.cssText = "margin: 15px 0; width: 100%; display: flex; align-items: center; justify-content: center; box-sizing: border-box;"; if(questao.imagem && questao.imagem != ""){ const arquivo = "img/"+questao.imagem; const img = document.createElement("img"); img.src = arquivo; img.style.cssText = "width: 100%; height: auto; max-width: 500px; text-align: center; border-radius: 5px; margin: 10px auto; display: block;"; img.alt = "Uma reta numérica com pontos dispostos nela."; const pular_linha = document.createElement("br"); DivEnunciado.appendChild(pular_linha); DivEnunciado.appendChild(img); } const titulo_resposta = document.createElement("span"); titulo_resposta.textContent = "Resposta:"; DivResposta.appendChild(titulo_resposta); if(questao.fracao){ const qtde = questao.n.length; for(let i = 0; i < qtde; i++){ const frac = `

`; const div = document.createElement("div"); div.classList.add("fracao_cf"); div.innerHTML = frac; div.style.cssText = "display: flex; justify-content: center; align-items: center; flex-direction: column;"; DivEspacoResposta.appendChild(div); const virgula = i >= 0 && i != qtde-1 ? ", " : ""; const r = " "+questao.n[i]+"/"+questao.d[i]+" ("+questao.n[i]+" sobre "+questao.d[i]+")"+virgula; const span = document.createElement("span"); span.innerHTML = r; titulo_resposta.appendChild(span); } } else { const input = document.createElement("div"); input.classList.add("resposta_jogador_cf"); input.style.cssText = "background-color: #fff; margin-left: 15px; width: 130px; height: 40px; box-sizing: border-box; border: 1px solid #999; border-radius: 5px; display: flex; align-items: center; justify-content: center;"; input.contentEditable = "true"; DivEspacoResposta.appendChild(input); const r = " "+questao.r[0]; const span = document.createElement("span"); span.innerHTML = r; titulo_resposta.appendChild(span); } const div = document.createElement("div"); const div_2 = document.createElement("div"); div.appendChild(DivEnunciado); div.appendChild(DivEspacoResposta); div_2.appendChild(DivResposta); return [div, div_2]; } function pular_cf(){ erradas_cf.push(questoes_cf[i_cf]); questoes_cf.splice(i_cf,1); i_cf >= questoes_cf.length ? i_cf = 0 : null; vez_cf == 0? vez_cf = 1 : vez_cf = 0; gerenciar_vez_visual_cf(); } function pular_btn_onclick_cf(){ const barra_inferior = document.querySelector(".barra_inferior_cf"); const btns = barra_inferior.querySelectorAll("button"); const pular = document.getElementById("pular_cf"); btns[0].onclick = function(){} btns[0].classList.toggle("bt_desativado_cf"); btns[1].onclick = function(){} btns[1].classList.toggle("bt_desativado_cf"); pular_cf(); //Som de Pular som_ativado_cf? pular.play() : null; if(questoes_cf.length == 0){ questoes_cf = erradas_cf.slice(); erradas_cf.length = 0; } setTimeout(() => { const card_conteudo = montar_pergunta_cf(); mostrar_card_cf(card_conteudo[0].innerHTML, card_conteudo[1].innerHTML, "depois"); MathJax.typesetClear(); MathJax.typeset(); btns[0].onclick = function(){ pular_btn_onclick_cf()} btns[0].classList.toggle("bt_desativado_cf"); btns[1].onclick = function(){corrigir_btn_onclick_cf();} btns[1].classList.toggle("bt_desativado_cf"); }, 1000); } function corrigir_cf(){ const questao = questoes_cf[i_cf]; const div = document.querySelector(".espaco_resposta_cf"); if(questao.fracao){ const fracoes = document.querySelectorAll(".fracao_cf"); const numeradores_r = questao.n; const denominadores_r = questao.d; if(questao.ordenacao){ let acertos_multiplas_respostas = 0; for(let i = 0; i < fracoes.length; i++){ const numerador_jogador = fracoes[i].querySelector(".numerador_cf"); const denominador_jogador = fracoes[i].querySelector(".denominador_cf"); if(numeradores_r[i] == numerador_jogador.textContent && denominadores_r[i] == denominador_jogador.textContent){ acertos_multiplas_respostas++; if(i == fracoes.length-1){//verificando se acertou if(acertos_multiplas_respostas == fracoes.length){return true;} else {return false;} } } } //fecha for } else { if(numeradores_r.length > 1){ let acertos = 0; for(let i = 0; i < fracoes.length; i++){ const ns = fracoes[i].querySelector(".numerador_cf").textContent; const ds = fracoes[i].querySelector(".denominador_cf").textContent; if(numeradores_r.includes(ns)){ const index = numeradores_r.indexOf(ns); denominadores_r[index] == ds? acertos++ : null; } }//fecha for //verificando se acertou if(acertos == fracoes.length){return true;} else {return false;} } else { const n = fracoes[0].querySelector(".numerador_cf").textContent; const d = fracoes[0].querySelector(".denominador_cf").textContent; if(numeradores_r[0] == n && denominadores_r[0] == d){ //ACERTOU return true; } else { //ERROU return false; } } } //fecha if da verificacao se tem ordem para responder corretamente } else { let erros = 0; let gabarito = questao.r; let resposta = document.querySelector(".resposta_jogador_cf").textContent; resposta = resposta.replace(/\s/g, ""); resposta = resposta.toLocaleLowerCase(); for(i = 0; i < gabarito.length; i++){ let gab = gabarito[i].replace(/\s/g, ""); gab = gab.toLocaleLowerCase(); if(resposta == gab){ return true; } else { erros++; } if(erros == gabarito.length){ return false; } } } //fecha if da verificacao se é fracao }//fecha corrigir_cf function corrigir_btn_onclick_cf(){ const pontos_el = document.querySelectorAll(".pts_cf"); const verso = document.querySelector(".verso_cf"); const som = document.getElementById("virar_cf"); const acerto = document.getElementById("acerto_cf"); const erro = document.getElementById("erro_cf"); som_ativado_cf? som.play(): null; virar_card_cf(); const barra_inferior = document.querySelector(".barra_inferior_cf"); const btns = barra_inferior.querySelectorAll("button"); btns[0].onclick = function(){} btns[0].classList.toggle("bt_desativado_cf"); btns[1].onclick = function(){} btns[1].classList.toggle("bt_desativado_cf"); const acertou = corrigir_cf(); const jogador = jogadores_cf[vez_cf]; const div = document.createElement("div"); if(acertou){//ACERTO const tempo = setTimeout(() => { gerenciar_vez_visual_cf(); }, 3000); div.innerHTML = `CORRETO! ${jogador.nome}.`; jogadores_cf[vez_cf].pontos++; pontos_el[vez_cf].textContent = jogadores_cf[vez_cf].pontos; verso.appendChild(div); corretas_cf.push(questoes_cf[i_cf]); questoes_cf.splice(i_cf, 1); if(questoes_cf.length == 0 && erradas_cf.length > 0){ questoes_cf = erradas_cf.slice(); erradas_cf = []; i_cf = 0; setTimeout(() => { const card_conteudo = montar_pergunta_cf(); mostrar_card_cf(card_conteudo[0].innerHTML, card_conteudo[1].innerHTML, "depois"); MathJax.typesetClear(); MathJax.typeset(); btns[0].onclick = function(){ pular_btn_onclick_cf()} btns[0].classList.toggle("bt_desativado_cf"); btns[1].onclick = function(){corrigir_btn_onclick_cf();} btns[1].classList.toggle("bt_desativado_cf"); }, 3000); } else if(questoes_cf.length == 0 && erradas_cf.length == 0){ //fim do jogo clearTimeout(tempo); let msg; const fim = document.getElementById("fim_cf"); if(jogadores_cf[0].pontos == jogadores_cf[1].pontos){ msg = "Fim de jogo! "+jogadores_cf[0].nome+" e "+jogadores_cf[1].nome+" empataram!"; } else if(jogadores_cf[0].pontos > jogadores_cf[1].pontos){ msg = "Fim de jogo! "+jogadores_cf[0].nome+" ganhou!"; } else { msg = "Fim de jogo! "+jogadores_cf[1].nome+" ganhou!"; } verso.style.cssText = "display: flex; justify-content: center; align-items: center; flex-direction: row; gap: 10px"; verso.innerHTML = msg; setTimeout(() => { som_ativado_cf? fim.play(): null; }, 700); } else { i_cf >= questoes_cf.length-1? i_cf = 0 : i_cf++; setTimeout(() => { const card_conteudo = montar_pergunta_cf(); mostrar_card_cf(card_conteudo[0].innerHTML, card_conteudo[1].innerHTML, "depois"); MathJax.typesetClear(); MathJax.typeset(); btns[0].onclick = function(){ pular_btn_onclick_cf()} btns[0].classList.toggle("bt_desativado_cf"); btns[1].onclick = function(){corrigir_btn_onclick_cf();} btns[1].classList.toggle("bt_desativado_cf"); }, 3000); } setTimeout(() => { som_ativado_cf? acerto.play(): null; }, 700); } else {//ERRO div.innerHTML = `ERRADO! ${jogador.nome}.`; jogadores_cf[vez_cf].pontos--; pontos_el[vez_cf].textContent = jogadores_cf[vez_cf].pontos; verso.appendChild(div); erradas_cf.push(questoes_cf[i_cf]); questoes_cf.splice(i_cf, 1); if(questoes_cf.length == 0){ questoes_cf = erradas_cf.slice(); erradas_cf = []; i_cf = 0; } else { i_cf >= questoes_cf.length-1? i_cf = 0 : i_cf++; } setTimeout(() => { som_ativado_cf? erro.play(): null; }, 700); setTimeout(() => { const card_conteudo = montar_pergunta_cf(); mostrar_card_cf(card_conteudo[0].innerHTML, card_conteudo[1].innerHTML, "depois"); MathJax.typesetClear(); MathJax.typeset(); btns[0].onclick = function(){ pular_btn_onclick_cf()} btns[0].classList.toggle("bt_desativado_cf"); btns[1].onclick = function(){corrigir_btn_onclick_cf();} btns[1].classList.toggle("bt_desativado_cf"); gerenciar_vez_visual_cf(); }, 3000); } //Fim if se acertou ou errou vez_cf == 0? vez_cf = 1 : vez_cf = 0; } function falar_cf(){ const card = document.querySelector('.card_papel_cf'); const frente = document.querySelector('.frente_cf'); const verso = document.querySelector('.verso_cf'); let texto; card.classList.contains("virado_cf")? texto = verso.innerText: texto = frente.innerText // Verifica se a API de fala está disponível no navegador if ('speechSynthesis' in window) { let fala = new SpeechSynthesisUtterance(texto); console.log(texto) window.speechSynthesis.speak(fala); } else { console.log('API de fala não suportada neste navegador.'); } } function virar_card_cf(){ const card = document.querySelector('.card_papel_cf'); card.classList.toggle('virado_cf'); } function deslizandoParaEsquerda_cf(){ const card = document.querySelectorAll('.card_papel_cf'); const passar = document.getElementById("passar_cf"); som_ativado_cf? passar.play(): null; for(i = 0; i < card.length; i++){ card[i].classList.toggle('deslizarParaEsquerda_cf'); } } function deslizandoParaDireita_cf(){ const card = document.querySelectorAll('.card_papel_cf'); const passar = document.getElementById("passar_cf"); som_ativado_cf? passar.play(): null; for(i = 0; i < card.length; i++){ card[i].classList.toggle('deslizarParaDireita_cf'); } } function mostrar_card_cf(conteudo_frente, conteudo_verso, ordem){ const card_certos = corretas_cf.length + 1; const total_cards = questoes_cf.length+corretas_cf.length+erradas_cf.length; const numeros_cards = card_certos +"/"+ total_cards; const el_numeros_cards = document.querySelector(".qtde_cards_cf"); let indice_cor = Math.floor(Math.random() * cores_overlay_cf.length); cores_overlay_cf[indice_cor] == ultima_cor_overlay_cf? indice_cor++: null; indice_cor >= cores_overlay_cf.length? indice_cor = 0: null; const cor = cores_overlay_cf[indice_cor]; ultima_cor_overlay_cf = cor; const trilha = document.querySelector(".trilha_dos_cards_cf"); const card_papel = document.createElement("div"); card_papel.classList.add("card_papel_cf"); const card_interior = document.createElement("div"); card_interior.classList.add("card_interior_cf"); const container_linhas = document.createElement("div"); container_linhas.classList.add("container_linhas_cf"); const primeira_linha = document.createElement("div"); primeira_linha.classList.add("linha_cf"); primeira_linha.classList.add("primeira-linha_cf"); container_linhas.appendChild(primeira_linha); for(i = 0; i < 9; i++){ const linha = document.createElement("div"); linha.classList.add("linha_cf"); container_linhas.appendChild(linha); } const overlay = document.createElement("div"); overlay.classList.add("papel_overlay_cf"); overlay.style.backgroundColor = cor; container_linhas.appendChild(overlay); const frente = document.createElement("div"); frente.classList.add("frente_cf"); const verso = document.createElement("div"); verso.classList.add("verso_cf"); card_interior.appendChild(container_linhas); card_interior.appendChild(frente); card_interior.appendChild(verso); card_papel.appendChild(card_interior); conteudo_frente? frente.innerHTML = conteudo_frente: null; conteudo_verso? verso.innerHTML = conteudo_verso: null; if(ordem == "antes"){ trilha.prepend(card_papel); deslizandoParaDireita_cf(); el_numeros_cards.textContent = numeros_cards; setTimeout(() => { const arr = document.querySelectorAll(".card_papel_cf"); const index = arr.length - 1; arr[index].remove(); deslizandoParaDireita_cf(); }, 600); //ATENCAO o tempo tem que ser um pouco menor do que o da animacao de deslizar os cards } else if (ordem == "depois") { trilha.appendChild(card_papel); deslizandoParaEsquerda_cf(); el_numeros_cards.textContent = numeros_cards; setTimeout(() => { const arr = document.querySelectorAll(".card_papel_cf"); arr[0].remove(); deslizandoParaEsquerda_cf(); }, 600); //ATENCAO o tempo tem que ser um pouco menor do que o da animacao de deslizar os cards } else { trilha.prepend(card_papel); } } function gerenciar_vez_visual_cf(){//só gerencia a parte visual para os jogadores saberem de quem é a vez const placar = document.querySelectorAll('.placar_cf'); const limpar = vez_cf == 1? 0: 1; placar[vez_cf].style.borderBottom = "2px solid rgb(255, 51, 90)"; placar[limpar].style.borderBottom = "none"; } function shuffleArray(array) { for (let i = array.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [array[i], array[j]] = [array[j], array[i]]; } return array; } /********************************************* FIM Jogo Card das Frações *******************************************/