Da hier keiner mehr Antwortet und mir langweilig war:
Delphi-Quellcode:
private
procedure Pyramide_paint(grundflaeche, anzahl_ebenen: Integer);
procedure TForm1.Pyramide_paint(grundflaeche, anzahl_ebenen: Integer);
var i, i2, hoehe, grundflaeche_halb: integer;
begin
//Bug entfernt.
if frac(grundflaeche / 2) <> 0 then
grundflaeche := grundflaeche -1;
hoehe := trunc((grundflaeche * sqrt(3)) /2);
grundflaeche_halb := grundflaeche / 2;
with Form1 do
begin
Canvas.Pen.Color := clBlack;
for i := 0 to anzahl_ebenen -1 do
begin
Canvas.MoveTo(0 + grundflaeche_halb * i, hoehe * (anzahl_ebenen - i));
for i2 := 0 to (anzahl_ebenen -1) - i do
begin
Canvas.MoveTo(Canvas.PenPos.X + grundflaeche, Canvas.PenPos.Y);
Canvas.LineTo(Canvas.PenPos.X - grundflaeche_halb, Canvas.PenPos.Y - hoehe);
Canvas.LineTo(Canvas.PenPos.X - grundflaeche_halb, Canvas.PenPos.Y + hoehe);
Canvas.LineTo(Canvas.PenPos.X + grundflaeche, Canvas.PenPos.Y);
end;
end;
end;
end;
// Aufruf könnte so aussehen:
Pyramide_paint(100, 3);
Form1 kann durch beliebige Komponenete ersetzt werden solange diese .Canvas beherscht.
Ich würde empfehlen mich mal über die richtige Methode zum Konvertieren von Double in int zu informieren und es entsprechend zu ändern.
Unter umständen wird es dir auch ein erfahrenes Mitglied verraten.
mfg nic