DarwinBotsManual
Abrir la app EnglishEN

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ónSysvarTipoResumen
1.upComandoEmpuja al bot hacia adelante, en la dirección en que apunta; hay que escribirla en cada ciclo en que quieras empujar.
2.dnComandoEmpuja al bot hacia atrás, en sentido contrario a donde apunta, sin darlo vuelta.
3.sxComandoEmpuja al bot de costado hacia su izquierda, sin cambiar hacia dónde apunta.
4.dxComandoEmpuja al bot de costado hacia su derecha, sin cambiar hacia dónde apunta.
5.aimdx .aimrightComandoGira 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 .aimleftComandoGira al bot hacia la izquierda (contra las agujas del reloj) la cantidad que escribas, en una escala donde 1256 es una vuelta completa.
11.maxvelSentidoLa velocidad máxima que permite la simulación; ningún bot puede ir más rápido.
18.aimSentidoHacia 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.setaimComandoGira 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.velscalarSentidoLa rapidez del bot: el tamaño de su velocidad, sin importar en qué dirección va.
197.velsxSentidoLa velocidad de costado del bot hacia su izquierda: es .veldx con el signo cambiado.
198.veldxSentidoLa parte de la velocidad del bot que va de costado hacia su derecha; negativa si se desliza a la izquierda.
199.veldnSentidoLa velocidad del bot hacia atrás: es .velup con el signo cambiado.
200.velup .velSentidoLa parte de la velocidad del bot que va hacia adelante, en la dirección en que apunta; negativa si retrocede.
215.fixedSentidoVale 1 si el bot está clavado en su lugar y 0 si se puede mover.
216.fixposComandoClava 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
stop

El 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.