Ihre JavaKara-Programme müssen Sie von der Klasse JavaKaraProgram
ableiten. Dadurch werden Ihre Programme in die Laufzeitumgebung von JavaKara
eingebettet.
Innerhalb Ihrer Klasse haben Sie Zugriff auf drei Objekte, die Sie von
JavaKaraProgram erben. Sie sollten diese Objekte nie ändern, indem
Sie zum Beispiel versuchen, mit kara=new JavaKara();
einen
neuen Kara zu erzeugen! Der von Ihnen erzeugte Kara wäre nicht in die
Umgebung von JavaKara eingebunden und somit unsichtbar.
Unten finden Sie eine Übersicht der Methoden dieser Objekte:
kara
-
die Schnittstelle von Ihrem Programm zu Kara
world
-
Sie können mit einigen Operationen direkt die Welt manipulieren
tools
-
nützliche Methoden zum Beispiel für die String-Ausgabe
Wie funktioniert JavaKara? Wenn Sie ein eigenes Programm ausführen,
wird ein neuer Thread gestartet. Die Klasse JavaKaraProgramm ist
die Verbindung von Ihrem Programm zu JavaKara. Wichtig dabei: Da Ihr Programm
in einem eigenen Thread läuft, kann JavaKara keinen Einfluss
nehmen zum Beispiel auf die Ausführungsgeschwindigkeit Ihres Programmes
oder etwa Ihr Programm stoppen.
Deshalb wird ein kleiner Trick angewendet:
jedesmal, wenn Sie einen Befehl von Kara aufrufen - kara.move() oder kara.turnRight() etc -
wird die Methode tools.checkState() aufgerufen. Diese Methode prüft, ob
das Programm pausieren oder anhalten soll; ansonsten legt Sie den Thread
entsprechend der Einstellung des Geschwindigkeitsreglers schlafen. Sie sollten
unbedingt darauf achten, dass Ihre Programme entweder irgendeine Kara-Methode
oder die tools.checkState()-Methode aufrufen! Sonst können Sie zum Beispiel
Endlosschleifen programmieren, die Sie nicht mehr stoppen können, ohne
JavaKara zu beenden.
Hinweis 1: Wenn Sie ein Programm schreiben, das andere eigene
Klassen benutzt, dann müssen diese Klassen im gleichen Verzeichnis liegen
wie Ihre JavaKaraProgram-Unterklasse. Das hängt mit der Art zusammen,
wie Ihre JavaKaraProgram-Unterklasse geladen wird. Klassen wie java.awt.Point
zum Beispiel können Sie hingegen ohne jede Einschränkung verwenden.
Hinweis 2: In einem Konstruktor einer vor JavaKaraProgram
abgeleiteten Klasse können Sie nicht auf die drei Objekte kara, world und
tools zugreifen! Zudem darf ein Konstruktor keine Parameter entgegennehmen.
Wenn die Klasse von der Festplatte geladen wird, wird ein Objekt instanziert
mit dem Default-Konstruktor, der keine Parameter entgegennimmt. Erst danach
wird Ihre JavaKaraProgram-Unterklasse an die Objekte kara, world und tools
gebunden.
kara |
|
void move() |
Schritt vorwärts |
void turnLeft() |
90°-Linksdrehung |
void turnRight() |
90°-Rechtsdrehung |
void putLeaf() |
Kleeblatt hinlegen |
void removeLeaf() |
Kleeblatt aufnehmen |
boolean treeFront() |
Kara vor Baum? |
boolean treeLeft() |
Baum links von Kara? |
boolean treeRight() |
Baum rechts von Kara? |
boolean onLeaf() |
Kara auf Kleeblatt? |
boolean mushroomFront() |
Kara vor Pilz? |
void setPosition (int x, int y) |
Kara von Position (x,y) |
java.awt.Point getPosition() |
Koordinaten der aktuellen Position |
world |
|
void clearAll() |
Alle Elemente entfernen |
void setLeaf (int x, int y, boolean putLeaf) |
Blatt legen oder entfernen |
void setTree (int x, int y, boolean putTree) |
Baum setzen oder entfernen |
void setMushroom (int x, int y, boolean putMushroom) |
Pilz setzen oder entfernen |
void setSize (int newSizeX, int newSizeY) |
Grösse der Welt ändern |
boolean isEmpty (int x, int y) |
Ist das Feld leer? |
boolean isTree (int x, int y) |
Ist ein Baum auf dem Feld? |
boolean isMushroom (int x, int y) |
Ist ein Pilz auf dem Feld? |
boolean isLeaf (int x, int y) |
Ist ein Blatt auf dem Feld? |
int getSizeX() |
Horizontale Grösse der Welt |
int getSizeY() |
Vertikale Grösse der Welt |
tools |
|
void println (String string) |
String auf Standard-Ausgabe schreiben |
void showMessage (String message) |
String in Dialogfenster ausgeben |
int random (int bound) |
Liefert Zufallszahl aus Bereich [0..bound] |
void checkState() |
Schaut auf den Geschwindigkeitsregler |
void sleep (int ms) |
Schläft ms Millisekunden |
String stringInput (String title) |
String in einem Dialogfenster mit Titel title eingeben; gibt null zurück,
wenn der Dialog mit Cancel abgebrochen wurde |
int intInput (String title) |
Ganzzahl in einem Dialogfenster mit Titel title eingeben; gibt Integer.MIN_VALUE zurück,
wenn der Dialog mit Cancel abgebrochen wurde oder nicht eine Ganzzahl eingegeben wurde |
double doubleInput (String title) |
Fliesskommazahl in einem Dialogfenster mit Titel title eingeben; gibt Double.MIN_VALUE zurück,
wenn der Dialog mit Cancel abgebrochen wurde oder nicht eine Fliesskommazahl eingegeben wurde |