Tengo que codificar un juego de bingo de consola para JavaScript. Es uno de algunos ejercicios que tengo que hacer antes de un Bootcamp del que estaré participando, así que tomen en cuenta que soy novato. Por si alguien no conoce el juego:
Ahora que lo expliqué, mi problema es el siguiente: tengo una función para generar una bola con un número aleatorio en cada turno. Para saber si un número ya salió o no, he creado una matriz para empujar los números que ya salieron. De esta manera podemos hacer un bucle con una condición if para verificar si la bola tiene el mismo valor que el número de arrays[i]. La forma en que lo hice, comienza bien, pero termina arruinando la consola de Chrome... tan cerca como llega a tener los 90 números en la matriz, comienza a iterar la matriz y generar números aleatorios hasta que encuentra los últimos números restantes.
Pegaré la parte del código de la que estoy hablando aquí debajo.
function bingo(){ console.table(bingoCard); bombo(); for (let i = 0; i < bingoCard.length; i++){ if (bola === bingoCard[i].number){ bingoCard[i].number = 'X'; bingoCard[i].matched = true; } } continuar = confirm('¿Continuar?'); if (continuar === true){ console.table(bingoCard); bingo(); }else { return 'Hasta la próxima'; } } function randomNum(){ let min = 1; let max = 90; return Math.floor(Math.random() * (max - min) + min); } function bombo(){ bola = randomNum(); console.log(+ bola + 'antes de bucle'); //test for (let i = 0; i < numbersOut.length; i++){ if (bola === numbersOut[i]){ bingo(); } } numbersOut.push(bola); console.log(numbersOut); alert('Ha salido el número ' + bola); }En su lugar, puede crear una matriz con números del 1 al 90 y mezclarla al azar.
function shuffleArray(array) { for (let i = array.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [array[i], array[j]] = [array[j], array[i]]; } }https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#Modern_method - si quieres entender este método