4
respostas

Preciso de ajuda para: Fazer um programa de adivinhação onde o usuário deve advinhar 3 números de um array

Preciso terminar este array , porem não estou conseguindo. Poderiam agudar-me a faze-lo da forma correta e explicar o que fiz de errado? Mesmo que eu digite para o array numerosPalpite os mesmos números que estão contidos no array numerosSegredos o resultado é falso.



<meta charset="utf=8">

<script>


alert(" Quer testar a sua sorte e ver se consegue adivinhar 3 (tres) Numeros ?");

    var numerosSegredo= [2,10,15,88,100];

    var numerosPalpites = [];  

    for(var num = 0; num <=2;num++){
         var adivinha= parseInt(prompt("Digite um Numero de 0 (Zero) a 100(cem) : "));
             numerosPalpites[num] = adivinha;
     }

    if(numerosPalpites == numerosSegredo){
        alert("Você acertou!");
     }else{
        alert("Você errou!");
       }


</script>
4 respostas

Você está comparando os arrays, ou seja você está vendo se o array numeroPalpites que possui 3 números é igual ao numeroSegredos que possui 5 números, você poderia resolver o problema utilizando a função indexOf(), você utiliza essa função em um array e pede para ele informar a posição em que um valor está, se o retorno for -1 o valor não está no array, um exemplo no seu código seria: numerosSegredo.indexOf(numeroPalpites[0]) numerosSegredo.indexOf(numeroPalpites[1]) numerosSegredo.indexOf(numeroPalpites[2])

Se nenhum desses retornar -1 é porque seus números estão no array Creio que está é a solução que você está buscando e caso não seja, me desculpe

Erick, sinceramente não entendi a sua explicação. O que eu preciso fazer é um adivinha mas com 03 números, ou seja, preciso fazer um jogo de advinha em que invés de dar um palpite de um numero e ver se acertou, ou seja, o palpite dado está dentro do array, é dar 3 palpites e acertando três números que estão no array. Eu sei fazer somente quando é para dar um único palpite para acertar um numero. Considerando essa explicação você consegue ajudar a resolve?

Se eu entendi o problema o que você quer é o seguinte: De um array de 5 elementos, você vai pedir para o usuário entrar com 3 números e caso eles estejam no array o usuário ganhou, caso ele erre ele perde, se for isso o seguinte código irá funcionar: Vamos substituir o seu if, aqui temos uma variável ganhou, inicialmente eu inicio ela como true, depois eu entro em um for, que vai do número 0 até o número 2, em cada volta do for vamos utilizar a função indexOf no array numerosSegredo, e nela eu vou passar o número armazenado no array numerosPalpites, na posição num, como eu expliquei se o número passado estiver no array que pedi o indexOf ele vai me retornar a sua posição, caso o número não esteja dentro do array vai retornar -1, com isso temos a seguinte logica se o número passado no array numerosPalpites não estiver no array numerosSegredo, a função retorna -1 e o if se torna verdadeiro e mudando a variavel ganhou para false, no final do for se um dos números do array numerosPalpites não estiver no numerosSegredos ele vai ter mudado o ganhou para false, por fim é só fazer um if else se ganhou é verdadeiro ou falso.

A explicação ficou grande para tentar detalhar todo o processo e o que cada parte do código está fazendo

let ganhou = true;                                                                                                                                                                                                                                                                                                     
for(let num = 0; num < 3;num++){                                                                                                                                                                                                                                                                      
    if(numerosSegredo.indexOf(numerosPalpites[num]) == -1){                                                                                                                                                                                               
        ganhou = false;                                                                                                                                                                                                                                                                                     
    }                                                                                                                                                                                                                                                                                                                             
}                    
if(ganhou){
    alert("Você acertou!");
}else{
    alert("Você errou!");
}