![](https://i.imgur.com/xG74tOh.png) # Aula 18 - Front-end ## Questão 1 e 2 ### HTML ```HTML function gerarNumeroInteiroAleatorio(min, max) { // número fracionário aleatório maior ou igual a 0 e menor que 1 const aleatorioDeBase = Math.random(); // número fracionário aleatório maior ou igual a 0 e menor que (max - min + 1) const aleatorioFracionario = Math.random() * (max - min + 1); // número inteiro aleatório maior ou igual a 0 e menor ou igual a (max - min) // Math.trunc tira a parte fracionária de um número: 0,5 vira 0, 1,25 vira 1, etc const aleatorioInteiro = Math.trunc(aleatorioFracionario); // número inteiro aleatório maior ou igual a min e menor ou igual a max return min + aleatorioInteiro; } function gerarCorAleatoria() { const vermelho = gerarNumeroInteiroAleatorio(0, 255); const verde = gerarNumeroInteiroAleatorio(0, 255); const azul = gerarNumeroInteiroAleatorio(0, 255); return "rgb(" + vermelho + ", " + verde + ", " + azul + ")"; } function escolherElementoAleatorio(array) { return array[gerarNumeroInteiroAleatorio(0, array.length - 1)] } const blocoDeCor = document.querySelector(".cor"); const botao1 = document.querySelector('.botao1'); const botao1Texto = botao1.querySelector('span'); const botao2 = document.querySelector('.botao2'); const botao2Texto = botao2.querySelector('span'); const botao3 = document.querySelector('.botao3'); const botao3Texto = botao3.querySelector('span'); function randomizaBotoes () { const botoes = []; botoes.push(gerarCorAleatoria(), gerarCorAleatoria(), gerarCorAleatoria()); blocoDeCor.style.backgroundColor = escolherElementoAleatorio(botoes); botao1Texto.innerText = botoes[0]; botao2Texto.innerText = botoes[1]; botao3Texto.innerText = botoes[2]; } randomizaBotoes (); let vitorias = 0; botao1.addEventListener("click", () => { if (botao1Texto.innerText === blocoDeCor.style.backgroundColor) { alert("Acertou amigão!"); randomizaBotoes(); vitorias++; if (vitorias === 10) { alert("Você acertou 10 vezes consecutivas! Posso andar com você no intervalo?"); vitorias = 0; } } else { alert("Você errou amigão ;(") vitorias = 0; randomizaBotoes(); } }); botao2.addEventListener("click", () => { if (botao2Texto.innerText === blocoDeCor.style.backgroundColor) { alert("Acertou amigão!"); randomizaBotoes(); vitorias++; if (vitorias === 10) { alert("Você acertou 10 vezes consecutivas! Posso andar com você no intervalo?"); vitorias = 0; } } else { alert("Você errou amigão ;(") vitorias = 0; randomizaBotoes(); } }); botao3.addEventListener("click", () => { if (botao3Texto.innerText === blocoDeCor.style.backgroundColor) { alert("Acertou amigão!"); randomizaBotoes(); vitorias++; if (vitorias === 10) { alert("Você acertou 10 vezes consecutivas! Posso andar com você no intervalo?"); vitorias = 0; } } else { alert("Você errou amigão ;(") vitorias = 0; randomizaBotoes(); } }); ``` ### CSS ```CSS body > div { display: flex; flex-direction: column; align-items: center; justify-content: center; flex-grow: 1; min-height: 70vh; } .cor { background-color: black; flex-basis: 500px; min-width: 500px; margin: auto; } .botoes{ display: flex; min-width: 500px; justify-content: space-between; } button { border-radius: 0.5em; padding: 0.5em 1em; border: 1px solid gray; } ``` ### JS ```JS function gerarNumeroInteiroAleatorio(min, max) { // número fracionário aleatório maior ou igual a 0 e menor que 1 const aleatorioDeBase = Math.random(); // número fracionário aleatório maior ou igual a 0 e menor que (max - min + 1) const aleatorioFracionario = Math.random() * (max - min + 1); // número inteiro aleatório maior ou igual a 0 e menor ou igual a (max - min) // Math.trunc tira a parte fracionária de um número: 0,5 vira 0, 1,25 vira 1, etc const aleatorioInteiro = Math.trunc(aleatorioFracionario); // número inteiro aleatório maior ou igual a min e menor ou igual a max return min + aleatorioInteiro; } function gerarCorAleatoria() { const vermelho = gerarNumeroInteiroAleatorio(0, 255); const verde = gerarNumeroInteiroAleatorio(0, 255); const azul = gerarNumeroInteiroAleatorio(0, 255); return "rgb(" + vermelho + ", " + verde + ", " + azul + ")"; } function escolherElementoAleatorio(array) { return array[gerarNumeroInteiroAleatorio(0, array.length - 1)] } const blocoDeCor = document.querySelector(".cor"); const botao1 = document.querySelector('.botao1'); const botao1Texto = botao1.querySelector('span'); const botao2 = document.querySelector('.botao2'); const botao2Texto = botao2.querySelector('span'); const botao3 = document.querySelector('.botao3'); const botao3Texto = botao3.querySelector('span'); function randomizaBotoes () { const botoes = []; botoes.push(gerarCorAleatoria(), gerarCorAleatoria(), gerarCorAleatoria()); blocoDeCor.style.backgroundColor = escolherElementoAleatorio(botoes); botao1Texto.innerText = botoes[0]; botao2Texto.innerText = botoes[1]; botao3Texto.innerText = botoes[2]; } randomizaBotoes (); let vitorias = 0; botao1.addEventListener("click", () => { if (botao1Texto.innerText === blocoDeCor.style.backgroundColor) { alert("Acertou amigão!"); randomizaBotoes(); vitorias++; if (vitorias === 10) { alert("Você acertou 10 vezes consecutivas! Posso andar com você no intervalo?"); vitorias = 0; } } else { alert("Você errou amigão ;(") vitorias = 0; randomizaBotoes(); } }); botao2.addEventListener("click", () => { if (botao2Texto.innerText === blocoDeCor.style.backgroundColor) { alert("Acertou amigão!"); randomizaBotoes(); vitorias++; if (vitorias === 10) { alert("Você acertou 10 vezes consecutivas! Posso andar com você no intervalo?"); vitorias = 0; } } else { alert("Você errou amigão ;(") vitorias = 0; randomizaBotoes(); } }); botao3.addEventListener("click", () => { if (botao3Texto.innerText === blocoDeCor.style.backgroundColor) { alert("Acertou amigão!"); randomizaBotoes(); vitorias++; if (vitorias === 10) { alert("Você acertou 10 vezes consecutivas! Posso andar com você no intervalo?"); vitorias = 0; } } else { alert("Você errou amigão ;(") vitorias = 0; randomizaBotoes(); } }); ``` ## Questão 3 e 4 ### HTML ```HTML <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="aula18-senha.css"> <title>Document</title> </head> <body> <div> <label> Senha <input class="senha" type="password"> <button class="botaoSenha">Esconder senha</button> </label> </div> <div> <label> Senha <input class="senha-focus" type="password"> </label> </div> <script src="aula18-senha.js"></script> </body> </html> </body> </html> ``` ### CSS ```CSS div { margin: 1em; text-align: center; } button { border-radius: 0.5em; padding: 0.5em 1em; border: 1px solid gray; } ``` ### JS ```JS const botaoSenha = document.querySelector('.botaoSenha'); const inputSenha = document.querySelector(".senha"); const inputSenhaFocus = document.querySelector(".senha-focus"); botaoSenha.addEventListener("click", () => { if (inputSenha.getAttribute("type") === null) { inputSenha.setAttribute("type","password"); } else { inputSenha.removeAttribute("type"); } }) inputSenhaFocus.addEventListener("focus", () => { inputSenhaFocus.removeAttribute("type"); }) inputSenhaFocus.addEventListener("blur", () => { inputSenhaFocus.setAttribute("type","password"); }) ``` ## Questão 5 e 6 ### HTML ```HTML <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="aula18-forca.css"> <title>Forca</title> </head> <body> <div class="container-forca"> <div class="forca"> <div class="base"></div> <div class="esquerda"></div> <div class="topo"></div> <div class="direita"></div> </div> <div class="corpo"> <div class="cabeca"></div> <div class="tronco"></div> <div class="braco direito"></div> <div class="braco esquerdo"></div> <div class="perna direito"></div> <div class="perna esquerdo"></div> </div> </div> <div class="letras"></div> <div class="botoes"> <button>a</button> <button>b</button> <button>c</button> <button>d</button> <button>e</button> <button>f</button> <button>g</button> <button>h</button> <button>i</button> <button>j</button> <button>k</button> <button>l</button> <button>m</button> <button>n</button> <button>o</button> <button>p</button> <button>q</button> <button>r</button> <button>s</button> <button>t</button> <button>u</button> <button>v</button> <button>w</button> <button>x</button> <button>y</button> <button>z</button> </div> <script src="aula18-forca.js"></script> </body> </html> ``` ### CSS ```CSS * { box-sizing: border-box; } body { margin: 1em; } .container-forca { width: 200px; height: 300px; position: relative; } .base { position: absolute; bottom: 0; left: 0; width: 100px; border-bottom: 4px solid black; } .esquerda { position: absolute; bottom: 0; top: 0; left: 48px; border-left: 4px solid black; } .topo { position: absolute; top: 0; left: 50px; right: 50px; border-bottom: 4px solid black; } .direita { position: absolute; top: 0; height: 50px; right: 48px; border-left: 4px solid black; } .cabeca { border-radius: 50%; border: 2px solid black; width: 50px; height: 50px; position: absolute; top: 50px; right: 23px; } .tronco { position: absolute; height: 100px; border-right: 2px solid black; right: 49px; top: 100px; } .braco { position: absolute; border-right: 2px solid black; height: 75px; right: 49px; top: 125px; } .esquerdo { transform: rotate(45deg); transform-origin: top center; } .direito { transform: rotate(-45deg); transform-origin: top center; } .perna { position: absolute; border-right: 2px solid black; height: 75px; right: 49px; top: 200px; } .letras { margin: 2em 0; display: flex; } .letra { display: inline-block; font-size: 3em; width: 2ch; height: 1.5em; text-align: center; margin-right: 10px; border-bottom: 1px solid black; } .botoes { margin: -0.5em; display: flex; flex-wrap: wrap; } .botoes button { margin: 0.5em; padding: 0; width: 3em; height: 3em; text-align: center; } span { font-size: 3em; margin: 0.3em; } ``` ### JS ```JS function gerarNumeroInteiroAleatorio(min, max) { // número fracionário aleatório maior ou igual a 0 e menor que 1 const aleatorioDeBase = Math.random(); // número fracionário aleatório maior ou igual a 0 e menor que (max - min + 1) const aleatorioFracionario = Math.random() * (max - min + 1); // número inteiro aleatório maior ou igual a 0 e menor ou igual a (max - min) // Math.trunc tira a parte fracionária de um número: 0,5 vira 0, 1,25 vira 1, etc const aleatorioInteiro = Math.trunc(aleatorioFracionario); // número inteiro aleatório maior ou igual a min e menor ou igual a max return min + aleatorioInteiro; } function escolherElementoAleatorio(array) { return array[gerarNumeroInteiroAleatorio(0, array.length - 1)] } const botoesLetras = document.querySelectorAll(".botoes button"); const letrasExibidas = document.querySelector(".letras"); const palavrasForca = ["pular", "muro", "celular", "varal"] const palavra = escolherElementoAleatorio(palavrasForca); const span = letrasExibidas.querySelectorAll('*'); let acertos = 0; let erros = 0; for (i = 0; i < palavra.length; i++) { letrasExibidas.append(document.createElement("span")); letrasExibidas.querySelectorAll('*')[i].innerText = '_' } for (let i = 0; i < botoesLetras.length; i++) { botoesLetras[i].addEventListener("click", () => { const letraClicada = botoesLetras[i].innerHTML; for (let j = 0; j < palavra.length; j++) { if (palavra[j] === letraClicada) { letrasExibidas.querySelectorAll('*')[j].innerText = letraClicada; acertos++ if (acertos === palavra.length) { alert('Você ganhou!'); } } else { erros++; if (erros/palavra.length === 6) { alert('Você perdeu ;('); } } } }) } document.addEventListener("keypress", () => { const letraTeclada = event.key; for (let j = 0; j < palavra.length; j++) { if (palavra[j] === letraTeclada) { letrasExibidas.querySelectorAll('*')[j].innerText = letraTeclada; acertos++ if (acertos === palavra.length) { alert('Você ganhou!'); } } else { erros++; if (erros/palavra.length === 6) { alert('Você perdeu ;('); } } } }) ```