Einzelnen Beitrag anzeigen

thepaine91

Registriert seit: 29. Okt 2009
Ort: Neckarsulm
36 Beiträge
 
Delphi 6 Enterprise
 
#13

Re: Geschriebenes Programm stürzt ab

  Alt 23. Dez 2009, 11:39
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.
>>> Hier könnte eine Signatur stehen <<<
  Mit Zitat antworten Zitat