Tenemos 100 botones con los números del 1 al 100 y hay que pulsarlos correlativamente:
https://www.microsiervos.com/archivo/juegos-y-diversion/del-1-al-100-juego-numeros.html
¿Seríamos capaz de hacer algo parecido?
Modificaciones:
1.- Que la cantidad de botones la pueda elegir el usuario mediante un input
Cantidad:[___] [Empezar]
2.- Que para crear el array desordenado tengamos una función que lo haga function arrayDesordenado(cantidad)-> [4,2,6,1,3,5]
3.- Que para crear el botón tengamos otra función crearBoton(texto)–> Nos devuelva el botón con el texto que le pasemos
<div id="contenedor" class="container "> <button id="empezar" class="btn btn-primary">Empezar</button> <div id="tablero"> </div> <script src="js/test.js"></script> </div>
document.getElementById('empezar').addEventListener('click', empezar) let numeroAPulsar const maximo = 30 function empezar () { numeroAPulsar = 1 const tablero = document.getElementById('tablero') tablero.innerHTML = '' // Creo un array de números del 1 al 20 // Y luego lo desordeno const numeros = [] for (let i = 0; i < maximo; i++) { numeros.push(i + 1) } for (let i = 0; i < 10; i++) { numeros.sort(function (a, b) { return 0.5 - Math.random() }) } for (let i = 0; i < maximo; i++) { // Crear un botón const boton = document.createElement('button') boton.innerHTML = numeros[i] boton.className = 'btn btn-success m-1' boton.addEventListener('click', pulsado) tablero.appendChild(boton) } } function pulsado () { const numeroPulsado = parseFloat(this.innerHTML) if (numeroAPulsar == numeroPulsado) { this.disabled = 'true' this.className = 'btn m-1' this.style.color = 'red' numeroAPulsar++ if (numeroAPulsar > maximo) { alert('Has ganado ¡BRAVO!') document.getElementById('tablero').innerHTML = '' } } else { alert('Has perdido ¡JAJAJAJA!') document.getElementById('tablero').innerHTML = '' } }
Mejorándolo un poco y comentando:
<div id="contenedor" class="container "> <label for="cantidad">Introduzca la cantidad de botones</label> <input id="cantidad" type="number"> <button id="empezar" class="btn btn-primary">Empezar</button> <div id="tablero"> </div> <script src="js/test.js"></script> </div>
document.getElementById('empezar').addEventListener('click', empezar) let numeroAPulsar let maximo = 30 function empezar () { // El máximo nos lo pone el usuario en el input cantidad maximo = parseFloat(document.getElementById('cantidad').value) // Primero hay que pulsar el 1. Como aquí comenzamos empezamos por el principio numeroAPulsar = 1 // Me guardo el tablero para no tener que estar repitiendo el documeng.getElementById const tablero = document.getElementById('tablero') // Vacío el tablero porque estoy empezando tablero.innerHTML = '' // LLamo a la función arrayDesordenado para obtener un array desordenado // ¿Cuántos elementos? Los que me ha dado el usuario y que los he guardado en maximo const numeros = arrayDesordenado(maximo) // Añado tantos botones como me haya dicho el usuario (maximo) for (let i = 0; i < maximo; i++) { // Crear un botón llamando a la función y le paso el texto que quiero que tenga // En este caso el elemento del array para que los botones salgan desordenados const boton = crearBoton(numeros[i]) // Y lo añado al tablero tablero.appendChild(boton) } } function crearBoton (texto) { // Creo el elemento const boton = document.createElement('button') // Le pongo como texto lo que me pasen como parámetro boton.innerHTML = texto // Le añado una clase para hacer bonito boton.className = 'btn btn-success m-1' // Capturo el evento click para que cuando pulsen el botón comprobemos // SI el usuario va bien o ha perdido boton.addEventListener('click', pulsado) // Devuelvo el botón return boton } function arrayDesordenado (cantidad) { // Creo un array de números del 1 a cantidad const numeros = [] for (let i = 0; i < cantidad; i++) { numeros.push(i + 1) } // Desordeno el array for (let i = 0; i < 10; i++) { numeros.sort(function (a, b) { return 0.5 - Math.random() }) } // Devuelvo el array return numeros } function pulsado () { // Miro cual es el número que me han pulsado (el texto del botón) const numeroPulsado = parseFloat(this.innerHTML) if (numeroAPulsar == numeroPulsado) { // Si el número pulsado es el que se tenía que pulsar // Deshabilito el botón this.disabled = 'true' // Le cambio la clase this.className = 'btn m-1' // Le pongo color rojo this.style.color = 'red' // El número a pulsar es uno más numeroAPulsar++ // SI ya hemos pulsado todos los números el usuario ha ganado if (numeroAPulsar > maximo) { alert('Has ganado ¡BRAVO!') document.getElementById('tablero').innerHTML = '' } } else { // Si el número no es el que se tenía que pulsar el usuario ha perdido alert('Has perdido ¡JAJAJAJA!') document.getElementById('tablero').innerHTML = '' } }