Ruleta Adrià

🎡Abrir la ruleta 💻Código

Guía de uso

Ruleta Adrià es una ruleta de sorteos con un contador incorporado, hecha con HTML, CSS y JavaScript puro: sin frameworks, sin dependencias y sin servidor. Todo ocurre en tu navegador. Esta guía repasa cada función, de arriba abajo.

Empezar en treinta segundos

  1. Abre la ruleta y despliega 📝 Entradas en el panel de la derecha.
  2. Escribe los nombres, uno por línea. La ruleta se redibuja sola.
  3. Pulsa el botón GIRAR del centro (o la tecla Espacio).

No hay que registrarse ni guardar nada a mano: el estado se conserva solo en tu navegador y sigue ahí la próxima vez que entres.

En pantallas estrechas el panel se esconde. El botón ☰ Panel de la esquina superior derecha lo abre y lo cierra.

Entradas

El cuadro de texto es la única fuente de verdad: una línea, una porción de la ruleta. Las líneas vacías se ignoran y el contador de la pestaña te dice cuántas entradas hay. No hace falta pulsar «guardar»: se aplica al escribir.

Mezclar Baraja el orden de las entradas con Fisher–Yates, usando la misma fuente de azar que el sorteo.
Quitar duplicados Compara sin distinguir mayúsculas y conserva la primera aparición. Pide confirmación antes.
Vaciar Borra todas las entradas de golpe. También pide confirmación.

Los duplicados no se quitan solos a propósito: repetir un nombre es la forma de darle más peso en el sorteo. Dos líneas «Ana» = el doble de probabilidad.

Girar y ganar

El botón central gira la ruleta; la aguja de arriba marca el resultado. Mientras gira suena un tic por cada porción que pasa, cada vez más lento, y al parar se anuncia el ganador con un diálogo y un chorro de burbujas.

Qué hacer con el ganador

  • Quitarlo — el diálogo del ganador ofrece eliminarlo de la lista.
  • Que se quite solo — activa «Eliminar el ganador automáticamente» en ⚙️ Opciones. Aparece un aviso con Deshacer por si te arrepientes.
  • Dejarlo — no toques nada y seguirá compitiendo en el siguiente giro.

La duración del giro se ajusta entre 2 y 14 segundos en ⚙️ Opciones. Debajo de la ruleta se queda visible el último ganador.

El azar, en serio

Casi todas las ruletas de la web hacen lo mismo: lanzan una animación con un ángulo aleatorio y miran dónde ha caído. Eso reparte el azar según cómo se acumulan los redondeos del ángulo, no según las entradas. Aquí el orden es el contrario:

  1. Primero se sortea el ganador entre las entradas.
  2. Después se calcula la animación para que la aguja caiga exactamente ahí.

El sorteo usa crypto.getRandomValues() —el generador criptográfico del navegador, no Math.random()— con rechazo de módulo: si el número obtenido cae en el resto que no reparte por igual entre todas las entradas, se descarta y se pide otro. Así ninguna porción sale favorecida, ni siquiera un poco.

Consecuencia práctica: con 3 entradas cada una tiene exactamente un 33,333… %, y el punto exacto donde para la aguja dentro de la porción también es aleatorio, para que no se note el truco.

Presets

Un preset guarda una lista de entradas con nombre, para no reescribirla cada vez: «Clase de 2º», «Qué cenamos», «Sorteo del viernes»…

BotónQué hace
📂 CargarSustituye las entradas actuales por las del preset elegido.
➕ Guardar como…Crea un preset nuevo con las entradas de ahora mismo.
♻️ ActualizarSobrescribe el preset seleccionado con la lista actual.
✏️ RenombrarLe cambia el nombre.
❌ BorrarLo elimina, con confirmación.

Cargar un preset no lo bloquea: puedes editar las entradas después. Si quieres conservar los cambios, pulsa ♻️ Actualizar; si no, vuelve a cargarlo.

Historial

Los 50 últimos ganadores con su hora, del más reciente al más antiguo. Sirve para resolver el clásico «¿pero no le tocó ya a este?». El botón 🧽 Limpiar historial lo vacía sin tocar las entradas.

Contador

La segunda pestaña es una cuenta atrás con el mismo aire: un aro que se vacía, dígitos grandes y aviso sonoro al terminar. Pensada para turnos, juegos de mesa, exámenes o cualquier cosa con tiempo.

Poner el tiempo

  • Tiempos rápidos — las fichas de debajo del aro. De fábrica vienen 0:30, 1:00, 4:00 y 5:00; un toque y ya está.
  • A medida — los campos de minutos y segundos del panel, y luego ✔️ Aplicar tiempo.

