DarwinBotsManual
Abrir la app EnglishEN

.focuseye

Elige cuál de los nueve ojos tiene el foco: el que se copia en .eyef y el que decide qué describen las celdas ref*.

Datos

Dirección
511
Nombre
.focuseye
Tipo
Comando: el bot la escribe y el motor la lee y, en general, la consume
Grupo
Ojos
Quién la escribe
Tu ADN.
Quién la lee
El motor, en la fase de acciones de cada ciclo, al llenar .eyef y las celdas de lo que se ve.
Cuándo se borra
Nunca: queda como la dejás.
Rango
−32000 a 32000; lo útil es de −4 a 4, y 0 es .eye5.
Mutaciones
la eligen como destino de un store

Un número que elige el ojo con foco. En 0 el foco es .eye5; cada unidad corre el foco un ojo hacia la derecha y cada unidad negativa uno hacia la izquierda:

.focuseye−4−3−2−101234
Ojo con foco.eye1.eye2.eye3.eye4.eye5.eye6.eye7.eye8.eye9

Fuera de ese rango no da error, pero la cuenta es rara: el motor le suma 4, le saca el signo y se queda con el resto de dividir por 9. Así 5 vuelve a .eye1, y −5 da .eye2 igual que −3. Mejor quedarse entre −4 y 4.

El ojo con foco hace dos cosas. Su valor se copia en .eyef, y lo más cercano que ve es lo que describen las celdas de lo que se ve (.refeye, .refnrg, .refxpos…). Si el ojo con foco no ve nada, esas celdas quedan en 0 aunque otro ojo esté viendo algo (salvo que el bot esté chocando con otro: un choque también las llena).

Es configuración: el motor la lee pero nunca la borra, así que alcanza con escribirla una vez. Este bot pone el foco en el ojo de la izquierda y guarda en la celda 50 la energía de lo que ese ojo ve:

cond
*.robage 0 =
start
-4 .focuseye store
stop

cond
*.eyef 0 >
start
*.refnrg 50 store
stop