Funktionen für Formen, Farben und Zahlen
Funktionen für Bewegen von Objekten
Black
" - SchwarzBlue
" - BlauGreen
" - GrünRed
" - RotNone
" - kein Muster"Circle"
- KreisDiamond
" - RauteSquare
" - QuadratNone
" - kein Objekt, freies Feld (eventuell aber mit eingefärbten Muster)Wall
" - MauerMouse
" - MausBowl
" - Loch/ Napf"N"
- Norden"S"
- Süden"E"
- Osten"W"
- WestenEin Feld kann enthalten:
Felder mit dem Objekt Wall
können nichts anderes enthalten.
move(direction)
Die Katze wird ein Feld vorwärts bewegt, in die Richtung, die der Parameter direction
angibt. Fehlt der Parameter, bewegt sich die Katze vorwärts in die Richtung, in die sie schaut.
Für direction
kann eine der Himmelsrichtungen eingesetzt werden.
Der Energieverbrauch hängt von von der Bewegungsrichtung ab und davon, ob die Katze ein Objekt trägt oder nicht.
Richtung | ohne Objekt | mit Objekt |
---|---|---|
Vorwärts | 1 | 2 |
Seitwärts | 2 | 4 |
Rückwärts | 4 | 6 |
turn(direction)
Dreht die Katze, sodass sie in eine neue Richtung blickt.
Der Parameter direction
muss einen der folgenden Werte annehmen:
color()
Gibt die Farbe des Feldes, auf dem sich die Katze befindet, zurück. Enthält das Feld keine Farbe, so wird die Zeichenkette "None"
zurückgegeben.
Der Rückgabewert ist eine der Farbkonstanten.
if (color()=="Red") { // tue etwas, wenn das Feld rot ist }
paint(color)
Färbt die Form auf dem Feld, auf dem sich die Katze befindet mit der Farbe color
ein.
Erlaubte Werte für color
sind die Farbkonstanten.
1, wenn die Katze kein Objekt trägt, sonst 2.
setShape(color, shape)
Zeichnet auf das Feld, auf dem sich die Katze befindet die Form shape
in der Farbe color
.
setShape("Blue","Circle"); // zeichnet einen Blauen Kreis setShape("None","None"); // entfernt eine farbige Form von dem Feld
2, wenn die Katze kein Objekt trägt, sonst 4.
read()
Liest den Wert ein, der auf dem Feld direkt vor der Katze in Blickrichtung steht. Der Wert bleibt danach auf dem Feld stehen und kann mit weiteren read
-Aufrufen erneut eingelesen werden.
Die Funktion gibt den eingelesenen Wert als string
zurück, auch wenn es sich um eine Zahl handelt. Zum Einlesen von Zahlen benutzt man die Funktion readNumber
.
var wert = read();
Befindet sich kein Wert auf dem einzulesenden Feld, gibt die Funktion eine leere Zeichenkette zurück.
Das Lesen verbraucht 1 Energie.
readNumber()
Liest den Wert ein, der auf dem Feld direkt vor der Katze in Blickrichtung steht. Der Wert bleibt danach auf dem Feld und kann mit weiteren readNumber
-Aufrufen erneut eingelesen werden.
Die Funktion wandelt den eingelesenen Wert in eine Zahl um.
Die Funktion readNumber
kann in allen Puzzles verwendet werden, wo auch read
verwendet werden darf.
var zahl = readNumber();
Befindet sich kein Wert auf dem einzulesenden Feld oder handelt es sich nicht um eine Zahl, so löst die Funktion eine Fehlermeldung aus.
Das Lesen verbraucht 1 Energie.
write(val)
Schreibt den Wert val
auf das Feld direkt vor der Katze, oder löscht das Feld, falls val
den Wert nil
hat. Bei einem Rätsel ohne Katze werden die Ausgabefelder von oben nach unten beschrieben, jeder read
-Aufruf liest ein Feld ein.
Bei val
kann es sich um einen beliebigen Typ handeln. Dieser wird auf dem Feld als Zeichenkette gespeichert. Wenn er wieder eingelesen wird, muss er in den passenden Datentyp zurückverwandelt werden.
Das Schreiben eines Wertes verbraucht 2 Energie, jedoch nil
nur 1 Energie.
take()
Die Katze nimmt das Objekt auf, das in Blickrichtung direkt vor der Katze liegt.
Erzeugt eine Fehlermeldung, wenn kein Objekt auf dem Feld davor liegt, oder die Katze bereits einen Gegenstand trägt.
Es kann nur maximal ein Gegenstand getragen werden werden.
Das Aufnehmen von Objekten verbraucht 5 Energie.
drop()
Legt das getragene Objekt auf dem Feld direkt vor der Katze ab.
Erzeugt eine Fehlermeldung, wenn die Katze kein Objekt trägt, oder der Gegenstand auf dem betreffenden Feld nicht abgelegt werden kann.
Das Ablegen von Objekten verbraucht 2 Energie.
push()
Schiebt das Objekt direkt vor der Katze um ein Feld nach vorne. Die Katze bewegt sich dabei ebenfalls ein Feld nach vorne.
Wenn sich vor der Katze ein leeres Feld befindet, verhält sie sich so, als ob sie den Befehl move()
erhalten hätte.
Das Schieben verbraucht 6 Energie bzw. 8 Energie, wenn die Katze ein Objekt trägt.
seeing()
Gibt das Objekt zurück, das sich in Blickrichtung direkt vor der Katze befindet. Mögliche Rückgabewerte: siehe Objekte.
if (seeing()=="Mouse") { // tue etwas }
Der Score setzt sich aus drei Komponenten zusammen:
Die Summe dieser drei Werte wird von der Schwierigkeit des Puzzles (normalerweise 1000) abgezogen und ergibt den Score.
Um also einen möglichst hohen Score zu erreichen muss die Katze das Puzzle möglichst energiearm (Katzen machen am liebsten ein Nickerchen!) mit einem möglichst kurzen Programm, das möglichst wenig Schritte benötigt, lösen.
Die Katze verbraucht für jede Aktion etwas Energie. Wie viel ist bei den einzelnen Funktionen beschrieben.
Anzahl der Programmanweisungen. Gezählt wird alles bis auf Klammern und Satzzeichen.
Die Anzahl der Anweisungen, die das Programm beim Durchlauf abgearbeitet hat.