unit uHaupt; { (C) H.-J. Dreher, 2016, Informatik mit Delphi, { Turtle-Standardformular } interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.Graphics, Turtle, Dialogs, StdCtrls, Controls, ExtCtrls, Classes; type TFTurtleProjekt = class(TForm) Turtle1: TTurtle; Panel1: TPanel; PrinterSetupDialog1: TPrinterSetupDialog; btnZeichnen: TButton; btnDrucken: TButton; btnClipBoard: TButton; btnWMF: TButton; procedure btnZeichnenClick(Sender: TObject); procedure btnDruckenClick(Sender: TObject); procedure btnClipBoardClick(Sender: TObject); procedure btnWMFClick(Sender: TObject); private { Private-Deklarationen } procedure Aufgabe; procedure Baum(Laenge, Faktor, Winkel: REAL); public { Public-Deklarationen } end; var FTurtleProjekt: TFTurtleProjekt; implementation {$R *.DFM} // ================= ab hier wird deine Lösung implementiert! procedure TFTurtleProjekt.Baum(Laenge, Faktor, Winkel: REAL); begin with Turtle1 do if Laenge > 0.4 then { Rekursionsverankerung, Rekursionsabbruch } begin Forwd(Laenge); { Zeichne Stamm } Right(Winkel); Baum(Laenge * Faktor, Faktor, Winkel); { Zeichne (kleineren) rechten Teilbaum } Left(2 * Winkel); Baum(Laenge * Faktor, Faktor, Winkel); { Zeichne (kleineren) linken Teilbaum } Right(Winkel); Back(Laenge); { Kehre zum Startpunkt zurück } end else fillcircle(0.3, clgreen) { bei Rekursionsende zeichne grüne Früchte } end; { of Baum } procedure TFTurtleProjekt.Aufgabe; begin { of Hauptprogramm ------------------------------------------------- } with Turtle1 do begin setPosition(0, MinY * 0.75); PenWidth := 4; delay := 100; end; Baum(8, 0.5, 45); end { Aufgabe } ; // =================== Ende deiner Aufgabe --------------------------------} { --------- der nachfolgende Source-Code sollte nicht verändert werden ---- } procedure TFTurtleProjekt.btnZeichnenClick(Sender: TObject); begin with Turtle1 do begin clear; Aufgabe { Grafik-Prozedur-Aufruf } ; end; end; procedure TFTurtleProjekt.btnDruckenClick(Sender: TObject); begin with Turtle1 do begin if PrinterSetupDialog1.Execute <> true then exit; clear; Device := tdprinter; Aufgabe { Grafik-Prozedur-Aufruf } ; Device := tdscreen; end; end; procedure TFTurtleProjekt.btnClipBoardClick(Sender: TObject); begin with Turtle1 do begin clear; Device := tdClipb; Aufgabe { Grafik-Prozedur-Aufruf } ; Device := tdscreen; end; end; procedure TFTurtleProjekt.btnWMFClick(Sender: TObject); begin with Turtle1 do begin clear; Device := tdWMF; Aufgabe { Grafik-Prozedur-Aufruf } ; Device := tdscreen; end; end; end.