Mapeditor mit Arrays zu inflexibel...
Übersicht

![]() |
DamienXBetreff: Mapeditor mit Arrays zu inflexibel... |
![]() Antworten mit Zitat ![]() |
---|---|---|
habe vor einiger Zeit mal einen Mapeditor für ein kleines Projekt geschrieben!
Ich habe dazu ne einfache Lösung mit Arrays gewählt da ich sie damals als einfacher und Ressourcenschonender hielt. Das erste Problem hatte ich als ich nach dem einlesen der Kartendaten die Maps resizen wollte, was in einem Mapeditor wohl sehr von Vorteil sein soll ^^! Dann hab ich mit Arrays in Arrays gearbeitet da ich so praktisch ein Mehrdimensionales Array (was es ja eigentlich nicht ist) vergrößern und verkleinern konnte was ich aber nicht für die eleganteste Lösung halte! Nun zu einem der Probleme. Ich hab jedem der Tiles eine Art ID gegeben damit ich feststellen konnte welche tiles den Spieler blocken und welche nicht. (---> wenn das Tile die ID <10 hatte hat es eben geblockt) So für den Anfang auch nicht schlecht dacht ich nur stoß ich irgendwann auf das Prob dass ich die Tiles und Tilesets ja nicht von grundauf darauf festlegen will ob ein Tile blockt oder nicht. Nur ich denke wenn ich es flexibler machen möchte muss ich wohl Types benutzen und wieder von vorne beginnen! Nun zu den eigentlichen fragen ^^ Also 1. Muss ich wenn ich nen flexibleren Mapeditor schreiben will Types von vorne herein benutzen wenn ich features wie das freie Einstellen der Blocks (wenn man das als Feature werten kann xD), evtl. Scripting, Maps aus mehreren Tilessets zusammenstellen, 4 Layern.. etc. einbauen will. 2. Da ich von Types nur das wichtigste weiß.. wie stell ich das technisch an? Ich dachte erst ich erstelle einen Typ TTile mit den Feldern die ich brauche, gib jedem Tile die Informationen und lasse sie dann zeichnen mit den einzelnen Daten. Aber ich rechne auch damit dass bei einer Tilemap von 200*200 (als Bsp) da ne ganze Menge an Daten verarbeitet werden (man beachte die 4 Layer)! Nebenbei sei erwähnt dass ich natürlich die gleiche Technik des Mapeditors in mein neues/altes^^ Projekt einbauen will.. Hoff mal ich habs einigermaßen erklärt.. Antworten würden mich freuen Grüße |
||
Lets make things better... |
![]() |
Farbfinsternis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Arrays kann man schon nehmen, Du musst halt nur beim resizen ein Zwischenpuffer_Array anlegen. In diesen kopierst Du die aktuelle Map, dann vergrößerst/verkleinerst Du die original Map und schreibst die Daten aus dem Puffer zurück.
Zum zweiten Problem: Nimm nicht einfach ein Int Array, sondern erstelle Dir eine Klasse die Du dann als Array auslegst. Beispiel: Code: [AUSKLAPPEN] Type TCell Field tile_frame:Int Field tileset_image:TImage Field collision:Byte End Type Type TLevel Field map_data:TCell[,] Function Init:TLevel(width:Int, height:Int) Local level:TLevel = New TLevel level.map_data = New TCell[width,height] Return level End Function End Type Ist ungetestet, sollte aber so oder so ähnlich funktionieren. |
||
Farbfinsternis.tv |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group