Symbols

In the SandPond engine, there are already some in-built input and output symbols. You can also make your own symbols with these keywords. Define what they do by writing a JavaScript function. Name the arguments you want to use from the event arguments list.

Given

All given inputs must be true for a rule to be chosen.

given W (element) => element == Water

W => _
@    @

If there is a water atom above me, delete it.

Change

change outputs say what atom to put in a space.

change W () => new Water()

@ => @
_    W

This makes a water atom and places it below.

Keep

keep outputs don't do anything. They just leave that space how it is.

keep n

@ => n

This does nothing...

Keeps can still have a function like usual, so they are useful for side-effects.

keep n () => print("I'm doing nothing!")

@ => n

Select

select inputs save data that can be used in an output.

given W (element) => element == Water
select W (atom) => atom
change W (selected) => selected

@ => W
W    @

This selects a water atom below, and swaps places with it.

Check

All check inputs must be true for a rule to be chosen. Only one check function is done per symbol. Unlike given, it is never cached during an event.

given W (element) => element === Water
check W () => Math.random() < 0.2

WWW   ...
 @ =>  _

Origin

origin symbols show where the centre of the diagram is.

origin O

O => _
_    @

Last updated