---
# System prepended metadata

title: Aula 18 - Front-end

---

![](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 ;(');
				}
			}
		}
	})	
```