Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Geschriebenes Programm stürzt ab (https://www.delphipraxis.net/144518-geschriebenes-programm-stuerzt-ab.html)

Micha88 11. Dez 2009 13:31

Re: Geschriebenes Programm stürzt ab
 
Damit es auch funktioniert, folgende Verbesserung:

Delphi-Quellcode:
grundflaeche_halb := grundflaeche DIV 2;

thepaine91 11. Dez 2009 13:57

Re: Geschriebenes Programm stürzt ab
 
Michael Linden es funktioniert auch so schon lies dir nochmal den Quelltext durch. ;)
mfg nic

thepaine91 23. Dez 2009 10:39

Re: Geschriebenes Programm stürzt ab
 
:D Mir war schon wieder langweilig so ein Tag vor dem Urlaub, ^^
da hab ich das ganze mal umgeschrieben. So das eine (3D) Pyramide gezeichnet wird. ^^
Kannst ja nach den Schulferien(sind ja atm soweit ich weis) deinem Lehrer geben. ^^

Delphi-Quellcode:
procedure TForm1.Pyramide_3d_paint(grundflaeche, anzahl_ebenen: Integer);
var i, i2, hoehe, grundflaeche_halb, rw_d3d: integer;
begin
  with form1.Canvas do
  begin
    if frac(grundflaeche / 2) <> 0 then
      grundflaeche := grundflaeche -1;
    hoehe := trunc((grundflaeche * sqrt(3)) /2);
    grundflaeche_halb := trunc(grundflaeche / 2);
    Pen.Color := clred; // Sieht so ganz nett aus auf schwarzem Hintergrund :D
    for i := 0 to anzahl_ebenen -1 do
    begin
      MoveTo(0 +  grundflaeche_halb * i , hoehe * (anzahl_ebenen - i));
      for i2 := 0 to (anzahl_ebenen -1) - i do
      begin
        MoveTo(PenPos.X + grundflaeche, PenPos.Y);
        LineTo(PenPos.X - grundflaeche_halb, PenPos.Y - hoehe);
        LineTo(PenPos.X - grundflaeche_halb, PenPos.Y + hoehe);
        LineTo(PenPos.X + grundflaeche, PenPos.Y);
      end;
    end;
    rw_d3d := round(Sqrt(grundflaeche_halb * grundflaeche_halb / 2));
    for i := 0 to anzahl_ebenen - 1 do
    begin
      MoveTo((grundflaeche * anzahl_ebenen) - ( grundflaeche_halb * i ), hoehe * (anzahl_ebenen - i));
      for i2 := 0 to (anzahl_ebenen -1) - i do
      begin
        MoveTo(PenPos.X + rw_d3d, PenPos.Y - rw_d3d);
        LineTo(PenPos.X - rw_d3d - grundflaeche_halb, PenPos.Y + rw_d3d - hoehe);
        LineTo(PenPos.X + grundflaeche_halb, PenPos.Y + hoehe);
        LineTo(PenPos.X + rw_d3d, PenPos.Y - rw_d3d);
      end;
    end;
  end;
end;
Ps: Mathe ist bei mir lang her falls ihr einen Fehler entdeckt einfach Bescheid sagen. Meiner Erinnerung nach sollte das aber so stimmen. :xmas:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:04 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz