2
respostas

transformar o jogo em loop ate o acerto

queria transformar o jogo em loop, só que não estou conseguindo, queria saber como fazer, essa interação em loop até o acertar

<meta charset = "UTF-8">

<script>

function pulaLinha(){
    document.write("<br> <br>");
}

function mostra(texto){
    pulaLinha();
    document.write(texto);
}

while(abc == trew){

var limite = parseInt(prompt("qual o valor limite?"));
console.log(limite);

var sorte = Math.round(Math.random() * limite);
console.log(sorte)

var escolha = parseInt(prompt("qual valor voce escolhe"))
console.log(escolha);

var abc = escolha;
var trew = sorte

}

mostra("parabéns você acertou")


</script>
2 respostas

Oi Osiris!! Eu acho importante tirar do laço while os comandos que você quer que fiquem "fixos" e deixar ali só o que vai precisar ser refeito a cada repetição. Daí, eu pensei que a sua ideia talvez fosse manter o limite escolhido e o número gerado aleatoriamente e apenas dar uma nova chance para o jogador a cada erro, era isso? Daí é possível fazer da forma abaixo:

<meta charset = "UTF-8">

<script>

function pulaLinha(){
    document.write("<br> <br>");
}

function mostra(texto){
    pulaLinha();
    document.write(texto);
}

var limite = parseInt(prompt("qual o valor limite?"));
console.log(limite);

var sorte = Math.round(Math.random() * limite);
console.log(sorte);

var escolha = parseInt(prompt("qual valor voce escolhe"));
console.log(escolha);


while(sorte != escolha){

    escolha = parseInt(prompt("Você errou! Vou te dar uma chance de tentar de novo"));
console.log(escolha);

}

mostra("parabéns você acertou");

</script>

Perceba que aquilo que estava antes dentro do while ficou fora para o primeiro teste e, caso o jogador erre o chute (sorte != escolha), vamos dar uma nova chance para ele, atualizando a variável escolha e refazendo o teste a cada iteração.

Mas já se a ideia é a cada erro repetir todo o processo, ficaria um pouco diferente:

<meta charset = "UTF-8">

<script>

function pulaLinha(){
    document.write("<br> <br>");
}

function mostra(texto){
    pulaLinha();
    document.write(texto);
}

var sorte = 0;

var escolha = 1;

while(sorte != escolha){

    var limite = parseInt(prompt("qual o valor limite?"));
console.log(limite);

    sorte = Math.round(Math.random() * limite);
console.log(sorte);

    escolha = parseInt(prompt("qual valor voce escolhe"))
console.log(escolha);

}

mostra("parabéns você acertou");

</script>

Daí fica parecido com o que vc fez, com a diferença que o while vai repetir o processo todo enquanto as variáveis "sorte" e "escolha" forem diferentes, e para isso funcionar elas precisaram ser definidas inicialmente com valores diferentes fora do laço, porque senão ele ficaria sem referência para fazer o primeiro teste.

Acho que era o erro que talvez estivesse ocorrendo pra vc no começo e que levou vc colocar o teste como (abc == trew), pq dessa forma o programa "entra" no laço, presumindo que essas variáveis ainda não definidas até então fossem iguais (a zero?).

O mesmo poderia ser feito no seu código e funcionaria, mas me parece desnecessário ter duas variáveis a mais pra fazer esse teste, ficam ocupando memória do sistema à toa. Perceba também que uma vez definida a variável, não precisamos mais escrever o "var" antes de novo quando vamos atualizá-la.

<meta charset = "UTF-8">

<script>

function pulaLinha(){
    document.write("<br> <br>");
}

function mostra(texto){
    pulaLinha();
    document.write(texto);
}

var abc = 2;
var trew = 1;

while(abc != trew){

var limite = parseInt(prompt("qual o valor limite?"));
console.log(limite);

var sorte = Math.round(Math.random() * limite);
console.log(sorte);

var escolha = parseInt(prompt("qual valor voce escolhe"))
console.log(escolha);

abc = escolha;
trew = sorte;

}

mostra("parabéns você acertou");

</script>

Abraço!!

tudo bem, obrigado pela ajuda.