Spielfeld mit CopyRect füllen
-
Hi,
ich habe jetzt ein bisschen mit CopyRect herumgespielt, und wollte dann ein kleines programm programmieren, das eine art spielfeld zusammensetzt.
Ich habe in dem TImage Image1 die einzelnen "Bauteile", aus der die map zusammengesetzt wird. jedes einzelne Bauteil ist 32x32 pixel groß. in Image1 sind sie alle aneinandergehängt (eine reihe, ohne abstand).dann habe ich ein 2 dimensionales array, in dem die daten stehen. das spielfeld ist jetzt am anfang mal 5x5 teile groß.
also sieht di matrix z.B. so aus:1 0 2 3 5 6 2 0 1 0 3 2 1 0 1 3 0 0 0 2 0 0 0 2 1Das eigentliche spielfeld ist Image2.
mein code, der die teile aus Image1 in Image2 kopiert sieht so aus:
for(int y = 0; y < 5; y++) { for(int x = 0; x < 5; x++) { int wert = map[y][x]; TRect quelle = Rect(32*wert, 0, 32*(wert+1), 32); TRect ziel = Rect(32*x, 32*y, 32*(x+1), 32*(y+1)); Image2->Canvas->CopyRect(quelle, Image1->Canvas, quelle); } }aber in Image2 werden die Teile sehr eigenartig angeordnet. woran kann das liegen??? und manchmal bekomme ich in einer reihe mehr als 5 teile.
-
Ok, ich habe meine fehler selbst gefunden.
1. int wert = map[y][x];
- x und y vertauscht2. Image2->Canvas->CopyRect(quelle, Image1->Canvas, quelle);
- 2x quelle???
das muss natürlich Image2->Canvas->CopyRect(ziel, Image1->Canvas, quelle); heißen