Turtlegrafik mit Java

HomeAufgabenDruckenJava-Online

Mehrere Turtles verwenden


Mit dem Konstuktor Turtle() können mehrere Turtle-Objekte erzeugt werden.
Turtle joe = new Turtle() erzeugt ein Turtlefenster mit der Turtle joe.
Turtle luka = new Turtle(joe)
erzeugt zweite Turtle luka im Fenster der Turtle joe.

Im ersten Beispiel zeichnen die Turtles joe und luka Quadrate. Während die eine Turtle ein Quadrat zeichnet, muss die andere warten (sequentielles Zeichnen).

 

// Tu15.java

import ch.aplu.turtle.*;
import java.awt.Color;

public class  Tu15
{
  public Tu15()
  {
    Turtle joe = new Turtle();
    Turtle luka = new Turtle(joe); //erzeugt luka im joe's-Fenster
    luka.setColor(Color.red);
    luka.setPenColor(Color.green);
    joe.setPos(-100-100);
    luka.setPos(50,-100);

    for (int = 0; i < 5; i++)
    {
      square(joe);
      joe.forward(40);
      square(luka);
      luka.forward(40);
    }
  }

  void square(Turtle t)
  {
    for (int = 0; i < 4; i++)
    {
      t.forward(40);
      t.right(90);
    }
  }

  public static void main(String[] args)
  {
    new Tu15();
  }
}

Erklärungen zum Programmcode:
Turtle luka = new Turtle(joe)
Erzeugt Turtle luka im Fenster von joe. Wenn man den Parameter joe weglässt, entsteht ein zweites Fenster mit der Turtle luka
void square(Turtle t)
{
}
Die Methode square() wird allgemein für eine Turtle t deklariert.
square(joe)
square(luka)
Aufruf der Methode square für Turtle joe
Aufruf der Methode square für Turtle luka

 


Im folgenden Beispiel zeichnen drei Turtles farbige Sterne. Während die eine Turtle ein Segment zeichnet, stehen die anderen still (gleichzeitiges Zeichnen siehe Kapitel Threads).

 

// Tu16.java

import ch.aplu.turtle.*;
import java.awt.Color;

public class  Tu16
{
  public Tu16()
  {
    Turtle joe = new Turtle();
    Turtle lea = new Turtle(joe, Color.red);
    Turtle sara = new Turtle(joe, Color.green);
    joe.setPos(-135-50);
    lea.setPos(-10-50);
    sara.setPos(115, -50);
    sara.setPenColor(Color.green);
    lea.setPenColor(Color.red);
    for (int = 0; i < 9; i++)
    {
      segment(joe);
      segment(lea);
      segment(sara);
    }  
  }

  void segment(Turtle t)
  {
    t.forward(140);
    t.right(160);
  }

  public static void main(String[] args)
  {
    new Tu16();
  }
}
 


Aufgaben