Movimiento
Las sysvars para empujar al bot, girarlo, saber hacia dónde apunta y a qué velocidad va, y dejarlo clavado en un lugar.
| Dirección | Sysvar | Tipo | Resumen |
|---|---|---|---|
| 1 | .up | Comando | Empuja al bot hacia adelante, en la dirección en que apunta; hay que escribirla en cada ciclo en que quieras empujar. |
| 2 | .dn | Comando | Empuja al bot hacia atrás, en sentido contrario a donde apunta, sin darlo vuelta. |
| 3 | .sx | Comando | Empuja al bot de costado hacia su izquierda, sin cambiar hacia dónde apunta. |
| 4 | .dx | Comando | Empuja al bot de costado hacia su derecha, sin cambiar hacia dónde apunta. |
| 5 | .aimdx .aimright | Comando | Gira al bot hacia la derecha (en el sentido de las agujas del reloj) la cantidad que escribas, en una escala donde 1256 es una vuelta completa. |
| 6 | .aimsx .aimleft | Comando | Gira al bot hacia la izquierda (contra las agujas del reloj) la cantidad que escribas, en una escala donde 1256 es una vuelta completa. |
| 11 | .maxvel | Sentido | La velocidad máxima que permite la simulación; ningún bot puede ir más rápido. |
| 18 | .aim | Sentido | 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. |
| 19 | .setaim | Comando | Gira al bot hasta un rumbo absoluto: escribís hacia dónde querés que apunte y el motor lo pone ahí en el mismo ciclo. |
| 196 | .velscalar | Sentido | La rapidez del bot: el tamaño de su velocidad, sin importar en qué dirección va. |
| 197 | .velsx | Sentido | La velocidad de costado del bot hacia su izquierda: es .veldx con el signo cambiado. |
| 198 | .veldx | Sentido | La parte de la velocidad del bot que va de costado hacia su derecha; negativa si se desliza a la izquierda. |
| 199 | .veldn | Sentido | La velocidad del bot hacia atrás: es .velup con el signo cambiado. |
| 200 | .velup .vel | Sentido | La parte de la velocidad del bot que va hacia adelante, en la dirección en que apunta; negativa si retrocede. |
| 215 | .fixed | Sentido | Vale 1 si el bot está clavado en su lugar y 0 si se puede mover. |
| 216 | .fixpos | Comando | Clava al bot en su lugar mientras valga más de 0; con 0 o un negativo lo suelta. |
Un bot no camina: se empuja. Las cuatro órdenes de movimiento, .up, .dn, .sx y .dx, son empujones hacia adelante, hacia atrás, a la izquierda y a la derecha, siempre medidos desde donde apunta el bot. El motor las aplica en el mismo ciclo y las deja en 0, así que para seguir empujando hay que escribirlas cada ciclo. Cada empujón se suma a la velocidad que ya traía: es una aceleración, no una velocidad.
Para girar hay dos caminos. .aimsx y .aimdx giran tanto hacia la izquierda o la derecha; .setaim gira hasta un rumbo absoluto. El rumbo actual se lee en .aim. Los ángulos se miden en una unidad propia: una vuelta completa son 1256, así que 314 es un cuarto de vuelta. 0 mira a la derecha de la pantalla, 314 hacia arriba, 628 a la izquierda y 942 hacia abajo.
Las de velocidad cuentan cómo se movió el bot en el último ciclo: .velup y .veldn hacia adelante y atrás, .veldx y .velsx de costado, y .velscalar la rapidez total. .maxvel dice el tope que impone la simulación. Por último, .fixpos clava al bot en su lugar y .fixed informa si está clavado.
Las más usadas son .up y .setaim: apuntar y avanzar. Este bot avanza siempre y, mientras está contra el borde del mundo (lo avisa .edge), gira un poco en cada ciclo hasta despegarse:
cond
start
20 .up store
stop
cond
*.edge 0 !=
start
100 .aimsx store
stopEl costo de moverse y de girar depende de la configuración de la simulación (ver Ejecución y costos), y la física completa está en Física.