W
Ich würds mit fopen machen, da kannste die Daten schön der reihenfolge nach einlesen (außerdem kannste, falls der geladene Level nicht tut, in der Leveldatei nachlesen, da du eine übersichtliche Struktur hast...).
Zu deinem Map Problem: Ich würd nen struct machen, in dem alle Daten für EINE Position gespeichert sind, könnte dann z.B. so aussehen:
struct MapTile // Simpel gehalten...
{
int x; // X Coord auf dem Bildschirm
int y; // Y Coord auf dem Bildschirm
bool collision; // Kollisionsabfrage (false = begehbar, ...)
}
und dann definiert du, wo du sie eben brauchst, so viele Map Tiles, wie nötig (MapTile Tiles[100][50]; )
Wenn du die dann lädst, kannste ja in den Header der Datei die X/Y Tiles reinschreiben, die verwendet werden (Anzahl) und darunter eben ob sie begehbar sind oder nich, z.B. so:
FILE* LevelFile;
LevelFile = fopen("Levelname.map" /*oder irgend nen anderes Format...*/, "r");
int iMapSizeY;
int iMapSizeX;
freadf(LevelFile, "%03d", &iMapSizeY);
freadf(LevelFile, "%03d", &iMapSizeX);
for(int x=0;x<MapSizeX;x++)
{
for(int y=0;y<MapSizeY;y++)
{
int iCollision = 0;
freadf(LevelFile, "%03d", &Tiles[x][y].y /*3 stellige Zahlen reichen hier vollkommen*/);
freadf(LevelFile, "%03d", &Tiles[x][y].x);
freadf(LevelFile, "%01d", &iCollision);
if(iCollision == 0) // erklärt sich wohl von selbst...
Tiles[x][y].collision = false;
else
Tiles[x][y].collision = true;
}
}
Hab den Code nich getestet, sollst ihn sowieso selber schreiben (lernen )...
Aber ich hoff, dass das im Ansatz das richtige war.
cya WirrWar2850.