DarwinBotsManual
Abrir la app EnglishEN

Flujo

cond, start, else, stop y end: los marcadores que arman los genes y deciden qué partes del ADN corren en cada ciclo.

Costo: Control de flujo; end no cuesta

OperadorQué hace
condAbre un gen nuevo: vacía la pila booleana y empieza la zona de condiciones, que termina en start o else.
startCierra las condiciones del gen y abre su cuerpo, que corre si todas dieron verdadero; sin cond delante, corre siempre.
elseAbre el cuerpo alternativo de un gen, que corre cuando las condiciones del cond dieron falso.
stopCierra el gen: lo que sigue hasta el próximo marcador no se ejecuta.
endTermina el ADN: lo que venga después no se ejecuta. El motor agrega uno al final si no lo ponés.

Estas palabras no calculan nada ni tocan la pila entera: ordenan el ADN en genes. El ADN se recorre entero, de izquierda a derecha, en cada ciclo, y cada marcador cambia el estado del intérprete al pasar:

La forma de casi todos los genes es cond … start … stop, con else cuando hace falta un «si no»:

' avanza mientras tenga más de 2000 de energía; si no, gira
cond
 *.nrg 2000 >
start
 20 .up store
else
 50 .aimdx store
stop

No hay anidamiento ni bloques: los marcadores son planos. Un cond en cualquier lugar abre un gen nuevo aunque al anterior le falte el stop, y lo que queda fuera de un gen (antes del primer marcador o entre un stop y el siguiente) no se ejecuta.

A diferencia del resto de las palabras, cond, start, else y stop se procesan siempre, aunque el gen se esté salteando, y cobran su costo cada vez. Después de cada uno el motor anota en .thisgene el número del gen en curso. end no cuesta nada: ahí se corta el recorrido.

Todo esto, con más ejemplos y la numeración de los genes, está en Genes: cond, start, else y stop. Cómo se combinan las condiciones está en Condiciones en línea.