Opa Thales, tudo certo?
Para que você tenha uma lista de números sorteados, é necessário que você chame a função sorteia()
a cada vez que o laço de repetição ocorra. Se a função sorteia()
for chamada apenas no começo da função, você só terá um número sorteado.
Vou deixar aqui algumas dicas que podem te ajudar na solução desse problema e que também vão servir para situações futuras quando estiver desenvolvendo outros códigos:
Enquanto escrevemos um código, temos que pensar que iremos esquecer a forma como um bloco de código funciona, ou teremos que explicar para um colega uma parte do projeto. Sendo assim, é uma boa ficar atento à questão da legibilidade do código. Eu já notei que você utiliza nomes muito significativos no projeto, que já é uma ótima forma de conseguir um código legível. Mas a prática que vou recomendar é ficar atento à identação dos blocos de código, ou seja:
Se você tem uma condicional dentro de um laço de repetição desse tipo
while ( x < y){
if( x.ehPar() ){
x.multiplica()
}
}
dá para notar que fica difícil de entender ao olhar rapidamente, e ficaria pior ainda para cada instrução ou bloco que adicionarmos no meio. Uma forma mais adequada seria
while ( x < y){
if( x.ehPar() ){
x.multiplica()
}
}
adicionar um espaçamento padrão cada vez que entrarmos em um outro bloco de código. No final da resposta vou inserir parte do seu projeto e gostaria que você desse uma olhada. Também existem ferramentas que te ajudam com isso, recomendo buscar pelo conceito de linter
.
Outra coisa: quando fazemos funções menores e que realizam menos tarefas, podemos testá-las individualmente e achar erros mais facilmente. Também é importante utilizar os parâmetros das funções para comunicar o que queremos enviar e receber de cada função. Por exemplo, no seu projeto, é utilizado a variável input
dentro da função verifica()
, o que não é interessante pois impede que possamos testar a função independente de outro código da página e também dificulta poder reutilizar essa função para um outro botão, por exemplo.
Mas não se preocupe, muitos desses padrões vão se tornando algo instintivo, e só conseguimos começar a perceber com facilidade praticando. Você já está num ótimo caminho, pois conseguiu comunicar muito bem qual foi o problema e seu código usava nomes que facilitavam o entendimento de qual é a sua intenção em cada trecho. Aqui vai o código que fiz com algumas alterações, eu recomendo observar as mudanças com atenção e tentar justificá-las:
<meta charset="UTF-8">
<input/>
<button> Verifique aqui</button>
<script>
function sorteia(){
return Math.round(Math.random() * 10)
}
function sorteiaNumeros (quantidade){
var segredos = []
var contador
for ( contador = 0 ; contador < quantidade ; contador++ ) {
var numeroDaVez = sorteia()
while ( segredos.includes(numeroDaVez) ) { // Cuidado pois a função sorteia() só pode retornar cerca de 10 valores diferentes
numeroDaVez = sorteia()
}
segredos.push(numeroDaVez)
}
return segredos
}
function verifica(segredos, numero){
if ( segredos.includes( Number(numero) ) ) {
return true
}
else {
return false
}
}
var segredos = sorteiaNumeros(3)
console.log(segredos)
var input = document.querySelector("input")
input.focus()
var button = document.querySelector("button")
button.onclick = function () {
if ( verifica(segredos, input.value) ){
console.log("Parabéns, você acertou!");
}
else {
console.log("Infelizmente, não foi dessa vez");
}
}
</script>
Qualquer outra dúvida não hesite em perguntar aqui. Continue assim e bons estudos!