Implementei uma alteração na lógica do script em relação à sugestão original do curso. Como a proposta era criar um sorteio secreto, identifiquei que exibir todos os resultados na tela comprometeria esse objetivo. Para contornar isso, adaptei o sistema para que cada participante visualize apenas quem tirou, mantendo o sigilo do sorteio. Por se tratar de um exercício, procurei manter o foco no JavaScript, realizando apenas ajustes pontuais no HTML e CSS.
https://github.com/JACursino/ingressos.git
let amigos = [];
let amigosEmbaralhados = [];
let sorteioFeito = false; // Variável para controlar se o sorteio já foi feito
function adicionar() {
let nomeAmigo = document.getElementById("nome-amigo");
let listaAmigos = document.getElementById("lista-amigos");
let nomeDigitado = nomeAmigo.value.trim();
if (!nomeValido(nomeDigitado)) {
return;
}
amigos.push(nomeDigitado);
// Atualiza a lista de amigos na tela
listaAmigos.textContent = amigos.join(', ');
// Limpa o campo e mantém o foco
nomeAmigo.value = '';
nomeAmigo.focus();
}
function nomeValido(nome) {
if (nome.trim() === '') {
alert("Por favor, insira um nome!");
return false;
}
let formatoCorreto = /^[A-Za-zÀ-ÿ\s]+$/;
if (!formatoCorreto.test(nome)) {
alert("Use apenas letras e espaços — sem números ou símbolos!");
return false;
}
let nomeParaComparar = nome.toLowerCase();
let existe = amigos.some(a => a.toLowerCase() === nomeParaComparar); /* Fiz uma tentativa usando o findIndex no lugar do some, mais não consegui o resultado esperado*/
if (existe) {
alert("Este nome já foi adicionado!");
return false;
}
return true;
}
function sortear() {
if (amigos.length < 2) {
alert("Adicione pelo menos 2 amigos para sortear!");
return;
}
// Se o sorteio ainda não foi feito, embaralha os pares
if (!sorteioFeito) {
amigosEmbaralhados = [...amigos].sort(() => Math.random() - 0.5);
// Garante que ninguém tire a si mesmo
for (let i = 0; i < amigos.length; i++) {
if (amigosEmbaralhados[i] === amigos[i]) {
let temp = amigosEmbaralhados[i];
amigosEmbaralhados[i] = amigosEmbaralhados[(i + 1) % amigos.length];
amigosEmbaralhados[(i + 1) % amigos.length] = temp;
}
}
sorteioFeito = true;
alert("Sorteio realizado! Agora digite seu nome para ver quem você tirou.");
}
// Pede o nome do participante para revelar quem ele tirou
let nomeParticipante = prompt("Digite seu nome para ver quem você tirou:");
// Verifica se o nome existe na lista
let indice = amigos.indexOf(nomeParticipante);
if (indice === -1) {
alert("Nome não encontrado na lista de participantes!");
return;
}
// Exibe apenas o amigo que o participante tirou
alert(`Você tirou: ${amigosEmbaralhados[indice]}`);
}
function reiniciar() {
amigos = [];
document.getElementById("lista-amigos").textContent = '';
document.getElementById("lista-sorteio").textContent = '';
document.getElementById("nome-amigo").value = '';
document.getElementById("nome-amigo").focus();
}
// Seleciona o container onde o resultado do sorteio era exibido
const containerSorteio = document.querySelector(".prizeDraw__container p#lista-sorteio");
// Define o texto explicativo com formatação inline
containerSorteio.innerHTML = `
<span style="font-size: 18px; color: #333ecfff;">
<strong>-</strong> Após o sorteio, clique novamente em "Sortear" e digite seu nome para descobrir quem você tirou.<br><br>
<strong>Regra importante:</strong> Não revele para ninguém quem você tirou! O segredo é fundamental.
</span>
`;
Fiz uma avaliação com a Luri, e encontramos diversos pontos a ainda a melhorar no script, pretendo fazer ao final do curso em uma nova versão