# Roboter

## Class Roboter

- java.lang.Object
- - greenfoot.Actor
  - - Roboter

    public class Roboter
    extends greenfoot.Actor

Diese Klasse ist die Oberklasse fuer die Roboter "Robita", "Robson" und "Robby". Programme sollen nur in den Unterklassen implementiert werden, da diese Klasse fuer Java-Beginner sehr komplex ist. Ein Roboter kann sich felderweise in die vier Himmelsrichtungen im Szenario bewegen. Ueber Sensoren kann er Informationen ueber seine Umwelt erhalten.

### Constructor Summary

Constructors
`Roboter()` Ein Objekt der Klasse Roboter wird exempliert bzw. instanziert.

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `ablegen​(java.lang.String name)` Der Roboter legt einen Gegenstand aus seinem Vorrat auf dem Feld ab.
`protected void` `addedToWorld​(greenfoot.World world)` Wird aufgerufen, wenn der Roboter in die Welt gesetzt wird; erweitert nach Vorschlag P.Henriksen 29.6.08
`void` `aufnehmen()` Der Roboter nimmt einen Gegenstand, der sich auf seinem Feld befindet in seinen Vorrat auf.
`void` `benutze​(java.lang.String name)` Benutzt den angegebenen Gegenstand.
`void` `dreheLinks()` Der Roboter dreht sich um 90 Grad nach links (aus der Sicht des Roboters).
`void` `dreheRechts()` Der Roboter dreht sich um 90 Grad nach rechts (aus der Sicht des Roboters).
`void` `dreheUm()` Der Roboter dreht sich um 180 Grad nach rechts (aus der Sicht des Roboters).
`void` `einsVor()` Der Roboter geht einen Schritt in die Pfeilrichtung.
`void` `gehilfeEinsetzen​(Roboter r)` Diese Methode setzt einen Roboter vor den Roboter, der diese Methode aufruft.
`int` `getAnzahl()` Gibt die Anzahl der Gegenstaende, die Roboter traegt, zurueck.
`int` `getAnzahl​(java.lang.String name)` Gibt die Anzahl der Gegenstaende einer bestimmten Art zurueck.
`int` `getEnergie()` Gibt die Restenergie des Roboters zurück
`boolean` `hatGegenstand​(java.lang.String name)` Gibt zurueck, ob der Roboter mindestens einen Gegenstand der angegeben Art besitzt.
`boolean` `istAufGegenstand()` Liefert genau dann true, wenn auf der Kachel, auf der sich der aufgerufene Roboter gerade befindet, ein beliebiger Gegenstand befindet.
`boolean` `istAufGegenstand​(java.lang.String name)` Liefert genau dann true, wenn auf der Kachel, auf der sich der aufgerufene Roboter gerade befindet, ein Gegenstand mit dem angegebnen Namen befindet.
`boolean` `istEnergieLeer()` Gibt zurueck, ob die Energie des Roboters verbraucht ist.
`boolean` `istInventarLeer()` Liefert genau dann true, wenn der aufgerufene Roboter keinen Gegenstand bei sich hat.
`boolean` `istVorne​(java.lang.String name)` Liefert genau dann true, wenn sich vor dem Roboter ein Gegenstand mit dem angegebnen Namen befindet.
`boolean` `istVorneFrei()` Der Sensor ueberprueft, ob vor dem Roboter Hindernisse stehen oder nicht
`boolean` `istWandLinks()` Der Sensor ueberprueft, ob sich links der Laufrichtung eine Wand befindet.
`boolean` `istWandRechts()` Der Sensor ueberprueft, ob sich rechts der Laufrichtung eine Wand befindet.
`boolean` `istWandVorne()` Der Sensor ueberprueft, ob sich in Laufrichtung des Roboters eine Wand befindet.
`void` `melde​(java.lang.String text, boolean istWichtig)` Gibt den uebergebenen String in einer Dialogbox auf dem Bildschirm aus
`void` `setAnzahlVonGegenstand​(java.lang.String name, int anzahl)` Gibt dem Roboter eine bestimmte Anzahl von Gegenstaenden einer Art
`void` `setLocation​(int x, int y)` setLocation(x,y) fuer Roboter wird ueberschrieben, um nicht auf Wand oder anderen Roboter ziehen zu koennen!
`void` `setRotation​(int x)` setRotation(x) fuer Roboter wird ueberschrieben, damit nur vier Rotationsrichtungen moeglich sind!
`void` `verbraucheEnergie​(int verlust)` Reduziert die Restenergie des Roboters um den angegebenen Wert.
`void` `warne​(java.lang.String text, greenfoot.Actor actor)` Gibt den uebergebenen String in einer Dialogbox als Warnung auf dem Bildschirm aus.

### Methods inherited from class greenfoot.Actor

