Rafael Tavares Juliani 5fbf08693c INÍCIO
2025-09-04 15:53:18 -03:00

742 lines
21 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" : "O dobro de um número",
"par" : 1
},
{"enunciado": "\\(2x\\)",
"par" : 1
},
{"enunciado": "A diferença entre dois números",
"par" : 2
},
{"enunciado": "\\(a-b\\)",
"par" : 2
},
{"enunciado": "Metade de um número",
"par" : 3
},
{"enunciado": "\\(\\frac{x}{2}\\)",
"par" : 3
},
{"enunciado" : "A diferença entre um número e 2",
"par" : 4
},
{"enunciado": "\\(z-2\\)",
"par" : 4
},
{"enunciado": "A soma de dois números diferentes",
"par" : 5
},
{"enunciado": "\\(g+y\\)",
"par" : 5
},
{"enunciado": "A quinta parte de um número",
"par" : 6
},
{"enunciado": "\\(\\frac{x}{5}\\)",
"par" : 6
},
{"enunciado" : "Um número mais 1",
"par" : 7
},
{"enunciado": "\\(x+1\\)",
"par" : 7
},
{"enunciado": "Um número mais ele mesmo",
"par" : 8
},
{"enunciado": "\\(x+x = 2x\\)",
"par" : 8
},
{"enunciado": "O triplo de um número",
"par" : 9
},
{"enunciado": "\\(3x\\)",
"par" : 9
},
{"enunciado" : "Um número menos ele mesmo",
"par" : 10
},
{"enunciado": "\\(x-x = 0\\)",
"par" : 10
},
{"enunciado" : "Um número somado com o dobro de outro número",
"par" : 11
},
{"enunciado": "\\(c+2d\\)",
"par" : 11
},
{"enunciado": "Um número multiplicado por ele mesmo três vezes",
"par" : 12
},
{"enunciado": "\\(x \\cdot x \\cdot x = x^3\\)",
"par" : 12
},
{"enunciado": "A soma de três números consecutivos",
"par" : 13
},
{"enunciado": "\\(x + (x + 1) + (x + 2)\\)",
"par" : 13
},
]
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');
}