Ojos
Los nueve ojos del bot, el ojo con foco y las celdas que apuntan y ensanchan cada ojo: cómo ve un bot y qué número le da cada ojo.
| Dirección | Sysvar | Tipo | Resumen |
|---|---|---|---|
| 501 | .eye1 | Sentido | El ojo centrado 40 grados a la izquierda del frente: vale 0 si no ve nada y más cuanto más cerca está lo que ve. |
| 502 | .eye2 | Sentido | El ojo centrado 30 grados a la izquierda del frente: vale 0 si no ve nada y más cuanto más cerca está lo que ve. |
| 503 | .eye3 | Sentido | El ojo centrado 20 grados a la izquierda del frente: vale 0 si no ve nada y más cuanto más cerca está lo que ve. |
| 504 | .eye4 | Sentido | El ojo centrado 10 grados a la izquierda del frente: vale 0 si no ve nada y más cuanto más cerca está lo que ve. |
| 505 | .eye5 | Sentido | El ojo frontal: vale 0 si no hay nada adelante y más cuanto más cerca está lo que el bot tiene enfrente; es el sentido más usado del ADN. |
| 506 | .eye6 | Sentido | El ojo centrado 10 grados a la derecha del frente: vale 0 si no ve nada y más cuanto más cerca está lo que ve. |
| 507 | .eye7 | Sentido | El ojo centrado 20 grados a la derecha del frente: vale 0 si no ve nada y más cuanto más cerca está lo que ve. |
| 508 | .eye8 | Sentido | El ojo centrado 30 grados a la derecha del frente: vale 0 si no ve nada y más cuanto más cerca está lo que ve. |
| 509 | .eye9 | Sentido | El ojo centrado 40 grados a la derecha del frente: vale 0 si no ve nada y más cuanto más cerca está lo que ve. |
| 510 | .eyef | Sentido | Lo que ve el ojo con foco: repite el valor del ojo que elegiste con .focuseye, o el de .eye5 si no elegiste ninguno. |
| 511 | .focuseye | Comando | 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*. |
| 521 | .eye1dir | Comando | Gira el ojo 1 respecto de su lugar de fábrica (40 grados a la izquierda): positivo hacia la izquierda, negativo hacia la derecha; 1256 es una vuelta. |
| 522 | .eye2dir | Comando | Gira el ojo 2 respecto de su lugar de fábrica (30 grados a la izquierda): positivo hacia la izquierda, negativo hacia la derecha; 1256 es una vuelta. |
| 523 | .eye3dir | Comando | Gira el ojo 3 respecto de su lugar de fábrica (20 grados a la izquierda): positivo hacia la izquierda, negativo hacia la derecha; 1256 es una vuelta. |
| 524 | .eye4dir | Comando | Gira el ojo 4 respecto de su lugar de fábrica (10 grados a la izquierda): positivo hacia la izquierda, negativo hacia la derecha; 1256 es una vuelta. |
| 525 | .eye5dir | Comando | Gira el ojo 5 respecto de su lugar de fábrica (justo adelante): positivo hacia la izquierda, negativo hacia la derecha; 1256 es una vuelta. |
| 526 | .eye6dir | Comando | Gira el ojo 6 respecto de su lugar de fábrica (10 grados a la derecha): positivo hacia la izquierda, negativo hacia la derecha; 1256 es una vuelta. |
| 527 | .eye7dir | Comando | Gira el ojo 7 respecto de su lugar de fábrica (20 grados a la derecha): positivo hacia la izquierda, negativo hacia la derecha; 1256 es una vuelta. |
| 528 | .eye8dir | Comando | Gira el ojo 8 respecto de su lugar de fábrica (30 grados a la derecha): positivo hacia la izquierda, negativo hacia la derecha; 1256 es una vuelta. |
| 529 | .eye9dir | Comando | Gira el ojo 9 respecto de su lugar de fábrica (40 grados a la derecha): positivo hacia la izquierda, negativo hacia la derecha; 1256 es una vuelta. |
| 531 | .eye1width | Comando | Ensancha el ojo 1: cuanto más ancho, más campo cubre pero menos lejos ve y más chicos son sus números. |
| 532 | .eye2width | Comando | Ensancha el ojo 2: cuanto más ancho, más campo cubre pero menos lejos ve y más chicos son sus números. |
| 533 | .eye3width | Comando | Ensancha el ojo 3: cuanto más ancho, más campo cubre pero menos lejos ve y más chicos son sus números. |
| 534 | .eye4width | Comando | Ensancha el ojo 4: cuanto más ancho, más campo cubre pero menos lejos ve y más chicos son sus números. |
| 535 | .eye5width | Comando | Ensancha el ojo 5: cuanto más ancho, más campo cubre pero menos lejos ve y más chicos son sus números. |
| 536 | .eye6width | Comando | Ensancha el ojo 6: cuanto más ancho, más campo cubre pero menos lejos ve y más chicos son sus números. |
| 537 | .eye7width | Comando | Ensancha el ojo 7: cuanto más ancho, más campo cubre pero menos lejos ve y más chicos son sus números. |
| 538 | .eye8width | Comando | Ensancha el ojo 8: cuanto más ancho, más campo cubre pero menos lejos ve y más chicos son sus números. |
| 539 | .eye9width | Comando | Ensancha el ojo 9: cuanto más ancho, más campo cubre pero menos lejos ve y más chicos son sus números. |
Un bot tiene nueve ojos, de .eye1 a .eye9, repartidos como un abanico alrededor de hacia donde apunta (.aim). Cada ojo es una celda que el motor llena en cada ciclo con un número: 0 si no ve nada, y más grande cuanto más cerca está lo que ve. Es el sentido más usado de todos; casi cualquier bot que busca comida o pelea empieza con algo como *.eye5 0 >. Cómo funciona la vista por dentro lo cuenta Visión.
Dónde mira cada ojo
Por defecto cada ojo abarca 10 grados. .eye5 mira justo adelante; los de número más bajo miran a la izquierda y los más altos a la derecha, de a 10 grados: .eye1 está centrado 40 grados a la izquierda y .eye9 40 a la derecha. Entre los nueve cubren 90 grados. Un objeto grande o cercano puede aparecer en varios ojos a la vez.
Qué número dan
El valor depende de la distancia entre los bordes y del alcance del ojo. Con el ojo de fábrica, que llega a unas 1440 unidades:
| Distancia entre bordes | Valor |
|---|---|
| tocándose o encimados | 32000 |
| casi tocándose | unos 20700 |
| 134 | 100 |
| 278 | 25 |
| 710 | 4 |
| 1430 | 1 |
Cada ojo da el valor de lo más cercano que ve. De noche el alcance baja un 20%, y en modo estanque se acorta con la profundidad.
Configurar los ojos
Los ojos se pueden reapuntar con .eye1dir….eye9dir y ensanchar con .eye1width….eye9width; un ojo más ancho ve menos lejos y da números más chicos a la misma distancia. .focuseye elige cuál es el ojo con foco: su valor se copia en .eyef y lo que él ve llena las celdas de lo que se ve. Todas estas celdas de configuración quedan como las dejás; alcanza con escribirlas una vez, por ejemplo en el primer ciclo:
' ojo frontal un poco más ancho y foco en el ojo frontal
cond
*.robage 0 =
start
35 .eye5width store
0 .focuseye store
stopLo que ven los ojos llega con un ciclo de atraso: lo escribe el motor después de mover a todos (ver Ejecución y costos).