Control Flow (Printable)

ask-list-of-turtles `list-of-turtle-ids ilist` [Observer, Turtle]

Turtles whose `who` numbers (ID numbers) are in `list-of-turtle-ids` run `ilist`. The caller of this command waits for it to finish before continuing. If some invalid `who` numbers make up `list-of-turtle-ids`, they are ignored.

ask-patches `ilist` [Observer]

This observer command asks all of the patches to run the `ilist`. The observer will wait for the patches to finish before moving on.

ask-patch-at `xcor ycor ilist` [Observer, Turtle]

This command asks the patch which is `xcor` units in the x direction and `ycor` units in the y direction away from the caller to run the `ilist`. The caller of this command will wait for the patch to finish before moving on. The observer is considered to be located at 0 0.

ask-turtle `number ilist` [Observer]

Asks turtle with ID number `number` to perform `ilist`. The observer will wait for all of the turtles to finish before continuing.

ask-turtles `ilist` [Observer]

Asks all turtles to run `ilist`. The observer will wait for all of the turtles to finish before continuing.

case `variable` `[anything1 ilist1` `anything2 ilist2]` [Observer, Turtle]

Checks if the first argument `variable` is equal to any of the `anythings` in the list. If it is equal, the corresponding `ilist` is executed and control skips to the end of the `case` statement. If nothing matches, no `ilists` are executed and control skips to the end of the `case` statement.

Sample usage:

`case temperature
[
"cold" [show "boy, it's cold!"]
"warm" [show "mmmm. nice."]
"hot" ["wow, it's hot!"]
]`

every `number list to run` [Observer, Turtle]

`every` is just like `loop`, in that it runs its `list to run` forever, but it waits `number` seconds between each iteration.

if `condition ilist` [Observer, Turtle]

Do `ilist` if `condition` reports true.

ifelse `condition ilist1 ilist2` [Observer, Turtle]

Do `ilist1` if `condition` reports true, otherwise do `ilist2`.

ignore `whatever` [Observer, Turtle]

Ignores the statement immediately following it.

let `variable value` [Observer, Turtle]

Declares `variable` as a local variable and assigns `value` to it. All variables must have names which begin with a colon. See the Variables page for more information on local variables.
Example:
let [:myvar 6]

loop `ilist` [Observer, Turtle]

Do `ilist` forever.

output `something` [Observer, Turtle]

Exits the current procedure and returns `something`

repeat `number ilist` [Observer, Turtle]

Do `ilist` `number` times.

resett, reset-timer[Observer, Turtle]

Resets the timer.

startup [Observer]

This is a reserved observer procedure name. Anything within the `startup` procedure will be executed each time the project is opened.

stop [Observer, Turtle]

Tells the current procedure to stop running.

stopall [Observer, Turtle]

Tells all everything to stop running, including procedures, buttons, monitors, and command centers.

timer [Observer, Turtle]

Reports the curent value of the timer.

wait `number` [Observer, Turtle]

Caller waits `number` seconds before continuing.

wait-until `predicate` [Observer, Turtle]

Caller waits until `predicate` is true.