Nikis Welt
Niki lebt auf einem flachen, rechteckförmigen Brett, dessen Ausdehnung nicht
spezifiziert, d.h. implementierungsabhängig ist. Die vier Ränder werden als Nord-, Ost-,
Süd- und Westrand bezeichnet. Das Brett ist in gleich große Plätze eingeteilt.
In allen vier Himmelsrichtungen gibt es Randplätze, die Plätze in den Ecken heißen
Nordwestecke, Nordostecke, Südwestecke, Südostecke. Nikis "Zuhause", sein Anfangsplatz,
ist die Nordwestecke.
Auf jedem Platz können beliebig viele Klötze liegen. Niki kann sich auf jedem Platz
aufhalten, auf dem sich kein Hindernis (Wand) befindet, unabhängig davon, wie viele
Klötze auf ihm liegen. Niki hat eine Tasche, in
der Klötze (bzw. irgendwelche Gegenstände) sein können. Niki kann auf einem beliebigen
Platz mit Klötzen immer einen Klotz
wegnehmen und in seine Tasche stecken. Niki kann auf einem beliebigen Platz immer einen
Klotz aus seiner Tasche nehmen und den Klotz hinlegen.
Niki bewegt sich einzelschrittweise vorwärts
auf dem Brett. Die Laufrichtung ist prinzipiell auf die 4 Himmelsrichtungen beschränkt. Niki
kann seine
Richtung um 90° nach links ändern. Jedes Leben von Niki beginnt in einer Welt, deren Name
zu Beginn des Programmlaufs angegeben wird. Niki blickt zu Beginn immer in
Südrichtung. Der Endzustand des Brettes wird nicht aufbewahrt. Nach dem Ende des Programmlaufs
ist die Welt also wieder im ursprünglichen Zustand.
Nikis Handlungsrepertoire besteht aus einem festen Sortiment
von Elementarhandlungen. Dies sind:
- Ein Test,
- ob Niki auf dem Anfangsplatz steht (
am_Anfang),
- ob Nikis Platz klotzfrei ist (
Feld_leer),
- ob Nikis Tasche leer ist (
Tasche_leer),
- ob Niki vor sich einen betretbaren Platz hat (
vorne_frei).
- Eine Drehung um 90° nach links (
links).
- Eine Bewegung um einen Schritt vorwärts in Nikis Richtung, falls dies möglich ist
(
vor).
- Auf dem aktuellen Platz
- einen Klotz legen (
gib),
- einen Klotz aufheben (
nimm).