4132 lines
114 KiB
JavaScript
Executable File
4132 lines
114 KiB
JavaScript
Executable File
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<embaralhado_pdf_jm.length; i++) {
|
|
|
|
if (!interior_cartas_pdf_jm[i].classList.contains('finalizado_pdf_jm')) {
|
|
|
|
interior_cartas_pdf_jm[i].classList.add('disponivel_pdf_jm');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
function indisponibilizar_pdf_jm() {
|
|
|
|
for(i=0; i<embaralhado_pdf_jm.length; i++) {
|
|
|
|
interior_cartas_pdf_jm[i].classList.remove('disponivel_pdf_jm');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
// Função para pegar o número de jogadores selecionado
|
|
function pegarnumJogadores_pdf_jm() {
|
|
|
|
let numJogadores_pdf_jm = document.querySelector('input[name="numJogadores_pdf_jm"]:checked').value;
|
|
|
|
return parseInt(numJogadores_pdf_jm);
|
|
|
|
}
|
|
|
|
|
|
// Função para exibir ou ocultar o campo de nome do jogador 2, dependendo do número de jogadores selecionado
|
|
function atualizarCamponomeJogador2_pdf_jm() {
|
|
|
|
var numJogadores_pdf_jm = pegarnumJogadores_pdf_jm();
|
|
|
|
var nomeJogador2_pdf_jmContainer_pdf_jm = document.querySelector('#nomeJogador2_pdf_jmContainer_pdf_jm');
|
|
|
|
if (numJogadores_pdf_jm === 2) {
|
|
|
|
nomeJogador2_pdf_jmContainer_pdf_jm.style.display = 'block';
|
|
|
|
} else {
|
|
|
|
nomeJogador2_pdf_jmContainer_pdf_jm.style.display = 'none';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// Adiciona um listener para atualizar o campo de nome do jogador 2 sempre que o número de jogadores selecionado mudar
|
|
|
|
var radioInputs_pdf_jm = document.querySelectorAll('input[name="numJogadores_pdf_jm"]');
|
|
|
|
for (var i = 0; i < radioInputs_pdf_jm.length; i++) {
|
|
|
|
radioInputs_pdf_jm[i].addEventListener('change', atualizarCamponomeJogador2_pdf_jm);
|
|
|
|
}
|
|
|
|
|
|
function chacoalharCarta(carta_pdf_jm){
|
|
|
|
// Define a quantidade de deslocamento em pixels
|
|
let deslocamento_pdf_jm = 5;
|
|
|
|
// Define o intervalo de tempo entre as mudanças de posição em milissegundos
|
|
let intervalo_pdf_jm = 50;
|
|
|
|
// Define o número de vezes que a div deve ser cacoalhada
|
|
let numVezes_pdf_jm = 10;
|
|
|
|
// Define uma variável para controlar o número de vezes que a div já foi cacoalhada
|
|
let contador_pdf_jm = 0;
|
|
|
|
carta_pdf_jm.style.left = "0";
|
|
|
|
// Define uma função para mover a div
|
|
function moverDiv_pdf_jm() {
|
|
// Alterna a posição da div entre sua posição atual e uma posição deslocada
|
|
if (contador_pdf_jm % 2 === 0) {
|
|
carta_pdf_jm.style.left = (parseInt(carta_pdf_jm.style.left) - deslocamento_pdf_jm) + 'px';
|
|
} else {
|
|
carta_pdf_jm.style.left = (parseInt(carta_pdf_jm.style.left) + deslocamento_pdf_jm) + 'px';
|
|
}
|
|
|
|
// Incrementa o contador
|
|
contador_pdf_jm++;
|
|
|
|
// Se a div já foi cacoalhada o número de vezes desejado, para o intervalo
|
|
if (contador_pdf_jm >= 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, <strong> ${jg1_pdf_jm}!</strong> 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 = `<strong>${jg1_pdf_jm} ganhou!</strong> <br /><br />
|
|
${jg1_pdf_jm} = ${pontuacoes_pdf_jm["1"]} <strong>ponto(s)</strong> <br />
|
|
${jg2_pdf_jm} = ${pontuacoes_pdf_jm["-1"]} <strong>ponto(s)</strong>`;
|
|
|
|
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 = `<strong>O jogo empatou!</strong> <br /><br />
|
|
${jg1_pdf_jm} = ${pontuacoes_pdf_jm["1"]} <strong>ponto(s)</strong> <br />
|
|
${jg2_pdf_jm} = ${pontuacoes_pdf_jm["-1"]} <strong>ponto(s)</strong>`;
|
|
|
|
tela_final_pdf_jm.children[0].innerHTML = txt_pdf_jm;
|
|
|
|
tela_final_pdf_jm.style.display = "flex";
|
|
|
|
} else {
|
|
|
|
let txt_pdf_jm = `<strong>${jg2_pdf_jm} ganhou!</strong> <br /><br />
|
|
${jg1_pdf_jm} = ${pontuacoes_pdf_jm["1"]} <strong>ponto(s)</strong> <br />
|
|
${jg2_pdf_jm} = ${pontuacoes_pdf_jm["-1"]} <strong>ponto(s)</strong>`;
|
|
|
|
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<embaralhado_pdf_jm.length; i++){
|
|
|
|
let div = document.getElementById(i);
|
|
|
|
let interior = div.querySelector('.carta_interior_pdf_jm');
|
|
|
|
interior_cartas_pdf_jm.push(interior);
|
|
|
|
let enunciado = interior.querySelector('.verso_pdf_jm span');
|
|
|
|
enunciado.innerHTML = embaralhado_pdf_jm[i].enunciado;
|
|
|
|
interior.classList.add('disponivel_pdf_jm');
|
|
|
|
interior.classList.remove("finalizado_pdf_jm");
|
|
|
|
interior.classList.remove("virada_pdf_jm");
|
|
|
|
interior.querySelector('.verso_pdf_jm').style.backgroundColor = cor_padrao_pdf_jm;
|
|
|
|
//apagar x de erro e remover os event listeners
|
|
|
|
let xi_pdf_jm = interior.querySelector(".fechar_pdf_jm");
|
|
|
|
xi_pdf_jm.style.display == "block"? xi_pdf_jm.style.display = "none":null;
|
|
|
|
xi_pdf_jm.removeEventListener('click', listeners_pdf_jm[i]);
|
|
|
|
}
|
|
|
|
MathJax.typesetClear();
|
|
MathJax.typeset();
|
|
|
|
document.querySelector("#info_pdf_jm").style.visibility = "visible";
|
|
document.querySelector("#info_pdf_jm").style.opacity = "1";
|
|
document.querySelector("#container_cartas_pdf_jm").style.visibility = "visible";
|
|
document.querySelector("#container_cartas_pdf_jm").style.opacity = "1";
|
|
document.querySelector(".tela_inicial_pdf_jm").style.display = "none";
|
|
|
|
jg1_pdf_jm = document.querySelector('#nomeJogador1_pdf_jm').value.trim() || null;
|
|
jg2_pdf_jm = document.querySelector('#nomeJogador2_pdf_jm').value.trim() || null;
|
|
|
|
if(numJogadores_pdf_jm == 1){
|
|
|
|
jogo_pdf_jm = "com_1_jogador";
|
|
|
|
if(jg1_pdf_jm){
|
|
|
|
jg1_pdf_jm = sanitizeInput(jg1_pdf_jm);
|
|
nome_el_pdf_jm["1"].innerHTML = jg1_pdf_jm;
|
|
pontuacao_el_pdf_jm["1"].innerHTML = " = "+pontuacoes_pdf_jm["1"];
|
|
|
|
} else {
|
|
|
|
nome_el_pdf_jm["1"].innerHTML = "Pontuação";
|
|
pontuacao_el_pdf_jm["1"].innerHTML = " = "+pontuacoes_pdf_jm["1"];
|
|
jg1_pdf_jm = "Jogador";
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
jogo_pdf_jm = "com_2_jogadores";
|
|
|
|
if (jg1_pdf_jm && jg2_pdf_jm) {
|
|
|
|
jg1_pdf_jm = sanitizeInput(jg1_pdf_jm);
|
|
nome_el_pdf_jm["1"].innerHTML = jg1_pdf_jm;
|
|
jg2_pdf_jm = sanitizeInput(jg2_pdf_jm);
|
|
nome_el_pdf_jm["-1"].innerHTML = jg2_pdf_jm;
|
|
pontuacao_el_pdf_jm["1"].innerHTML = " = "+pontuacoes_pdf_jm["1"];
|
|
pontuacao_el_pdf_jm["-1"].innerHTML = " = "+pontuacoes_pdf_jm["-1"];
|
|
|
|
} else if(jg1_pdf_jm) {
|
|
|
|
jg1_pdf_jm = sanitizeInput(jg1_pdf_jm);
|
|
nome_el_pdf_jm["1"].innerHTML = jg1_pdf_jm;
|
|
pontuacao_el_pdf_jm["1"].innerHTML = " = "+pontuacoes_pdf_jm["1"];
|
|
nome_el_pdf_jm["-1"].innerHTML = "Jogador 2";
|
|
jg2_pdf_jm = "Jogador 2";
|
|
pontuacao_el_pdf_jm["-1"].innerHTML = " = "+pontuacoes_pdf_jm["-1"];
|
|
|
|
}else if(jg2_pdf_jm) {
|
|
|
|
jg2_pdf_jm = sanitizeInput(jg2_pdf_jm);
|
|
nome_el_pdf_jm["-1"].innerHTML = jg2_pdf_jm;
|
|
pontuacao_el_pdf_jm["-1"].innerHTML = " = "+pontuacoes_pdf_jm["-1"];
|
|
nome_el_pdf_jm["1"].innerHTML = "Jogador 1";
|
|
jg1_pdf_jm = "Jogador 1";
|
|
pontuacao_el_pdf_jm["1"].innerHTML = " = "+pontuacoes_pdf_jm["1"];
|
|
|
|
} else {
|
|
|
|
nome_el_pdf_jm["1"].innerHTML = "Jogador 1";
|
|
jg1_pdf_jm = "Jogador 1";
|
|
pontuacao_el_pdf_jm["1"].innerHTML = " = "+pontuacoes_pdf_jm["1"];
|
|
nome_el_pdf_jm["-1"].innerHTML = "Jogador 2";
|
|
jg2_pdf_jm = "Jogador 2";
|
|
pontuacao_el_pdf_jm["-1"].innerHTML = " = "+pontuacoes_pdf_jm["-1"];
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
vez_pdf_jm = "1";
|
|
proximo_pdf_jm = (parseInt(vez_pdf_jm, 10)*(-1)).toString();
|
|
tentativa_pdf_jm = 1;
|
|
jogo_pdf_jm == "com_2_jogadores"? jogador_el_pdf_jm["1"].classList.add('pulsar'):jogador_el_pdf_jm["1"].classList.remove('pulsar');
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++ Jogo Percurso das Frações ++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
|
|
const duracao_movimento = 1000; // Duração da animação em milissegundos
|
|
|
|
let jogadores_pf = [];
|
|
let jogadores_ordenados_temp = [];
|
|
let chegada_pf = [];
|
|
|
|
class JogadorPF {
|
|
|
|
static id = 0;
|
|
|
|
constructor(nome, casa) {
|
|
this.id = JogadorPF.id++;
|
|
this.nome = nome;
|
|
this.casa = casa;
|
|
}
|
|
|
|
avancar_casas(numeroCasas) {
|
|
this.casa += numeroCasas;
|
|
console.log(`${this.nome} avançou ${numeroCasas} casas.`);
|
|
return this.casa;
|
|
}
|
|
|
|
}
|
|
|
|
const pecas = document.querySelectorAll(".peca_pf");
|
|
const casas_pf = document.querySelectorAll(".casa_pf");
|
|
const vez_el_pf = document.querySelector(".vez_el_pf");
|
|
const inicia_jogada_pf = document.querySelector(".inici_jogada_pf_pf");
|
|
|
|
let vez_pf;
|
|
let total_casas_pf = casas_pf.length;
|
|
|
|
const dado_pf = document.querySelector('.dado_pf');
|
|
const dado_pfFaces = document.querySelectorAll('.dado_pf-face');
|
|
|
|
let dado_resultado_pf = 0;
|
|
|
|
const info_pf = document.getElementById("info_pf");
|
|
|
|
let face_atual_pf;
|
|
let num_sorteado_anterior_pf;
|
|
|
|
let iteracaoAtual_pf = 0;
|
|
|
|
|
|
|
|
|
|
let som_ativado_pf = true;
|
|
|
|
let som_pf = document.querySelector(".som_pf");
|
|
|
|
const som_erro_pf = document.getElementById("erro_pf");
|
|
const som_movimento_pf = document.getElementById("movimento_pf");
|
|
const som_chegada_pf = document.getElementById("som_chegada_pf");
|
|
const som_acerto_pf = document.getElementById("mini_acerto_pf");
|
|
const som_dado_pf = document.getElementById("dado_curto_pf");
|
|
const som_voltar_pf = document.getElementById("retrocedendo_pf");
|
|
const som_finale_pf = document.getElementById("finale_pf");
|
|
|
|
|
|
|
|
|
|
let perguntas_pf = [
|
|
|
|
{
|
|
|
|
"enunciado":"Isabel fez a festa de aniversário de seu filho. Do total dos doces comprados, \\(\\frac{5}{20}\\) era de brigadeiro com granulado e \\(\\frac{6}{20}\\) de brigadeiro com leite ninho. Qual a fração da quantidade de brigadeiros que Isabel comprou para a festa?",
|
|
|
|
"fracao": true,
|
|
|
|
"multiplas_respostas": false,
|
|
|
|
"n": "11",
|
|
|
|
"d": "20"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"enunciado":"Em uma eleição, há 2 candidatos concorrendo para ocuparem a vaga de vereador. O Candidato A está com \\(\\frac{8}{12}\\) da intenção dos votos. O candidato B está com \\(\\frac{2}{6}\\) da intenção dos votos. Qual dos dois candidatos possui mais chances de ser eleito? Por quê? Responda com a maior fração.",
|
|
|
|
"fracao": true,
|
|
|
|
"multiplas_respostas": true,
|
|
|
|
"n": ["8","2"],
|
|
|
|
"d": ["12","3"]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"enunciado":"Pedro construiu uma piscina que tem a forma de um paralelepípedo retangular com as seguintes dimensões: 9,80 m de comprimento, 4,25 m de largura e 1,40 m de profundidade. A capacidade dessa piscina em litros é? Use somente números e vírgula. Letras serão ignoradas.",
|
|
|
|
"fracao": false,
|
|
|
|
"r": "58310"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"enunciado":"Qual é o volume, em mililitros (ml), de uma caixa de bis que tem a forma de um paralelepípedo retangular com largura de 3 cm, comprimento de 6 cm e altura de 19 cm? Use somente números e vírgula. Letras serão ignoradas.",
|
|
|
|
"fracao": false,
|
|
|
|
"r": "342"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"enunciado":"Estefani e Gisele trabalham de frentista em um posto de Combustível. Para chegar até o trabalho, Estefani percorre \\(\\frac{2}{9}\\) de quilômetro e Gisele \\(\\frac{2}{3}\\) de quilômetro. Que fração representa a quantidade de quilômetros que Estefani e Gisele percorrem juntas?",
|
|
|
|
"fracao": true,
|
|
|
|
"multiplas_respostas": false,
|
|
|
|
"n": "8",
|
|
|
|
"d": "9"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"enunciado":"Carla e Pietra trabalham em uma confeitaria. Em um determinado dia, Carla produziu \\(\\frac{8}{15}\\) da produção total de salgadinhos da confeitaria e Pietra \\(\\frac{3}{15}\\). Qual a fração que representa a quantidade de salgadinhos que Carla produziu a mais que Pietra?",
|
|
|
|
"fracao": true,
|
|
|
|
"multiplas_respostas": true,
|
|
|
|
"n": ["5", "1"],
|
|
|
|
"d": ["15", "3"]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"enunciado":"Gustavo tem uma tira retangular que está dividida em 11 partes iguais. Nessa tira, ele pintou 5 partes iguais de verde, só que ele eliminou 3 partes dessa parte verde. Com isso, a parte verde que restou representa que fração da tira inicial?",
|
|
|
|
"fracao": true,
|
|
|
|
"multiplas_respostas": false,
|
|
|
|
"n": "2",
|
|
|
|
"d": "11"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"enunciado":"A família de Francisco o saiu de Cascavel em direção a Curitiba. No primeiro dia, percorreu \\(\\frac{1}{2}\\) da distância que separa as duas cidades e no segundo dia foi percorrido \\(\\frac{4}{16}\\) do percurso total. Qual dia eles percorreram o maior trajeto do percurso? Responda com a maior fração.",
|
|
|
|
"fracao": true,
|
|
|
|
"multiplas_respostas": false,
|
|
|
|
"n": "1",
|
|
|
|
"d": "2"
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
"enunciado":"Em duas turmas com a mesma quantia de alunos do 9º ano, a professora de matemática quis comparar o desenvolvimento de seus alunos ao resolverem a mesma prova. O 9º D teve \\(\\frac{1}{3}\\) de suas provas gabaritadas, enquanto o 9º F teve \\(\\frac{6}{9}\\) de suas provas gabaritadas. Qual turma teve o maior número de provas gabaritadas? Responda com a maior fração.",
|
|
|
|
"fracao": true,
|
|
|
|
"multiplas_respostas": true,
|
|
|
|
"n": ["6","2"],
|
|
|
|
"d": ["9","3"]
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
"enunciado":"Rodolfo está vendendo duas casas de mesmo valor e recebeu duas propostas. Vanessa se interessou pela casa 1 e ofereceu \\(\\frac{2}{5}\\) do valor para pagamento à vista. Augusto, que se interessou pela casa 2, fez uma proposta de \\(\\frac{1}{3}\\) em cima do valor para pagamento à vista. Qual proposta é mais lucrativa para Rodolfo? Responda com a maior fração.",
|
|
|
|
"fracao": true,
|
|
|
|
"multiplas_respostas": false,
|
|
|
|
"n": "2",
|
|
|
|
"d": "5"
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
"enunciado":"Dois grupos de ciclistas saíram de Foz do Iguaçu com destino a Medianeira. Sabe-se que o primeiro grupo já percorreu \\(\\frac{1}{3}\\) do percurso e o segundo grupo percorreu \\(\\frac{1}{4}\\) do percurso. Qual grupo percorreu a maior parte do percurso? Responda com a maior fração.",
|
|
|
|
"fracao": true,
|
|
|
|
"multiplas_respostas": false,
|
|
|
|
"n": "2",
|
|
|
|
"d": "5"
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
"enunciado":"Ellen trabalha em uma empresa que possui uma regra para as reuniões: é preciso ter pelo menos \\(\\frac{2}{5}\\) dos funcionários da empresa presentes para que possam ser votadas algumas mudanças. Se no dia da reunião compareceram \\(\\frac{4}{7}\\) do total funcionários, uma votação poderá ter ocorrido? Se não poderá haver uma reunião, responda 0, caso contrário, responda 1.",
|
|
|
|
"fracao": false,
|
|
|
|
"r": "1"
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
"enunciado":"Renato é professor de Educação Física de uma escola, onde o esporte preferido de seus alunos do 8º ano é o futebol. Então, o professor fez a seguinte proposta: ele os deixaria jogar futebol na segunda parte da aula se pelo menos \\(\\frac{2}{3}\\) da turma estiver a favor. Sabendo que o 8º ano possui 30 alunos e 15 queriam jogar futebol, qual a fração que representa os alunos que concordaram em jogar futebol? Eles irão jogar futebol nesta aula? Se eles não vão poder jogar futebol, responda 0, caso contrário, responda 1.",
|
|
|
|
"fracao": false,
|
|
|
|
"r": "0"
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
"enunciado":"Gilberto leva \\(\\frac{12}{15}\\) de 1 hora para ir da sua casa até a universidade de ônibus e seu colega de sala, Lucas, leva \\(\\frac{6}{12}\\) de 1 hora indo de carro. Quem leva menos tempo para chegar à universidade? Responda com a maior fração.",
|
|
|
|
"fracao": true,
|
|
|
|
"multiplas_respostas": true,
|
|
|
|
"n": ["1","6"],
|
|
|
|
"d": ["2","12"]
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
"enunciado":"Sara comprou 5 pacotes de chicletes de morango e 7 de chicletes de uva. Qual é a razão do número de pacotes de chicletes de uva para o de morango?",
|
|
|
|
"fracao": true,
|
|
|
|
"multiplas_respostas": false,
|
|
|
|
"n": "7",
|
|
|
|
"d": "5"
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
"enunciado":"Beatriz foi ao mercado, comprou 6 refrigerantes e 4 sucos. Qual a razão de refrigerantes e sucos equivale que Beatriz comprou?",
|
|
|
|
"fracao": true,
|
|
|
|
"multiplas_respostas": true,
|
|
|
|
"n": ["6","3"],
|
|
|
|
"d": ["4","2"]
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
"enunciado":"Pedro levou 100 salgadinhos para festa de sua sala e a professora dividiu em quantidades iguais para seus 20 alunos. Qual a razão estabelecida entre salgadinhos e alunos?",
|
|
|
|
"fracao": true,
|
|
|
|
"multiplas_respostas": true,
|
|
|
|
"n": ["100","5"],
|
|
|
|
"d": ["20","1"]
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
"enunciado":"Roberta vende na feira a dúzia de Kiwi. Um de seus clientes pede apenas 2/6 de uma dúzia. Quantos kiwis Roberta terá que separar?",
|
|
|
|
"fracao": false,
|
|
|
|
"r": "4"
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
"enunciado":"Um lavador de carro gasta \\(\\frac{4}{3}\\) de um litro de água para lavar cada carro. Quantos carros ele consegue lavar com 40 litros?",
|
|
|
|
"fracao": false,
|
|
|
|
"r": "30"
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
"enunciado":"Qual é a fração geratriz da dízima periódica 0,4555...?",
|
|
|
|
"fracao": true,
|
|
|
|
"multiplas_respostas": false,
|
|
|
|
"n": "41",
|
|
|
|
"d": "90"
|
|
|
|
}
|
|
|
|
|
|
];
|
|
|
|
|
|
let respondidas_certas_pf = [];
|
|
|
|
let respondidas_erradas_pf = [];
|
|
|
|
function sanitizeInput_pf(input) {
|
|
return input.replace(/[^a-zA-Z0-9\sçáâéêíóôúãõ]/g, '');
|
|
}
|
|
|
|
function deixarSoNumerosVirgula_pf(input) {
|
|
return input.replace(/[^0-9,]/g, '');
|
|
}
|
|
|
|
function abrir_pf(){
|
|
|
|
vez_pf = 0;
|
|
|
|
const container_jogo_pf = document.querySelector(".container_jogo_pf");
|
|
|
|
const btn_pf = document.querySelector(".btn_pf");
|
|
|
|
const tela_inicial_pf = document.getElementById("tela_inicial_pf");
|
|
|
|
const tabuleiro_pf = document.querySelector(".tabuleiro_pf");
|
|
|
|
const cores_pf = ["#c57fb5", "#ff3b91", "#04bdec", "#fcde02", "#5ab946", "#f78d35"];
|
|
|
|
const total_cores_pf = cores_pf.length;
|
|
|
|
for(i=0; i < casas_pf.length; i++){
|
|
|
|
if(i == 0 || i == 34){continue};
|
|
|
|
let r = i % total_cores_pf;
|
|
|
|
casas_pf[i].style.backgroundColor = cores_pf[r];
|
|
|
|
const classes = casas_pf[i].classList;
|
|
|
|
for(let h = 0; h < classes.length; h++){
|
|
|
|
const classe = classes[h];
|
|
|
|
if(classe.startsWith("cs_")){
|
|
casas_pf[i].classList.remove(classe);
|
|
}
|
|
}
|
|
|
|
const id = casas_pf[i].id;
|
|
|
|
const num_array = id.split("_");
|
|
|
|
const numero_da_casa = num_array[1];
|
|
|
|
casas_pf[i].querySelector("span").innerHTML = numero_da_casa;
|
|
|
|
}
|
|
|
|
|
|
|
|
if(btn_pf.classList.contains("jogo_ativo_pf")){ // ---------------- Encerrando o jogo percurso das fracoes ----------
|
|
|
|
vez_pf = 0;
|
|
|
|
chegada_pf.length = 0;
|
|
|
|
jogadores_pf.length = 0;
|
|
|
|
const casa_inicial = document.getElementById("c_0_pf");
|
|
|
|
for(i=0; i < pecas.length; i++){
|
|
|
|
casa_inicial.appendChild(pecas[i]);
|
|
|
|
}
|
|
|
|
vez_el_pf.innerHTML = " ";
|
|
|
|
for (i=0; i < pecas.length; i++){
|
|
|
|
pecas[i].classList.remove("pulsar_pf");
|
|
|
|
}
|
|
|
|
iteracaoAtual_pf = 0;
|
|
|
|
dado_resultado_pf = 0;
|
|
|
|
container_jogo_pf.style.opacity = "0";
|
|
|
|
container_jogo_pf.style.height = "0";
|
|
|
|
info_pf.style.display = "none";
|
|
|
|
tabuleiro_pf.style.opacity = "0";
|
|
|
|
for(i=0; i<pecas.length; i++){
|
|
|
|
pecas[i].style.display = "none";
|
|
|
|
}
|
|
|
|
setTimeout(() => {
|
|
|
|
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<tam; i++){
|
|
|
|
let n = inverter_ordem_pf(sortearNumero());
|
|
|
|
if(n){
|
|
|
|
const indice_surpresa = Math.floor(Math.random() * (casa_surpresa.length-1))
|
|
|
|
casas_pf[n].querySelector("span").innerHTML = casa_surpresa[indice_surpresa];
|
|
|
|
casas_pf[n].style.backgroundColor = "#444";
|
|
|
|
let classe_pf = "cs_"+casa_surpresa[indice_surpresa];
|
|
|
|
casas_pf[n].classList.add(classe_pf);
|
|
|
|
casa_surpresa.splice(indice_surpresa,1);
|
|
|
|
console.log("n: "+n+"Indice surpresa: "+indice_surpresa+" --- numero dentro da casa surpresa: "+casa_surpresa[indice_surpresa]+" --- classe: "+classe_pf+" --- vetor casa surpresa: "+casa_surpresa);
|
|
|
|
}
|
|
|
|
}//fecha for para montar as casas surpresas
|
|
|
|
const tela_inicial_pf = document.getElementById("tela_inicial_pf");
|
|
|
|
const tabuleiro_pf = document.querySelector(".tabuleiro_pf");
|
|
|
|
tela_inicial_pf.style.opacity = "0";
|
|
|
|
tabuleiro_pf.style.display = "grid";
|
|
|
|
setTimeout(() => {
|
|
|
|
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<numJogadores; i++){
|
|
|
|
let j_d_pf = jogador_div_pf[i];
|
|
|
|
let nome = j_d_pf.querySelector("div:nth-child(2)").textContent;
|
|
|
|
let jogador = new JogadorPF(nome,0);
|
|
|
|
jogadores_pf.push(jogador);
|
|
|
|
console.log("Nome: "+jogadores_pf[i].nome);
|
|
|
|
pecas[i].style.display = "block";
|
|
|
|
}
|
|
|
|
info_pf.style.display = "flex";
|
|
|
|
definir_ordem_pf();
|
|
|
|
|
|
}//Fecha a funcao iniciarJogo_pf
|
|
|
|
|
|
|
|
|
|
function toggle_som_pf() {
|
|
|
|
if(som_ativado_pf){
|
|
|
|
som_pf.classList.toggle("som_desativado_pf");
|
|
|
|
som_ativado_pf = false;
|
|
|
|
} else {
|
|
|
|
som_pf.classList.toggle("som_desativado_pf");
|
|
|
|
som_ativado_pf = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
function mostrar_janela_definicao_ordem_pf() {
|
|
|
|
const jan = document.getElementById("janela_definicao_ordem_pf");
|
|
|
|
jan.style.display = "flex";
|
|
|
|
setTimeout(() => {
|
|
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 = "<h3>Ordem Definida</h3>";
|
|
|
|
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 + "<div>" + textoJogadores + "</div>";
|
|
|
|
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 = `<div style='display: flex; justify-content: center; align-items: center; flex-direction: column; font-size: small;'>
|
|
<div>Numerador</div>
|
|
<hr style='background-color: #777; width: 70px; height: 1px; border-radius: 5px; box-shadow: none;' />
|
|
<div>Denominador</div>
|
|
</div>
|
|
|
|
<div style='display: flex; justify-content: center; align-items: center; flex-direction: column;'>
|
|
<div class='numerador_pf' contenteditable='true'></div>
|
|
<hr style='background-color: #777; width: 70px; height: 1px; border-radius: 5px; box-shadow: none;' />
|
|
<div class='denominador_pf' contenteditable='true'></div>
|
|
</div>
|
|
|
|
`;
|
|
|
|
divEspacoResposta.innerHTML = html_conteudo;
|
|
|
|
divEspacoResposta.appendChild(bt);
|
|
|
|
} else {
|
|
|
|
divEspacoResposta.style.cssText = "display: flex; justify-content: center; align-items: center;";
|
|
|
|
|
|
const html_conteudo = `
|
|
<div class='el_resp_pf' contenteditable='true'></div>
|
|
|
|
`;
|
|
|
|
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 = `<div style='font-size: x-large; font-weight: bold; text-align: center; width:100%;'>${valor}</div>`;
|
|
|
|
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 = `<div class='numerador_cf' contenteditable='true'></div>
|
|
<hr style='background-color: #777; width: 70px; height: 1px; border-radius: 5px; box-shadow: none;' />
|
|
<div class='denominador_cf' contenteditable='true'></div>`;
|
|
|
|
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 = `<span style="color: green; font-weight: bold; text-shadow: 1px 1px black;">CORRETO! </span> ${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+" <span style='color: yellow; font-weight: bold; text-shadow: 1px 1px black;'> empataram!</span>";
|
|
|
|
} else if(jogadores_cf[0].pontos > jogadores_cf[1].pontos){
|
|
|
|
msg = "Fim de jogo! "+jogadores_cf[0].nome+" <span style='color: green; font-weight: bold; text-shadow: 1px 1px black;'> ganhou!</span>";
|
|
|
|
} else {
|
|
|
|
msg = "Fim de jogo! "+jogadores_cf[1].nome+" <span style='color: green; font-weight: bold; text-shadow: 1px 1px black;'> ganhou!</span>";
|
|
|
|
}
|
|
|
|
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 = `<span style="color: red; font-weight: bold; text-shadow: 1px 1px black;">ERRADO! </span> ${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 *******************************************/
|
|
|
|
|