Entweder sehen deine Maps so aus, wie ich oben beschrieben habe, mit 0, 1 usw für die jeweiligen Tiles. Dann musst du eben in deiner ANzeige-Routine abfragen, welche Ziffer sich dort befindet und dann das korrekte tile setzen. Da arbeitest du am besten mit Variablen und änderst die ID des Sprites je nach Tile in der Map.
Pseudocode:
Code: Alles auswählen
if zeichen in map = 1
spriteid = 5
elseif zeichen in map = 2
spriteid = 8
elseif zeichen in map = 3
spriteid = 19
endif
displaysprite(spriteid, posx, posy)...
Also etwa so:
mapdata[x][y].grafik_x = 1;
mapdata[x][y].grafik_y = 4;
Das würde bedeuten, dass auf der Karte an der Stelle x,y das Tile verwendet wird, welches sich auf dem Tileset an der Position 1, 4 befindet. Dann rechnest du einfach diese Position * 50, dann hast du die Pixelposition.
Also ist dann auf der Karte bei x,y die Grafik mit den Pixelkoordinaten auf dem Tileset 50, 200, dieses musst du dann entsprechend aus dem Tileset clippen und anzeigen.
Für größere Projekte eignet sich imo die Methode 2 besser, wo man für jedes Tile auf der Karte die Koordinaten auf den Tileset angibt und diese dann aus dem Tileset heraus geclippt und angezeigt werden. Hat auch den Vorteil, dass man keine Nummern für die jeweiligen Grafiken vereinbaren muss sondern direkt mit den Positionen arbeiten kann. Es ist einfach logischer zu sagen, an der Karte Stelle x, y befindet sich das Sprite welches sich auf dem Tile an der Stelle 1, 4 befindet. (Welches dann das Tile 1 von links und 4 von oben wäre) In Pixelkoordinaten, wie gesagt, * 50 rechnen.