Kapitel 1: Erste Schritte

Lösungen

LÖSUNGEN AUFGABE 1.02

  1. Was bewirkt die Methode move()?
    Kara geht ein Feld nach vorne.
  2. Platzieren Sie zwei Karas in Ihrer Welt und sorgen Sie dafür, dass sie sich anschauen. Welche Methode brauchen Sie dazu?
    turnLeft() oder turnRight()
  3. Testen Sie die weiteren Methoden. In welche zwei Arten können die Methoden unterteilt werden?
    Methoden mit void: führen nur eine Aktion aus.
    Methoden mit boolean: Öffnen ein Fenster mit dem Methodenergebnis.

LÖSUNGEN AUFGABE 1.03

  1. Rufen Sie die Methode onLeaf() für einen Kara auf. Liefert Sie immer false zurück? Oder gibt es auch Situationen, in denen sie true zurückliefert?
    Wenn Kara auf einem Blatt steht, liefert die Methode true zurück.
  2. Setzen Sie zusätzlich einen Baum (Tree) in die Welt. Mit welcher Methode können Sie überprüfen, ob Kara vor einem Baum steht?
    treeFront()
  3. Was passiert, wenn Sie Kara mittels der Methode move() in einen Baum fahren lassen?
    Kara reklamiert dass er sich nicht bewegen kann.

LÖSUNGEN AUFGABE 1.04

Welchen Zustandswerte hat Kara in den folgenden Situationen?

  1. x: 0, y: 0, rotation: 0

  2. x: 1, y: 2, rotation: 180


LÖSUNGEN AUFGABE 1.05

  1. Platzieren Sie ein Objekt von MyKara in Ihre Welt. Welche Methode haben Sie nun neu zur Verfügung?
    act()
  2. Was macht diese Methode?
    Schritt vorwärts, Drehung nach rechts, Schritt vorwärts
  3. Was passiert, wenn Sie in der Greenfoot-Steuerung (unten links) auf den Act-Button drücken?
    Das Gleiche wie vorher. Die act()-Methode wird aufgerufen.
  4. Klicken Sie auf den Run-Button. Was geschieht? (Versuchen Sie mal die Geschwindigkeit zu verstellen)
    act() wird immer wieder aufgerufen, bis man auf Pause drückt.
  5. Welche Methoden finden Sie unter Rechtsklick | inherited from Kara? Können Sie die auch benutzen?
    Alle Methoden von Kara. Die können auch von MyKara benutzt werden.

LÖSUNGEN AUFGABE 1.06

public class MyKara extends Kara {
	
	public void act() {
		move();
        putLeaf();
        move();

		stop();
	}
}

LÖSUNGEN AUFGABE 1.07

public class MyKara extends Kara {
	
	public void act() {
		move();

		turnLeft();
		move();
		turnRight();
		move();
		move();
		turnRight();
		move();
		turnLeft();

		turnLeft();
		move();
		turnRight();
		move();
		move();
		turnRight();
		move();
		turnLeft();

		move();

		turnLeft();
		move();
		turnRight();
		move();
		move();
		turnRight();
		move();
		turnLeft();

		removeLeaf();

		stop();
	}
}

Erklärungen

  1. Die Kommentare im Quelltext wurden weggelassen (= der Text, welcher im Greenfoot-Editor entweder grau oder blau dargestellt wird).
    Kommentare schreibt man in den Quelltext als zusätzliche Informationen. Die Kommentare sind für Menschen und werden vom Computer ignoriert. Es gibt drei Möglichkeiten, um Kommentare in den Quelltext zu schreiben:
  2. Mit zwei Schrägstrichen // (nach den Strichen gilt der Rest der Zeile als Kommentar)
  3. Längere Kommentare über mehrere Zeilen schliesst man mit /* und */ ein.
  4. Kommentare für Methoden und Klassen werden zwischen /** und */ geschrieben.
  5. Die Methode stop() bewirkt, dass nach der act()-Methode gestoppt wird, auch wenn der Run-Knopf gedrückt wurde.

LÖSUNGEN AUFGABE 1.08

public class MyKara extends Kara {
	public void act() {
		move();
		goAroundTree();
		goAroundTree();
		move();
		goAroundTree();
		removeLeaf();

		stop();
	}

	public void goAroundTree() {
		turnLeft();
		move();
		turnRight();
		move();
		move();
		turnRight();
		move();
		turnLeft();
	}
}

Erklärungen

  1. Zur besseren Übersicht und um zu vermeiden, dass wir dreimal den gleichen Code schreiben müssen, haben wir eine neue Methode goAroundTree() eingeführt.
  2. Dem Namen der Methode werden hier zwei Schlüsselwörter public void vorangestellt.
    public bedeutet, dass die Methode auch von ausserhalb aufgerufen werden kann.
    void (engl. Leer) bedeutet, dass die Methode keinen Wert zurückliefert.
  3. Hinter jeder Methode steht das Klammerpaar (), was bedeutet, dass die Methode keine Parameter übergeben bekommt. Später werden wir Methoden mit Parametern kenne lernen.