Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

Re: [Logik] Bild durch for Schleife auf Formular verteilen

  Alt 28. Dez 2009, 14:26
Wenn du das ganze Feld zeichnen willst, dann mußt du in ZWEI verschachtelten Schleifen X UND Y durchgehn.

Du gehts nur X und Y gleichzeitig über I durch, was natürlich eine Diagonale ergibt.

hab mich verguckt

Code:
X := 1 + 64 * (I mod [b]16[/b]);
Y := 1 + 48 * (I div [b]16[/b]);
//                      ^^ die Anzahl der Spalten ... hier wirst du wohl eine
//                      Variable reinnehmen müssen, wenn die Größe veränderbar ist
also
Code:
X := 1 + 64 * (I mod ((ClientHeight - 2) div 48));
Y := 1 + 48 * (I div ((ClientHeight - 2) div 48));
macht dann
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  I, Z: Integer;
begin
  // ...weiterer Code...
  Z := (ClientWidth - 2) div 64;
  SetLength(Terrain, Z * ((ClientHeight - 2) div 48));
  for I := 0 to High(Terrain) do
  begin
    with Terrain[I] do
    begin
      X := 1 + 64 * (I mod Z);
      Y := 1 + 48 * (I div Z);
      // ...
    end;
  end;
  // ...und noch mehr Code...
end;
PS: warum hast du dein SetLength so umständlich berechnet?
DIV rundet doch eh ab
$2B or not $2B
  Mit Zitat antworten Zitat