`act, getImage, getIntersectingObjects, getNeighbours, getObjectsAtOffset, getObjectsInRange, getOneIntersectingObject, getOneObjectAtOffset, getRotation, getWorld, getWorldOfType, getX, getY, intersects, isAtEdge, isTouching, move, removeTouching, setImage, setImage, turn, turnTowards`

### Methods inherited from class java.lang.Object

`clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### Roboter

    public Roboter()

Ein Objekt der Klasse Roboter wird exempliert bzw. instanziert.

### Method Detail

#### getAnzahl

    public int getAnzahl()

Gibt die Anzahl der Gegenstaende, die Roboter traegt, zurueck.

Returns:
  Anzahl der Gegenstaende

#### getAnzahl

    public int getAnzahl​(java.lang.String name)

Gibt die Anzahl der Gegenstaende einer bestimmten Art zurueck.

Parameters:
  `name` - Art der Gegenstands (z.B. "Schluessel")
Returns:
  Anzahl der Gegenstaende

#### getEnergie

    public int getEnergie()

Gibt die Restenergie des Roboters zurück

Returns:
  Energiereserve (0-100)

#### verbraucheEnergie

    public void verbraucheEnergie​(int verlust)

Reduziert die Restenergie des Roboters um den angegebenen Wert.

Parameters:
  `verlust` - Anzahl der verbrauchten Energiepunkte

#### istEnergieLeer

    public boolean istEnergieLeer()

Gibt zurueck, ob die Energie des Roboters verbraucht ist.

Returns:
  true, wenn Restenergie =0, sonst false

#### einsVor

    public void einsVor()

Der Roboter geht einen Schritt in die Pfeilrichtung. Das macht er nur, wenn sich keine Wand vor ihm befindet oder er nicht an der Grenze der Welt zur Wand blickt.

#### dreheRechts

    public void dreheRechts()

Der Roboter dreht sich um 90 Grad nach rechts (aus der Sicht des Roboters).

#### dreheUm

    public void dreheUm()

Der Roboter dreht sich um 180 Grad nach rechts (aus der Sicht des Roboters).

#### dreheLinks

    public void dreheLinks()

Der Roboter dreht sich um 90 Grad nach links (aus der Sicht des Roboters).

#### hatGegenstand

    public boolean hatGegenstand​(java.lang.String name)

Gibt zurueck, ob der Roboter mindestens einen Gegenstand der angegeben Art besitzt.

Parameters:
  `name` - Art des gesuchten Gegenstands
Returns:
  true, wenn der Roboter einen derartigen Gegenstand hat, sonst false

#### setAnzahlVonGegenstand

    public void setAnzahlVonGegenstand​(java.lang.String name,
                                       int anzahl)

Gibt dem Roboter eine bestimmte Anzahl von Gegenstaenden einer Art

Parameters:
  `name` - Art des Gegenstands

#### benutze

    public void benutze​(java.lang.String name)

Benutzt den angegebenen Gegenstand. Es koennen nur Schluessel, Schalter, Bombe, Feuerloescher und Akku benutzt werden. Dabei kann ein Schluessel nur direkt vor einem Schloss benutzt werden. Eine Bombe sprengt einen Bereich frei. Der Feuerloescher kann ein direkt vor dem Roboter befindliches Feuer loeschen. Der Akku erhoeht die Restenergie des Roboters.

Parameters:
  `name` - Art des zu benutzenden Gegenstands ("Schluessel", "Schalter", "Bombe", "Feuerloescher", "Akku")

#### istAufGegenstand

    public boolean istAufGegenstand()

Liefert genau dann true, wenn auf der Kachel, auf der sich der aufgerufene Roboter gerade befindet, ein beliebiger Gegenstand befindet.

Returns:
  true, wenn der Roboter auf einem Gegenstand steht, sonst false

#### istAufGegenstand

    public boolean istAufGegenstand​(java.lang.String name)

Liefert genau dann true, wenn auf der Kachel, auf der sich der aufgerufene Roboter gerade befindet, ein Gegenstand mit dem angegebnen Namen befindet.

Parameters:
  `name` - Einer der Gegenstaende ("Schluessel", "Schalter", "Bombe", "Feuerloescher", "Brennstab", "Akku", "Schraube", "Kontaktplatte", "Oelfleck", "Portal", "Strom", "Feuer", "Aufzug")
Returns:
  true, wenn der Roboter auf einem Gegenstand steht, sonst false

#### istInventarLeer

    public boolean istInventarLeer()

Liefert genau dann true, wenn der aufgerufene Roboter keinen Gegenstand bei sich hat.

Returns:
  true, wenn der Roboter keinen Gegenstand mit sich traegt, sonst false

#### ablegen

    public void ablegen​(java.lang.String name)

Der Roboter legt einen Gegenstand aus seinem Vorrat auf dem Feld ab.

Parameters:
  `name` - Einer der Gegenstaende ("Schluessel", "Schalter", "Bombe", "Brennstab", "Feuerloescher", "Akku", "Schraube", "Kontaktplatte", "Oelfleck", "Portal", "Strom", "Feuer")

#### aufnehmen

    public void aufnehmen()

Der Roboter nimmt einen Gegenstand, der sich auf seinem Feld befindet in seinen Vorrat auf. Falls er nicht auf einem Gegenstand steht, gibt er eine Warnung aus. Roboter haben nur eine begrenzte Kapazitaet. Sie koennen maximal 99 Gegenstaende mit sich tragen. Falls er einen 100. Gegenstand aufnehmen moechte, wird auch eine entsprechende Warnung ausgegeben.

#### gehilfeEinsetzen

    public void gehilfeEinsetzen​(Roboter r)

Diese Methode setzt einen Roboter vor den Roboter, der diese Methode aufruft. Ist vor ihm kein Platz, wird eine Warnung ausgegeben.

Parameters:
  `r` - der Hilfsroboter, der eingesetzt werden soll

#### istVorneFrei

    public boolean istVorneFrei()

Der Sensor ueberprueft, ob vor dem Roboter Hindernisse stehen oder nicht

Returns:
  true, wenn vor dem Roboter frei ist, sonst false

#### istVorne

    public boolean istVorne​(java.lang.String name)

Liefert genau dann true, wenn sich vor dem Roboter ein Gegenstand mit dem angegebnen Namen befindet.

Parameters:
  `name` - Einer der Gegenstaende ("Schluessel", "Schalter", "Schloss", "Bombe", "Feuerloescher", "Akku", "Schraube", "Kontaktplatte", "Oelfleck", "Portal", "Strom", "Feuer", "Aufzug")
Returns:
  true, wenn der Roboter vor dem Gegenstand mit dem Namen name steht, sonst false

#### istWandVorne

    public boolean istWandVorne()

Der Sensor ueberprueft, ob sich in Laufrichtung des Roboters eine Wand befindet.

Returns:
  true, wenn der Roboter vor einer Wand steht, sonst false

#### istWandRechts

    public boolean istWandRechts()

Der Sensor ueberprueft, ob sich rechts der Laufrichtung eine Wand befindet.

Returns:
  true, wenn sich rechts von dem Roboter eine Wand befindet, sonst false

#### istWandLinks

    public boolean istWandLinks()

Der Sensor ueberprueft, ob sich links der Laufrichtung eine Wand befindet.

Returns:
  true, wenn sich links von dem Roboter eine Wand befindet, sonst false

#### melde

    public void melde​(java.lang.String text,
                      boolean istWichtig)

Gibt den uebergebenen String in einer Dialogbox auf dem Bildschirm aus

Parameters:
  `text` - Der Text, der angezeit werden soll
  `istWichtig` - bei true wird der Text "Achtung! Besonders wichtige Meldung:" in die Kopfzeile geschrieben, sonst nur der Text "Meldung!"

#### warne

    public void warne​(java.lang.String text,
                      greenfoot.Actor actor)

Gibt den uebergebenen String in einer Dialogbox als Warnung auf dem Bildschirm aus. Dadurch wird der uebergebene Actor actor von der Roboterwelt entfernt und diese neu gezeichnet.

Parameters:
  `text` - Der Text, der angezeit werden soll
  `actor` - Der Actor, der ggf. entfernt werden soll

#### addedToWorld

    protected void addedToWorld​(greenfoot.World world)

Wird aufgerufen, wenn der Roboter in die Welt gesetzt wird; erweitert nach Vorschlag P.Henriksen 29.6.08

Overrides:
  `addedToWorld` in class `greenfoot.Actor`
Parameters:
  `world` - Die Welt in die ein Roboter gesetzt wurde

#### setLocation

    public void setLocation​(int x,
                            int y)

setLocation(x,y) fuer Roboter wird ueberschrieben, um nicht auf Wand oder anderen Roboter ziehen zu koennen! -- setzt den Roboter auf eine Kachel, deren Spalte x sowie Reihe y du hier vorgibst. Die Nummerierung beginnt jeweils bei 0 !!)

Overrides:
  `setLocation` in class `greenfoot.Actor`
Parameters:
  `x` - die x-Koordinate
  `y` - die y-Koordinate

#### setRotation

    public void setRotation​(int x)

setRotation(x) fuer Roboter wird ueberschrieben, damit nur vier Rotationsrichtungen moeglich sind!

Overrides:
  `setRotation` in class `greenfoot.Actor`
Parameters:
  `x` - die Richtung (0=Osten, 90=Sueden, 180=Westen, 270=Norden)