Olá, gostaria de saber como que eu faria para que no numero aleatório não fosse escolhido o mesmo número consecutivamente.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Olá, gostaria de saber como que eu faria para que no numero aleatório não fosse escolhido o mesmo número consecutivamente.
Olá Lucas, tudo bem com você?
Bem, podemos ter esse comportamento apenas implementando uma verificação, vou te dar um exemplo de como poderíamos fazer:
Irei pegar o nosso gerador de número aleatório e transformar em uma função:
function gerarNumeroAleatorio(valor) {
return Math.floor(Math.random() * valor)
}Em nossa função trocaFraseAleatoria teremos algo parecido com isso
function trocaFraseAleatoria(data) {
var frase = $(".frase");
var numeroAleatorio = gerarNumeroAleatorio(data.length);
frase.text(data[numeroAleatorio].texto);
atualizaTamanhoFrase();
atualizaTempoInicial(data[numeroAleatorio].tempo);
}Agora como queremos que não seja a mesma frase eu vou apenas colocar um while para gerar um valor novo, caso seja repetido:
while(frase.text() == data[numeroAleatorio].texto){
numeroAleatorio = gerarNumeroAleatorio(data.length)
}Então veja que eu estou pegando o conteúdo da frase atual e comparando com a frase sorteada, enquanto elas forem iguais irei chamar a função para gerar um novo número, e só então, atualizarei com a nova :)
Ficando algo assim:
function trocaFraseAleatoria(data) {
var frase = $(".frase");
var numeroAleatorio = gerarNumeroAleatorio(data.length);
while(frase.text() == data[numeroAleatorio].texto){
console.log("Repetiu no " + numeroAleatorio)
numeroAleatorio = gerarNumeroAleatorio(data.length)
}
frase.text(data[numeroAleatorio].texto);
atualizaTamanhoFrase();
atualizaTempoInicial(data[numeroAleatorio].tempo);
}Compreendeu? Abraços e Bons Estudos!
Compreendi sim, muito obrigado!!