← Volver al Índice

Veredicto Justo

Documentación Técnica

1. Ficha Técnica

  • Nombre: Veredicto Justo
  • ODS: ODS 16 - Paz, Justicia e Instituciones Sólidas
  • Objetivo: Entrenar la puntería visual ("Aiming") pinchando sobre los iconos de Justicia de la balanza, evitando pinchar accidentalmente o impactar cualquier icono de billetes o sobornos (Corrupción).

2. Mecánica y Flujo de Juego

Las mecánicas actúan como un Simulador de Física de Bola/Rebote 2D puro en el navegador.

  1. La pantalla se inunda de dos tipos de nodos DOM (`Justicia` y `Corrupción`).
  2. Cada nodo hereda una velocidad de vector X, Y asignada matemáticamente al vuelo (`vx`, `vy`), forzándolo a transitar en pantalla mediante bucles Frame.
  3. Cuando impactan en los márgenes máximos 0-100% Top y Right, su velocidad es automáticamente invertida simulando un rebote sin pérdida cinética.
  4. El humano debe pulsar sobre la balanza antes que desvanezca en el caos.

3. Lógica de Programación

Construir rebotes puros amerita calcular las esquinas exactas considerando los getBoundingClientRect del nodo visual para no cortar las texturas del Emoji.

Instanciación Dimensional

let icon = { ... }; // Inicializamos el vector pseudo-aleatorio garantizando movimiento (0.5 a 1) * multiplier icon.vx = (Math.random() < 0.5 ? 1 : -1) * (0.5 + Math.random() * 0.5) * this.speedMultiplier; icon.vy = (Math.random() < 0.5 ? 1 : -1) * (0.5 + Math.random() * 0.5) * this.speedMultiplier;

Rebotar (Engine Logic)

// Si X toca pared izquierda (<0%) o derecha (> width de container), invierte la polaridad horizontal de viaje if (icon.x <= 0 || icon.x >= 100 - xPercent) { icon.vx *= -1; } if (icon.y <= 0 || icon.y >= 100 - yPercent) { icon.vy *= -1; }

La combinación de valores pre-multiplicadores speedMultiplier, los cuales el usuario atenuó a 0.55 en el Nivel 3 para facilitar el rastreo y clics en resoluciones estándar, permite ajustar el Tuning sin romper el motor matemático.

4. Sistema de Victoria/Derrota

Victoria: Clicar todos los iconos benignos sin fallar ni omitir ninguno. this.justiciaCount === 0 dicta final satisfactorio.

Derrota: Dispararle/Pinchar erróneamente sobre el billete del soborno y agotar el TimeOut base (General timeout rules of `BaseGame`).

5. Limitaciones Teóricas e Implementaciones

Las bolas en este simulador rebotan lógicamente *solo contra la caja-contenedor global*. No se incluyó una iteración costosa N*N rect-overlap para chocar los iconos entre ellos porque perjudicaba la responsividad general de la página para la UI del Mouse Cursor, optando astutamente por priorizar fluidez frente a fidelidad física minúscula.