J'ai un problème et je ne sais pas comment aborder la solution. Je dois créer un éditeur de carte 2D pour mon application XNA, avec un certain nombre de tuiles. Dites qu'une carte sera de 50x100 tuiles.XNA comment stocker et dessiner une carte 2D?
Je ne sais pas quelle structure de données utiliser pour la carte, les tuiles et comment les stocker sur le disque dur pour un chargement ultérieur.
Ce que je pense maintenant est ceci. Je vais stocker la carte dans un fichier texte comme ceci:
//x, y, ground_type, object_type
0, 0, 1, 0
0, 1, 2, 1
où 0 = herbe, 1 = ETCC River pour un terrain au sol, et 0 = Nothing, 1 = mur pour les types d'objets.
Ensuite, je vais avoir une classe Game Component Carte qui peut lire ce fichier ou créer un nouveau à partir de zéro:
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..)
}
Ma classe de tuile ne sera probablement pas un élément de jeu. Je ne sais toujours pas comment gérer la détection de collision par exemple entre une balle provenant du joueur et l'objet carte. Est-ce que cela devrait être géré par la classe Map ou une classe de super manager?
Tous les conseils sont les bienvenus. Merci!