DarwinBotsManual
Abrir la app EnglishEN

dupbool

Duplica el valor de arriba de la pila booleana. Sirve para guardar una condición y usarla de nuevo, por ejemplo para anidar condiciones en el cuerpo.

Datos

Palabra
dupbool
Familia
Lógicos
Pila booleana
saca 1, pone 2
Qué hace
Copia el tope de la pila booleana. Con la pila vacía no hace nada, a diferencia de dup.
Costo
Lógica
Se ejecuta en
dentro de un gen: en la condición (cond) y en el cuerpo (start o else)

dupbool apila una copia del valor de arriba de la pila booleana. Con la pila vacía no hace nada.

Su uso es anidar condiciones dentro del cuerpo: guardás una copia de la condición de afuera, la combinás con una de adentro usando and, y al terminar un dropbool te devuelve la de afuera intacta para la siguiente. El bot This'n'That 1.01 (Peksa), del Bestiario, lo hace para equilibrar energía (.nrg) y cuerpo (.body):

' This'n'That 1.01 (Peksa): equilibra energía y cuerpo
cond
start
  *.nrg *.body !%= dupbool
  *.nrg *.body > and
  *.nrg *.body sub 100 ceil .strbody store dropbool
  *.body *.nrg > and
  *.body *.nrg sub 100 ceil .fdbody store
stop

La condición de afuera es «energía y cuerpo difieren en más de un 10 %» (!%=). La pila booleana pasa por:

Después dePila booleana (tope a la derecha)
!%= dupbooldifieren, difieren
> anddifieren, (difieren y sobra energía)
dropbooldifieren
> and(difieren y sobra cuerpo)

Así, si sobra energía la pasa al cuerpo (.strbody) y si sobra cuerpo lo pasa a energía (.fdbody), de a 100 como mucho (ceil se queda con el menor). Un bot que arranca con 3000 de energía y 1000 de cuerpo se detiene en 1300 y 1170.