 <?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>http://ngb.schule/hgwiki/index.php?action=history&amp;feed=atom&amp;title=Quelltext%3ARover.java</id>
	<title>Quelltext:Rover.java - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="http://ngb.schule/hgwiki/index.php?action=history&amp;feed=atom&amp;title=Quelltext%3ARover.java"/>
	<link rel="alternate" type="text/html" href="http://ngb.schule/hgwiki/index.php?title=Quelltext:Rover.java&amp;action=history"/>
	<updated>2026-05-09T06:21:25Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Informatik-Box</subtitle>
	<generator>MediaWiki 1.38.2</generator>
	<entry>
		<id>http://ngb.schule/hgwiki/index.php?title=Quelltext:Rover.java&amp;diff=6632&amp;oldid=prev</id>
		<title>Jneug: Die Seite wurde neu angelegt: „import greenfoot.*;  /**  * Rover sind die einzigen aktiven Akteure in der Mars-Welt.  */ public class Rover extends Actor {      private Display anzeige;…“</title>
		<link rel="alternate" type="text/html" href="http://ngb.schule/hgwiki/index.php?title=Quelltext:Rover.java&amp;diff=6632&amp;oldid=prev"/>
		<updated>2020-08-30T15:11:39Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „import greenfoot.*;  &lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;*  * Rover sind die einzigen aktiven Akteure in der Mars-Welt.: &lt;/span&gt; public class Rover extends Actor {      private Display anzeige;…“&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;import greenfoot.*;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Rover sind die einzigen aktiven Akteure in der Mars-Welt.&lt;br /&gt;
 */&lt;br /&gt;
public class Rover extends Actor {&lt;br /&gt;
&lt;br /&gt;
    private Display anzeige;&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Act-Methode des Rovers. Programmiere hier deinen Algorithmus und starte&lt;br /&gt;
     * ihn mit dem &amp;quot;Act&amp;quot;-Button in Greenfoot.&lt;br /&gt;
     */&lt;br /&gt;
    public void act() {&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Der Rover bewegt sich ein Feld in Fahrtrichtung weiter.&lt;br /&gt;
     * Sollte sich in Fahrtrichtung ein Objekt der Klasse Huegel befinden oder&lt;br /&gt;
     * er sich an der Grenze der Welt befinden, dann erscheint eine&lt;br /&gt;
     * entsprechende Meldung auf dem Display.&lt;br /&gt;
     */&lt;br /&gt;
    public void fahre() {&lt;br /&gt;
        int posX = getX();&lt;br /&gt;
        int posY = getY();&lt;br /&gt;
&lt;br /&gt;
        if( huegelVorhanden(&amp;quot;vorne&amp;quot;) ) {&lt;br /&gt;
            nachricht(&amp;quot;Zu steil!&amp;quot;);&lt;br /&gt;
        } else if( getRotation() == 270 &amp;amp;&amp;amp; getY() == 1 ) {&lt;br /&gt;
            nachricht(&amp;quot;Ich kann mich nicht bewegen&amp;quot;);&lt;br /&gt;
        } else {&lt;br /&gt;
            move(1);&lt;br /&gt;
            Greenfoot.delay(1);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if( posX == getX() &amp;amp;&amp;amp; posY == getY() &amp;amp;&amp;amp; !huegelVorhanden(&amp;quot;vorne&amp;quot;) ) {&lt;br /&gt;
            nachricht(&amp;quot;Ich kann mich nicht bewegen&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Der Rover dreht sich um 90 Grad in die Richtung, die mit &amp;lt;var&amp;gt;richtung&amp;lt;/var&amp;gt;&lt;br /&gt;
     * (&amp;quot;links&amp;quot; oder &amp;quot;rechts&amp;quot;) übergeben wurde. Sollte ein anderer Text (String)&lt;br /&gt;
     * als &amp;quot;links&amp;quot; oder &amp;quot;rechts&amp;quot; übergeben werden, dann erscheint eine&lt;br /&gt;
     * entsprechende Meldung auf dem Display.&lt;br /&gt;
     * @param richtung &amp;quot;links&amp;quot; oder &amp;quot;rechts&amp;quot;&lt;br /&gt;
     */&lt;br /&gt;
    public void drehe( String richtung ) {&lt;br /&gt;
        if( richtung == &amp;quot;rechts&amp;quot; ) {&lt;br /&gt;
            setRotation(getRotation() + 90);&lt;br /&gt;
        } else if( richtung == &amp;quot;links&amp;quot; ) {&lt;br /&gt;
            setRotation(getRotation() - 90);&lt;br /&gt;
        } else {&lt;br /&gt;
            nachricht(&amp;quot;Befehl nicht korrekt!&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Der Rover gibt durch einen Wahrheitswert (&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; oder&lt;br /&gt;
     * &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;) zurück, ob sich auf seiner Position ein Objekt der&lt;br /&gt;
     * Klasse {@link Gestein} befindet. Eine entsprechende Meldung erscheint&lt;br /&gt;
     * auch auf dem Display.&lt;br /&gt;
     */&lt;br /&gt;
    public boolean gesteinVorhanden() {&lt;br /&gt;
        if( getOneIntersectingObject(Gestein.class) != null ) {&lt;br /&gt;
            nachricht(&amp;quot;Gestein gefunden!&amp;quot;);&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Der Rover überprüft, ob sich in &amp;lt;var&amp;gt;richtung&amp;lt;/var&amp;gt; (&amp;quot;rechts&amp;quot;, &amp;quot;links&amp;quot;&lt;br /&gt;
     * oder &amp;quot;vorne&amp;quot;) ein Objekt der Klasse {@link Huegel} befindet.&lt;br /&gt;
     * Das Ergebnis wird auf dem Display angezeigt. Sollte ein anderer Text (String)&lt;br /&gt;
     * als &amp;quot;rechts&amp;quot;, &amp;quot;links&amp;quot; oder &amp;quot;vorne&amp;quot; übergeben werden, dann erscheint eine&lt;br /&gt;
     * entsprechende Meldung auf dem Display.&lt;br /&gt;
     * @param richtung &amp;quot;links&amp;quot;, &amp;quot;rechts&amp;quot; oder &amp;quot;vorne&amp;quot;&lt;br /&gt;
     */&lt;br /&gt;
    public boolean huegelVorhanden( String richtung ) {&lt;br /&gt;
        int rot = getRotation();&lt;br /&gt;
&lt;br /&gt;
        if( richtung == &amp;quot;vorne&amp;quot; &amp;amp;&amp;amp; rot == 0 || richtung == &amp;quot;rechts&amp;quot; &amp;amp;&amp;amp; rot == 270 || richtung == &amp;quot;links&amp;quot; &amp;amp;&amp;amp; rot == 90 ) {&lt;br /&gt;
            if( getOneObjectAtOffset(1, 0, Huegel.class) != null &amp;amp;&amp;amp; ((Huegel) getOneObjectAtOffset(1, 0, Huegel.class)).getSteigung() &amp;gt; 30 ) {&lt;br /&gt;
                return true;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if( richtung == &amp;quot;vorne&amp;quot; &amp;amp;&amp;amp; rot == 180 || richtung == &amp;quot;rechts&amp;quot; &amp;amp;&amp;amp; rot == 90 || richtung == &amp;quot;links&amp;quot; &amp;amp;&amp;amp; rot == 270 ) {&lt;br /&gt;
            if( getOneObjectAtOffset(-1, 0, Huegel.class) != null &amp;amp;&amp;amp; ((Huegel) getOneObjectAtOffset(-1, 0, Huegel.class)).getSteigung() &amp;gt; 30 ) {&lt;br /&gt;
                return true;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if( richtung == &amp;quot;vorne&amp;quot; &amp;amp;&amp;amp; rot == 90 || richtung == &amp;quot;rechts&amp;quot; &amp;amp;&amp;amp; rot == 0 || richtung == &amp;quot;links&amp;quot; &amp;amp;&amp;amp; rot == 180 ) {&lt;br /&gt;
            if( getOneObjectAtOffset(0, 1, Huegel.class) != null &amp;amp;&amp;amp; ((Huegel) getOneObjectAtOffset(0, 1, Huegel.class)).getSteigung() &amp;gt; 30 ) {&lt;br /&gt;
                return true;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if( richtung == &amp;quot;vorne&amp;quot; &amp;amp;&amp;amp; rot == 270 || richtung == &amp;quot;rechts&amp;quot; &amp;amp;&amp;amp; rot == 180 || richtung == &amp;quot;links&amp;quot; &amp;amp;&amp;amp; rot == 0 ) {&lt;br /&gt;
            if( getOneObjectAtOffset(0, -1, Huegel.class) != null &amp;amp;&amp;amp; ((Huegel) getOneObjectAtOffset(0, -1, Huegel.class)).getSteigung() &amp;gt; 30 ) {&lt;br /&gt;
                return true;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if( richtung != &amp;quot;vorne&amp;quot; &amp;amp;&amp;amp; richtung != &amp;quot;links&amp;quot; &amp;amp;&amp;amp; richtung != &amp;quot;rechts&amp;quot; ) {&lt;br /&gt;
            nachricht(&amp;quot;Befehl nicht korrekt!&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Der Rover ermittelt den Wassergehalt des Gesteins auf seiner Position und&lt;br /&gt;
     * gibt diesen auf dem Display aus. Sollte kein Objekt der Klasse {@link Gestein}&lt;br /&gt;
     * vorhanden sein, dann erscheint eine entsprechende Meldung auf dem Display.&lt;br /&gt;
     */&lt;br /&gt;
    public void analysiereGestein() {&lt;br /&gt;
        if( gesteinVorhanden() ) {&lt;br /&gt;
            nachricht(&amp;quot;Gestein untersucht! Wassergehalt ist &amp;quot; + ((Gestein) getOneIntersectingObject(Gestein.class)).getWassergehalt() + &amp;quot;%.&amp;quot;);&lt;br /&gt;
            Greenfoot.delay(1);&lt;br /&gt;
            removeTouching(Gestein.class);&lt;br /&gt;
        } else {&lt;br /&gt;
            nachricht(&amp;quot;Hier ist kein Gestein&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Der Rover erzeugt ein Objekt der Klasse {@link Marke} auf seiner Position.&lt;br /&gt;
     */&lt;br /&gt;
    public void setzeMarke() {&lt;br /&gt;
        getWorld().addObject(new Marke(), getX(), getY());&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Der Rover gibt durch einen Wahrheitswert (&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; oder&lt;br /&gt;
     * &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;) zurück, ob sich auf seiner Position ein Objekt der&lt;br /&gt;
     * Klasse {@link Marke} befindet.&lt;br /&gt;
     * Eine entsprechende Meldung erscheint auch auf dem Display.&lt;br /&gt;
     */&lt;br /&gt;
    public boolean markeVorhanden() {&lt;br /&gt;
        if( getOneIntersectingObject(Marke.class) != null ) {&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Wenn sich auf dem aktuellen Feld ein Objekt der Klasse {@link Marke}&lt;br /&gt;
     * befindet, dann wird die Markierung aus der Welt entfernt. Sollte keine&lt;br /&gt;
     * Marke vorhanden sein, dann erscheint eine entsprechende Meldung auf dem&lt;br /&gt;
     * Display.&lt;br /&gt;
     */&lt;br /&gt;
    public void entferneMarke() {&lt;br /&gt;
        if( markeVorhanden() ) {&lt;br /&gt;
            removeTouching(Marke.class);&lt;br /&gt;
        } else {&lt;br /&gt;
            nachricht(&amp;quot;Hier ist keine Marke&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Interne Mathode, um eine Nachricht auf dem Display anzuzeigen.&lt;br /&gt;
     * @param pText Eine Zeile Text&lt;br /&gt;
     */&lt;br /&gt;
    private void nachricht( String pText ) {&lt;br /&gt;
        if( anzeige != null ) {&lt;br /&gt;
            anzeige.anzeigen(pText);&lt;br /&gt;
            Greenfoot.delay(1);&lt;br /&gt;
            anzeige.loeschen();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Versteckt das Display des Rovers.&lt;br /&gt;
     */&lt;br /&gt;
    private void displayAusschalten() {&lt;br /&gt;
        getWorld().removeObject(anzeige);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    protected void addedToWorld( World world ) {&lt;br /&gt;
        setImage(&amp;quot;images/rover.png&amp;quot;);&lt;br /&gt;
        world = getWorld();&lt;br /&gt;
        anzeige = new Display();&lt;br /&gt;
        anzeige.setImage(&amp;quot;images/nachricht.png&amp;quot;);&lt;br /&gt;
        world.addObject(anzeige, 7, 0);&lt;br /&gt;
        if( getY() == 0 ) {&lt;br /&gt;
            setLocation(getX(), 1);&lt;br /&gt;
        }&lt;br /&gt;
        anzeige.anzeigen(&amp;quot;Ich bin bereit&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Interne Klasse, um eine Text-Display in der Welt anzuzeigen.&lt;br /&gt;
     */&lt;br /&gt;
    class Display extends Actor {&lt;br /&gt;
&lt;br /&gt;
        GreenfootImage bild;&lt;br /&gt;
&lt;br /&gt;
        public Display() {&lt;br /&gt;
            bild = getImage();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public void act() {&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public void anzeigen( String pText ) {&lt;br /&gt;
            loeschen();&lt;br /&gt;
            getImage().drawImage(new GreenfootImage(pText, 25, Color.BLACK, new Color(0, 0, 0, 0)), 10, 10);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public void loeschen() {&lt;br /&gt;
            getImage().clear();&lt;br /&gt;
            setImage(&amp;quot;images/nachricht.png&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Jneug</name></author>
	</entry>
</feed>