.aim
Hacia dónde apunta el bot, en una escala de 0 a 1255 donde 0 es la derecha de la pantalla y 314 es arriba.
Datos
- Dirección
- 18
- Nombre
.aim- Tipo
- Sentido: el motor la escribe para que el ADN la lea
- Grupo
- Movimiento
- Quién la escribe
- El motor, en la fase de movimiento, después de girar al bot. Lo leés en el ciclo siguiente; los demás lo ven en
.refaim. - Cuándo se borra
- Nadie; el motor la reescribe en cada ciclo. Escribir en ella no gira al bot.
- Rango
- 0 a 1255 (1256 es una vuelta); puede salirse un poco si algo más hace girar al bot. Vale 0 en el primer ciclo de vida.
- Mutaciones
- la eligen como lectura (
*)
.aim es el rumbo del bot: hacia dónde mira, hacia dónde empuja .up y desde dónde se miden sus ojos. Una vuelta completa son 1256: 0 mira a la derecha de la pantalla, 314 hacia arriba, 628 a la izquierda y 942 hacia abajo. El motor la publica después de aplicar los giros de .aimsx, .aimdx y .setaim; escribir en ella no gira al bot.
Si el bot gira por otras causas (un lazo que lo retuerce, el movimiento browniano) el valor puede salirse un poco del rango 0-1255.
Los demás bots ven tu rumbo en .refaim cuando te miran. Para dar media vuelta alcanza con sumar media vuelta al rumbo actual:
' da media vuelta cuando algo lo toca por detrás
cond
*.hitdn 0 !=
start
*.aim 628 add .setaim store
stop.setaim acepta cualquier número y se queda con su resto de dividir por 1256, así que no hace falta corregir la suma.