Ich habe ein Problem und bin mir nicht sicher, wie ich die Lösung angehen soll. Ich muss einen 2D-Map-Editor für meine XNA-App mit einer bestimmten Anzahl von Kacheln erstellen. Sagen Sie eine Karte wird 50x100 Fliesen sein.XNA wie man eine 2D-Karte speichert und zeichnet?
Ich bin mir nicht sicher, welche Datenstruktur für die Karte, Kacheln und wie man sie auf der Festplatte zum späteren Laden speichert.
Was ich jetzt denke, ist dies. Ich werde wie so die Karte in einer Textdatei speichern:
//x, y, ground_type, object_type
0, 0, 1, 0
0, 1, 2, 1
0 = Gras, 1 = Fluss etcc für Boden Gelände und 0 = Nichts, 1 = Wand zum Objekttyp.
Dann werde ich ein Spiel Component Map Klasse, die die Datei oder erstellen Sie eine neue von Grund auf neu lesen:
class Map : DrawableGameComponent {
//These are things like grass, whater, sand...
Tile ground_tiles[,];
//These are things like walls that can be destroyed
Tile object_tiles[,];
public Map(Game game, String filepath){
for line in open(filepath){
//Set the x,y tile to a new tile
ground_tiles[line[0], line[1]] = new Tile(line[3])
object_tiles[line[0], line[1]] = new Tile(line[4])
}
}
public Map(Game game, int width, int heigth){
//constructor
init_map()
}
private void init_map(){
//initialize all the ground_tiles
//to "grass"
for i,j width, heigth{
ground_tiles[i,j] = new Tile(TILE.GRASS)
}
public override Draw(game_time){
for tile in tiles:
sprite_batch.draw(tile.texture, tile.x, tile.y etc..)
}
My Tile-Klasse wird wahrscheinlich kein Spiel Komponente sein. Ich bin mir immer noch nicht ganz sicher, wie ich die Kollisionserkennung zum Beispiel zwischen einem vom Spieler mit dem Kartenobjekt stammenden Geschoss behandeln soll. Sollte das von der Map-Klasse oder einer Super-Manager-Klasse gehandhabt werden?
Alle Hinweise sind willkommen. Danke!