Erstmal kann man deinen code zu kürzten:
Delphi-Quellcode:
procedure TMainForm.AddBrick(aX, aY: Double; aColor: Integer);
begin
with TBrickEditor.Create(AdSpriteEngine) do begin
Image := AdImgLst.Find('brick');
Width := 90;
Height := 20;
X := aX;
Y := aY;
Color := aColor;
end;
end;
Zitat:
Wenn ich
Delphi-Quellcode: markieren
Y := 1+j * Height;
X := 1+i * w;
schreibe klappts... Confused
Geht das nicht anders?
Im Prinzip nicht. Das ganz lässt sich auch schnell erklären.
Du veränderst gleich große Objekte von einer Größe von 90X20.
Wenn du so speicherst wie es Igel in seinen Brekout Clone macht gilt folgendes:
Nehmen wir an du hast eine Breite von 640 und eine Höhe von 480.
640 div 90 = 7
480 div 20 = 24
Du hast also jetzt ein zwei 2D raster welches 7X24 große ist.
also haben die Objekte z.b. jetzt als Positions angaben:
X:2 und Y: 2
jetzt muss du einfach nur noch
X*90 und y*20 rechnen und schon hast du die genau Zeichen Position.
das geht aber nur bei gleich großen Objekten wie in deinen Fall.