Bei mir ist es zwar nicht immer genau gleich, aber so vom Prinzip her mach ich es so:
Ich definier mir ein paar Konstanten, z.B.
Code: Alles auswählen
#Wall = 500
#Floor = 1000
#Object = 1500
#Person = 2000
Dann lade ich die entsprechenden Sprites an den Wert der entsprechenden Konstante + dem Zähler der Ladeschleife, also wenn ich z.B. 30 Wand-Sprites hab, haben diese die Nummern 500 bis 529. Nun kann ich z.B. eine Map entsprechend zeichnen:
Natürlich brauch ich zwischen Wänden und Böden nicht bei jedem Spiel unterscheiden, aber bei meinem momentanen ist das von Vorteil. Ansonsten würd ich da natürlich alles unter #Tile zusammenfassen oder so.
Manchmal gibt es auch Sprites, die indirekt mit anderen Sprites zu tun haben. Dort achte ich dann bereits beim Abspeichern darauf, daß sie z.B. die gleiche Nummer haben, dann kann ich beispielsweise einmal mit #Wall+Spritenummer und einmal mit #Floor+Spritenummer zugreifen, sofern erwünscht.
In meinem derzeitigen Projekt gibt es z.B. Objekte, die unter bestimmten Umständen zu einem Tile umfunktioniert werden müssen. Da ist es dann sehr hilfreich, wenn beide zwar verschiedene "Offsets" (durch die Konstanten) haben, aber relativ gesehen wieder die gleiche "Seriennummer"
---
In einem früheren Projekt waren die Level-Daten übrigens mit ganz normalen ASCII-Codes abgespeichert, vorzugsweise Zahlen und Buchstaben. Da hab ich es dann so gemacht, daß die einzelnen Tiles die jeweiligen ASCII-Codes als Nummer hatten...
Würd mich aber auch mal interessieren, wie das andere machen. Vielleicht gibt's da einige geschicktere Möglichkeiten... bzgl. Sounds hab ich bisher übrigens noch nie so viele drin gehabt, als daß ich da besonders auf die Verwaltung hätte achten müssen, daher kann ich dazu jetzt nix sagen...