Mapeditor mit Arrays zu inflexibel...

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

DamienX

Betreff: Mapeditor mit Arrays zu inflexibel...

BeitragDo, Jul 06, 2006 15:11
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Jul 06, 2006 16:11
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group