Buffer input and output.
author |
Steve Losh <steve@stevelosh.com> |
date |
Wed, 31 Aug 2011 18:50:12 -0400 |
parents |
d65fe7dddf1f |
children |
(none) |
Loops
=====
Another way your bots will interact with the world is through loops.
Loops are functions that repeatedly run with a delay in between each run. They
return a list of Actions that you want your bot to perform, just like event handlers.
Loops are pure functions that should take a single argument: the bot.
Adding Loops
------------
To add a loop to your bot, you first need to create the loop function::
(defn jump [bot]
[(clojurecraft.actions/jump bot)])
Now you can add it to the bot::
(clojurecraft.loops/add-loop bot #'jump 3000 :jump-loop)
The first argument to the ``add-loop`` function is your bot.
Next is a symbol to your loop function. The reason for passing a symbol is the same
as the reason you pass a symbol to event handlers.
Next is the number of milliseconds you want to wait in between each run of the loop
function.
Finally you must pass a "loop ID" keyword. It can be anything you like, but it must
be unique for each loop added to a given bot. This is what you'll use to remove
the loop from the bot later.
This example adds a loop to the bot that will make it jump every three seconds.
Removing Loops
--------------
Removing a loop from a bot is as simple as calling ``remove-loop`` with the bot and
the loop ID you used when adding the loop::
(clojurecraft.loops/remove-loop bot :jump-loop)