Lupuz.de: Artikel-Portal / Magazin

Zurück   Postpla.net - die Forum Community > PC, Internet und Technik > Coder's Area

Turtle in Delphi

Anzeigen:

Thema geschlossen
 
Themen-Optionen Thema durchsuchen
distressed
Alt 30.01.2007, 12:23   #1
Standard Turtle in Delphi

Hi an alle Programmierer hier

in der Schule müssen wir gerade in Delphi mit turtle einen baum programmieren, doch im internet findet man nicht allzu viel.




ist der bisherige quelltext.
und da wo ich es markiert habe, ist der fehler.

wie kommen nicht weiter, kann jemand helfen?

( das programm ist auch noch lang nicht fertig... so nebenbei)

Geändert von distressed (30.01.2007 um 12:33 Uhr).
 
 
Nach oben
distressed
Alt 30.01.2007, 12:44   #2
Standard

sry, hat sich schon erledigt, ein var war zu viel.

aber falls jemand noch einen fehler sieht, den delphi nicht erkennt, immer her damit
 
 
Nach oben
distressed
Alt 24.02.2007, 17:02   #3
Standard

Da ich gebeten wurde, das fertige Programm auch zu posten:
(unter Delphi 7 geschrieben)

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
PaintBox1: TPaintBox;
start: TButton;
Button2: TButton;
Edit1: TEdit;
Edit2: TEdit;
Panel1: TPanel;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
procedure Button2Click(Sender: TObject);
procedure startClick(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;

Tturtle = class // unser Zeichengerät ^^
private
z: Tpaintbox;
posx, posy: real;
dir: real;
pen: boolean;
public
constructor create(pb:tpaintbox);
procedure SA;
procedure SH;
procedure VW(d:real);
procedure DL(d:real);
procedure DR(d:real);
procedure Links;
procedure rechts;
procedure mitte;
procedure oben;
procedure unten;
procedure setze(x,y,d:integer);
end ;

var
Form1: TForm1;
kurve: tturtle;

implementation

var
n: integer;
l,f: real;

{$R *.dfm}

function arcsin(x:real):real;
begin
arcsin:=arctan(x/sqrt(1-sqr(x)))
end;
function arccos(x:real):real;
begin
arccos:=arctan(sqrt(1-sqr(x))/x);
end;


procedure tturtle.mitte; //turtle kommt in die Mitte vom Bildschirm
begin
posx:=z.width div 2;
posy:=z.Height div 2;
dir:=90;
end;

procedure tturtle.links; //turtle an den linken Rand
begin
posx:=0;
posy:=z.Height div 2;
dir:=0;
end;

procedure tturtle.rechts; //siehe oben
begin
posx:=z.width;
posy:=z.Height div 2;
dir:=180;
end;

procedure tturtle.oben;
begin
posx:=z.width div 2;
posy:=0;
dir:=270;
end;

procedure tturtle.unten;
begin
posx:=z.width div 2;
posy:=z.Height;
dir:=90;
end;


constructor tturtle.create(pb:tpaintbox); //turtle wird erstellt
begin
z:=pb;
posx:=0; posy:=0; dir:=0;
pen:=true;
z.refresh;
end;

procedure tturtle.SA; //Anfang des Zeichnens
begin
if pen=false then
pen:=true;
end;

procedure tturtle.SH; //Ende des Zeichnens
begin
pen:=false;
end;

procedure tturtle.dl(d:real); //linksdrehung
begin
dir:=dir+d;
if dir > 360 then begin
while dir >360 do Dir:=dir-360;
end
else begin
while dir< 0 do dir:= dir+360;
end;
end;

procedure tturtle.dr(d:real); //rechtsdrehung
begin
DL(-d);
end;

procedure tturtle.vw(d:real); //vorwärtsgehen
begin
z.canvas.moveto(trunc(posx),trunc(posy));
posx:=posx+cos(dir/180*pi)*d;
posy:=posy-sin(dir/180*pi)*d;
if pen then z.canvas.lineto (trunc(posx),trunc(posy));
end;

procedure tturtle.setze(x,y,d:integer);
begin
posx:=x;
posy:=y;
dir:=d;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;

procedure rek (n: integer ; l: real); //die prozedur zum zeichnen der äste
begin
if n=1
then
begin
kurve.SA;
kurve.DL(60);
kurve.VW(l);
kurve.SH;
kurve.VW(-l);
kurve.Dr(120);
kurve.SA;
kurve.VW(l);
kurve.SH;
kurve.VW(-l);
kurve.dl(60);
end

else
begin
kurve.SA;
kurve.DL(60);
kurve.VW(l);
rek(n-1 , l*0.6);
kurve.VW(-l);
kurve.Dr(120);
kurve.SA;
kurve.VW(l);
rek(n-1 , l*0.6);
kurve.VW(-l);
kurve.dl(60);
end;
end;

procedure TForm1.startClick(Sender: TObject); //das "hauptprogramm"
begin
n:=strtoint(edit1.Text);
l:=strtofloat(edit2.text);
kurve:=tturtle.create(paintbox1);
kurve.sa;
kurve.Mitte;
kurve.VW(1.6*l);
rek(n,l);
kurve.mitte;
kurve.Dr(120);
kurve.sa;
kurve.VW(1.6*l);
rek(n,l);
kurve.mitte;
kurve.dr(240);
kurve.SA;
kurve.VW(1.6*l);
rek(n,l);


end;

end.
leider werden die Zeilen hier nicht eingerückt, aber man kann es noch verstehen.
grafisch:


(ein Klick machts groß)
 
 
Nach oben
Ähnliche Themen, die dich vielleicht interessieren
Thema Autor Forum Antworten Letzter Beitrag
Delphi -=AVD=- Coder's Area 0 26.03.2004 10:02
Welches Buch für Delphi anfänger? Dexter Coder's Area 3 27.02.2002 04:58
Viren mit Delphi programmieren Superchristian Coder's Area 6 12.04.2001 16:56
Suche eBooks und Tutorials für Delphi 5 Thor Coder's Area 2 09.04.2001 07:56
Wer ist besser VB oder Delphi KTT Coder's Area 3 06.04.2001 20:12
Anzeigen:
Thema geschlossen

Lesezeichen

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche



Alle Zeitangaben in WEZ +2. Es ist jetzt 06:33 Uhr.


Lupuz.de - wir können auch anders!
©1998 - 2008, Lupuz:Information-Network
Powered by vBulletin Version 3.7.1 (Deutsch), Jelsoft Enterprises Ltd.
Grüne Links?

SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.