Personalizar los tiempos rápidos

Cada ficha se puede editar con el lápiz (✏️) o borrar, y con ➕ Añadir tiempo creas los tuyos. ↩️ Valores de fábrica devuelve los cuatro originales. En los diálogos el tiempo se escribe en texto libre:

EscribesSe entiende como
1:301 minuto y 30 segundos
9090 segundos → 1:30
2m2 minutos
45s45 segundos

Opciones del contador

  • Reiniciar solo al terminar — vuelve a empezar sin tocar nada.
  • Pitido en los últimos 5 segundos — cuenta atrás sonora.
  • Tic-tac cada segundo — el latido de fondo, por si molesta.

No se desfasa. El tiempo restante se calcula contra la marca de tiempo de finalización, no sumando intervalos. Aunque el navegador ralentice la pestaña en segundo plano, al volver el número es el correcto.

Al llegar a cero: cuatro campanadas, el aro se pone naranja, suben burbujas y salta un diálogo. Espacio inicia y pausa mientras estés en esta pestaña.

Sonido y efectos

La interfaz responde a casi todo: un tic al pasar por encima de los botones, un clic al abrir un cajón, el traqueteo del giro, la fanfarria del ganador…

  • 🔊 Sonido — silencia o reactiva todo de golpe.
  • Volumen — el deslizador de ⚙️ Opciones.
  • 🫧 Efectos — apaga burbujas, peces y cáusticas. Útil en equipos justos o si prefieres un fondo tranquilo.

Los navegadores no dejan sonar nada hasta que interactúas con la página: el primer clic desbloquea el audio. Si el sistema tiene activado «reducir movimiento», las animaciones se moderan solas.

Atajos de teclado

TeclaQué hace
Espacio · Enter Gira la ruleta, o inicia y pausa el contador, según la pestaña abierta.
1Ir a la pestaña Ruleta.
2Ir a la pestaña Contador.
EscCierra el diálogo abierto.

Los atajos se desactivan mientras escribes en un campo de texto o hay un diálogo delante, para que Espacio siga siendo un espacio.

Tus datos no salen de aquí

No hay servidor, ni cuentas, ni analítica, ni peticiones a terceros: las fuentes, los sonidos y los dibujos están en la propia página. Todo lo que escribes vive en el localStorage de tu navegador, en tres claves:

ClaveContenido
ruletaAdria.state.v1 Entradas, historial, opciones, preset activo y pestaña abierta.
ruletaAdria.presets.v1 La lista de presets guardados.
ruletaAdria.timer.v1 Tiempos rápidos, duración, tiempo restante y opciones del contador.

⚠️ Restablecer todo (en ⚙️ Opciones) borra esas tres claves y deja la ruleta como recién instalada: entradas, presets, historial y tiempos rápidos. No se puede deshacer. Borrar los datos del sitio en el navegador hace lo mismo.

Easter eggs

El fondo no es sólo decorado. Prueba a tocar cosas:

El logo Salta, hace burbujas y suena. Al séptimo toque, algo cruza la pantalla.
Los peces Se asustan y huyen a toda prisa un rato. Cada siete sustos protestan.
Las algas Se agitan y sueltan burbujitas al tocarlas.

Con los efectos apagados (🫧) no hay peces que espantar.

Usarla en tu ordenador

No hay nada que compilar ni instalar. Clona el repositorio y abre index.html:

git clone https://github.com/AdriaBC06/ruleta-adria.git
cd ruleta-adria

Si el navegador bloquea las fuentes o los sonidos al abrir el archivo con file://, levanta un servidor local —cualquiera sirve:

python3 -m http.server 8000
# y entra en http://localhost:8000

Funciona sin conexión: es HTML, CSS y JavaScript con todos los recursos dentro de la carpeta. También puedes publicarla en tu propio GitHub Pages, Netlify o donde quieras, subiendo la carpeta tal cual.

Licencias y créditos

  • CódigoGPL-3.0-or-later. Puedes usarlo, estudiarlo, modificarlo y redistribuirlo, siempre que lo que publiques a partir de él siga siendo libre bajo la misma licencia.
  • Arte y sonidosKenney, dominio público (CC0 1.0): los peces y algas del Fish Pack y los efectos de Interface Sounds.
  • TipografíasIstok Web (la alternativa libre más cercana a Frutiger, la tipografía que da nombre a la estética) y Quicksand, ambas con licencia SIL OFL 1.1 y autoalojadas.

El detalle archivo por archivo, con las modificaciones aplicadas a cada recurso, está en CREDITS.md.