.edge
Vale 1 cuando el bot está apoyado contra el borde del mundo; sirve para no quedarse pegado a la pared.
Datos
- Dirección
- 214
- Nombre
.edge- Tipo
- Sentido: el motor la escribe para que el ADN la lea
- Grupo
- Posición y entorno
- Quién la escribe
- El motor, en la fase de fuerzas y choques: 1 si el bot toca una pared del mundo. Lo leés en el ciclo siguiente.
- Cuándo se borra
- El motor, cuando se borran los sentidos, justo después de tu ADN.
- Rango
- 0 o 1.
- Mutaciones
- la eligen como lectura (
*)
.edge avisa que el bot llegó al borde del mundo: el motor la pone en 1 cuando el bot quedó apoyado contra la pared en el paso de física, y la borra después de que corre el ADN del ciclo siguiente. Es decir que tu ADN la ve en 1 durante un solo ciclo, el que sigue al contacto; si el bot se queda empujando contra la pared, se vuelve a encender en cada ciclo.
Solo existe en los mundos con paredes. Si la simulación conecta los bordes (el bot que sale por un lado entra por el opuesto), .edge no se enciende en esos bordes; si conecta solo los de un eje, la encienden los otros dos.
Un bot contra la pared no rebota: el motor lo deja apoyado en el borde, y si sigue empujando hacia afuera se queda ahí, a veces trabado en una esquina. Peor: su .velscalar sigue diciendo que va rápido. Por eso conviene reaccionar a .edge girando, como hace Anon Terifica 2, del Bestiario:
cond
*.edge 0 !=
start
100 .aimsx store
stopConviene que el giro sea chico: como .edge sigue encendida mientras el bot esté contra la pared, un giro de un cuarto de vuelta por ciclo puede dejarlo dando vueltas en una esquina, mientras que de a 100 termina apuntando hacia afuera.
Los choques con otros bots no la encienden; para eso están .hit y sus direcciones.