2016-06-09 12 views
1

Also haben wir gerade in das Turtle Applet und sah diesen Code im Web.Java Applet Turtle

private void tree(int s) 
{ 
    if (s < 8) 
     return; 

    forward(s); 
    left(45); 
    tree(s/2); 
    right(90); 
    tree(s/2); 
    left(45); 
    back(s); 
} 

Dies ist, was das Ergebnis aussehen soll, aber in meinem Kopf die Schildkröte stoppt, wo mein roter Kreis ist ...

enter image description here

Kann mir jemand erklären, warum die Schildkröte weiter gehen wird UND Warum startet die Schildkröte zwei Teilbäume? Da

wenn ich den Code rechts die Schildkröte versteht sich bewegen Schritte vorwärts s und dann um 45 Grad nach links abbiegen, aber nicht richtig ...

Antwort

2

Die Schildkröte sollte wieder landen, wo er begann. Lassen Sie uns den Code Zeile für Zeile sezieren:

Dies zeichnet den vertikalen Stamm des Baumes.

left(45); 

Wir wenden uns nach links, so dass wir auf die obere linke Ecke zeigen.

tree(s/2); 

Wir rufen rekursiv tree mit der halben Basislänge, ein neuer Baum aus unserem Stamm in die Richtung, die wir angegeben (45 Grad nach links) abzuzweigen verursacht. Beachten Sie, dass der Baum weiterhin rekursiv verzweigt, bis die Basislänge weniger als 8 Einheiten (Pixel?) Lang ist. Danach kehrt es zu dem Ort zurück, von dem es sich getrennt hat, der Basis des Zweiges.

right(90); 

Nachdem wir den linken Zweig fertig zeichnen, wenden wir uns an die 90 Grad nach rechts, so dass wir jetzt an der rechten oberen Ecke zeigt sind.

Wie zuvor trennen wir uns und beginnen, einen Baum in dieser Richtung mit der halben Basislänge zu zeichnen.

left(45); 

Wir wenden uns nach links um 45 Grad, uns neu zu orientieren, so dass wir gerade nach oben zeigen.

back(s); 

die Schildkröte kehrt zu der Basis des Baumes.

Insgesamt zweigt der Code in 45 Grad Winkeln mit der halben Basislänge ab, bis die Zweige zu kurz werden; danach zieht es sich effektiv zurück nach außen, während es die verbleibenden Zweige (links zuerst, dann rechts) zeichnet.