Estou tendo dificuldades pra fazer um verificador dos números sorteados, para que nestes não tenha duplicata, assim como foi feito na aula do bingo.
Estou tendo dificuldades pra fazer um verificador dos números sorteados, para que nestes não tenha duplicata, assim como foi feito na aula do bingo.
Fabio da, gostaria de ajudar, mas preciso que me mostre o codigo, ou especificar sua dúvida, porfavor.
Fabio primeiramente devemos ter um array para receber os números sorteados e os jogados:
var numerosSorteados = [];
var numerosJogados = [];
Feito isso precisamos sortear os números:
numerosSorteados.push(Math.round(Math.random() * 100));
No caso do sorteio estamos sorteando apenas os números de 0 a 100, caso queira um intervalo maior apenas aumente o 100.
E receber os números jogados:
numerosJogados.push(parseInt(prompt("Digite um numero para a loteria")));
Utilizamos a função push para pegar o numero digitado pelo usuário no prompt do navegador e adiciona-lo no array, também realizamos o parse do numero pois o mesmo por padrão vem como string e queremos trabalhar com int.
Agora precisamos apenas verificar se o numero jogado esta dentro do array dos numeros sorteados, caso esteja:
if (numerosSorteados[i] == numerosJogados[i])
Caso esteja baste termos um variável e incrementa-la para contar os acertos:
contadorDeAcertos++;
Lembrando que todo o código que eu lhe dei como exemplo deve estar dentro de um for:
for (var i = 0; i < 6; i++) {
// códigos aqui
}
Espero ter ajudado
A minha questão é que precisamos usar o Math.random() 6 vezes e ele pode gerar duplicidade.
Fabio da, fiz um programa que gera array aleatorio, e depois chama uma função para não deixa duplicidade.
Veja se é isso que você estava esperando.
<!DOCTYPE html>
<html>
<head>
<title>Logica Programação</title>
<meta charset="UTF-8">
</head>
<body>
<script>
// Não deixa os valores de um array se repetir
function naoRepeti(array, f) {
if(array instanceof Array && array.length <= 9) {
for(var i = 0; i < array.length; i++) {
for(var j = (i+1); j < array.length; j++){
if(array[i] == array[j]) {
// Essa função se houver numeros repetido, gera outro valor aleatorio.
array[i] = Math.floor((Math.random()*9)+1) ;
return f(array, naoRepeti); // Chama uma função passando um array e ela mesma.
}
}
}
return array;
} else {
return false;
}
}
// Gera um array aleatorio com valor de 1 ou 9.
function arrayAleatorio(n) {
// Devemos receber um valor que será o tamanho do array.
var array = [];
for(var i = 0; i < n; i++) {
array[i] = Math.floor((Math.random()*9)+1);
}
return array;
}
// Devemos chamar naoRepeti e passar um array e uma função (ela mesmo).
console.log(naoRepeti(arrayAleatorio(10),naoRepeti));
</script>
</body>
</html>
Ops me desculpem, passei um exemplo que eu estava testando. Porfavor mudem o valor do arrayAleatorio para um valor igual ou menor que 9.
Por exemplo:
<!DOCTYPE html>
<html>
<head>
<title>Logica Programação</title>
<meta charset="UTF-8">
</head>
<body>
<script>
// Não deixa os valores de um array se repetir
function naoRepeti(array, f) {
if(array instanceof Array && array.length <= 9) {
for(var i = 0; i < array.length; i++) {
for(var j = (i+1); j < array.length; j++){
if(array[i] == array[j]) {
// Essa função se houver numeros repetido, gera outro valor aleatorio.
array[i] = Math.floor((Math.random()*9)+1) ;
return f(array, naoRepeti); // Chama uma função passando um array e ela mesma.
}
}
}
return array;
} else {
return false;
}
}
// Gera um array aleatorio com valor de 1 ou 9.
function arrayAleatorio(n) {
// Devemos receber um valor que será o tamanho do array.
var array = [];
for(var i = 0; i < n; i++) {
array[i] = Math.floor((Math.random()*9)+1);
}
return array;
}
// Devemos chamar naoRepeti e passar um array e uma função (ela mesmo).
console.log(naoRepeti(arrayAleatorio(9),naoRepeti));
</script>
</body>
</html>
Fabio, você pode estar verificando se o numero sorteado ja existe no array, caso exista mande gerar outro.
numeroSorteado = Math.round(Math.random() * 100);
if (numerosSorteados.includes(numeroSorteado))
continue;
numerosSorteados.push(numeroSorteado);
Espero ter ajudado