-
Notifications
You must be signed in to change notification settings - Fork 52
Entities cheat sheet
- Char:
T
- Properties: Portable, Growable
- Capabilities: None
A tall, living entity made of a tough cellular material called "wood". They regrow after being harvested and are an important raw ingredient used in making a many different devices.
- Char:
y
- Properties: Portable
- Capabilities: None
A branch cut from a tree. It's as if the tree had to make a decision and was exploring two options.
- Char:
l
- Properties: Portable
- Capabilities: None
A wooden log, obtained by harvesting a tree and cutting off its branches.
- Char:
w
- Properties: Portable
- Capabilities: None
A wooden board.
- Char:
π
- Properties: Portable
- Capabilities: Make
A plain wooden workbench, providing space for you to make other things using the make
command.
Example:
make "log"
- Char:
o
- Properties: Portable
- Capabilities: None
A small rock.
- Char:
@
- Properties: Unwalkable
- Capabilities: None
A rock.
- Char:
∧
- Properties: Unwalkable
- Capabilities: None
A mountain.
- Char:
C
- Properties: Portable
- Capabilities: None
Raw copper ore. It is extremely useful for making wires, pipes, and other metal things. Often, in locations where copper can be found on the surface, additional copper can be found by drilling beneath the surface.
- Char:
|
- Properties: Portable
- Capabilities: None
Copper wire is very good at conducting electricity and useful for making various types of circuits and machines.
- Char:
8
- Properties: Portable
- Capabilities: Recursion
Two copper wires twisted together in a strange shape that loops back on itself. It must be useful for something...
- Char:
I
- Properties: Portable
- Capabilities: None
A pipe made out of a thin sheet of copper. Great for transmitting water or steam.
- Char:
#
- Properties: Portable
- Capabilities: None
A furnace can be used to turn metal ore into various useful products.
- Char:
M
- Properties: Portable
- Capabilities: None
A motor is useful for making devices that can turn when electric current is applied.
- Char:
*
- Properties: Portable, Growable
- Capabilities: None
A flower.
- Char:
λ
- Properties: Portable, Growable
- Capabilities: Lambda
A wild lambda. They are somewhat rare, but regrow when picked. Lambdas are delicious when cooked into curry.
Lambdas can also be used to create functions. For example,
def thrice : cmd () -> cmd () = \c. c;c;c end
defines the function thrice
which repeats a command three times.
- Char:
C
- Properties: Portable
- Capabilities: None
Delicious curry cooked from wild lambdas.
- Char:
- Properties: Portable, Growable, Liquid
- Capabilities: None
Water.
- Char:
~
- Properties: Portable, Growable, Liquid
- Capabilities: None
A wavy section of water.
- Char:
B
- Properties: Portable
- Capabilities: Float
A robot with a boat installed can float on top of water without drowning!
Note: most devices are automatically installed on robots that will require them; but since floating is not associated with any particular command, a boat must be manually installed on any robot that will need it.
- Char:
0
- Properties: Portable, Growable
- Capabilities: None
A bit.
- Char:
1
- Properties: Portable, Growable
- Capabilities: None
A bit.
- Char:
!
- Properties: Portable
- Capabilities: None
A drill bit is an important component of a drill.
- Char:
□
- Properties: Portable
- Capabilities: None
A wooden box. It can hold things.
- Char:
*
- Properties: Portable
- Capabilities: None
A wooden gear.
- Char:
C
- Properties: Portable
- Capabilities: None
An 8-bit counter.
- Char:
L
- Properties: Portable
- Capabilities: None
A copy of the Linux operating system.
- Char:
%
- Properties: Portable
- Capabilities: Move, Turn
Installing treads on a robot allows it to move (via the move
command) and turn (via the turn
command).
Example:
move; turn left; move; turn north
- Char:
<
- Properties: Portable
- Capabilities: Grab, Give, Place, Install
A grabber arm allows a robot to manipulate items via the grab
, place
, give
, and install
commands.
The grab
command takes no arguments; it simply grabs whatever is available, and also returns the name of the grabbed thing as a string. It raises an exception if run in a cell that does not contain an item.
The place
command takes one argument, the name of the item to place. The item is removed from the robot's inventory and placed in the robot's current cell (which must be empty). Raises an exception if the operation fails.
The give
command takes two arguments: the name of the robot to give an item to (which can be at most 1 cell away), and the name of the item to give. Raises an exception if the operation fails.
The install
command takes two arguments: the name of the robot on which to install a device (which can be at most 1 cell away), and the name of the device to install.
- Char:
#
- Properties: Portable
- Capabilities: None
An extremely efficient solar panel, capable of generating sufficient power from ambient starlight alone. A robot powered by one of these can operate any time, including on cloudy days and at night.
- Char:
!
- Properties: Portable
- Capabilities: None
A drill allows robots to drill through rocks and mountains.
- Char:
3
- Properties: Portable
- Capabilities: Build
A 3D printer gives you the capability of printing more robots! You can access the 3D printer via the build
command.
Example:
build "fred" {move; grab; turn back; move; give "base" "tree"}
builds a robot named "fred" to get the tree on the cell to the east (if there is one) and bring it back to you. Note that if there is already a robot named "fred", the new robot will be given a similar but unique name. The build
command always returns the name of the newly constructed robot. For example,
name <- build "fred" {move}; view name
builds a robot and then views it (no matter what it ends up being named).
- Char:
D
- Properties: Portable
- Capabilities: Env
A dictionary allows a robot to remember definitions and reuse them later. You can access this ability with either a def
command, which creates a name for an expression or command that is available from then on, or with a let
expression, which names an expression or command locally within another expression.
def m2 : cmd () = move; move end
let x : int = 3 in x^2 + 2*x + 1
The type annotations in def
and let
are optional.
- Char:
y
- Properties: Portable
- Capabilities: Cond
A branch predictor is a device which allows a robot to interpret conditional expressions. The syntax for a conditional expression is if
followed by three arguments: a boolean test and then two expressions of the same type.
Example:
if (x > 3) move {turn west; move}
- Char:
*
- Properties: Portable
- Capabilities: Selfdestruct
An explosive device which can be used to self-destruct, via the selfdestruct
command. Immediately vaporizes the robot and any inventory it is carrying. Can be useful, say, if you are sending out some exploratory robots and don't want them cluttering up the world once they are done.
- Char:
O
- Properties: Portable
- Capabilities: None
A state-of-the-art life support system which maintains the particular temperature and mixture of gases you need to survive. It uses a sophisticated recirculating system and can run pretty much indefinitely. Unfortunately, the atmosphere outside is severly toxic (why do the inhabitants of this planet need so much nitrogen!?), so you'll have to stay inside for now.
- Char:
$
- Properties: Portable
- Capabilities: Scan, Sensefront
With a scanner device, robots can use the scan
command to learn about their surroundings. Simply give scan
a direction in which to scan, and information about the scanned item (if any) will be added to the robot's inventory.
A scanner also enables the blocked
command, which returns a boolean value indicating whether the robot's path is blocked (i.e. whether executing a move
command would fail).
Finally, robots can use the upload
command to copy their accumulated knowledge to another nearby robot; for example, upload "base"
.