Traffic Control
Documentación Técnica
1. Ficha Técnica
- Nombre: Traffic Control
- ODS: ODS 11 - Ciudades y Comunidades Sostenibles
- Objetivo: Gestionar los semáforos de un cruce clicando alternativamente en el centro de la intersección para prevenir accidentes y evitar atascos desmedidos prolongados.
2. Mecánica y Flujo de Juego
Las mecánicas emulan una vía de un sólo carril por dirección cortada perpendicularmente (Intersección Tipo Cruz).
- El semáforo interno y visual es estrictamente Binario (True = Horizontal fluye, Vertical Pare; False = la inversa). Los ciclos de verde, ámbar, rojo estandarizados simplifican a Verde y Rojo puro.
- Coches spawnan proceduralmente fuera de la pantalla (Coords -10% o 110%) en uno de 4 vectores fijos (Right, Left, Up, Down).
- Adquieren un loop de movimiento continuo, detestando frenar y evaluando las cajas hitboxes de los coches circundantes y semáforos colindantes.
3. Lógica de Programación
El código requiere una intensa verificación de reglas matemáticas para simular el Control de Flujo real y el "Pathfinding" atascado en un raíl.
Detección Frontal de Autonómos ("Smart Braking")
Los coches detienen todo incremento en su speed (Seteando car.stopped = true) si se topan con el nodo del Semáforo en estado rojo o si topan con un gemelo idéntico a pocos píxeles de morro a retaguardia, apilándose ordenadamente y originando la dinámica.
El Control Binario
Un evento Click anclado al objeto tcIntersection simplemente muta e invierte una variable booleana unificada `horizontalGreen = !horizontalGreen`, repintando inmediatamente las variables en DOM y CSS y re-anudando las condicionales de frenado del bucle superior.
4. Sistema de Victoria/Derrota
Victory: Traffic Control sobrescribe el método tradicional handleTimeout() de base-game.js. Acabar (sobrevivir) al contador universal dictamina la victoria automática, puesto que se aguantó el flujo estipulado.
Defeat: Provocada súbitamente de dos formas:
- 1.
triggerCrash(): Comprobación colisional entre dos coches, sin importar qué bando chocó. Si se intersectan, explotan en CSS y fracasas al intante. - 2.
triggerTrafficJam(): Analizador continuo que verifica si se acumularon >3 coches en la cola de frenado de la misma dirección. Penaliza demorar el clic excesivamente. Ambos llaman athis.finish(false).
