1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| #include <fstream>
#include <iostream>
#include <vector>
#include <string>
#include "position.h"
using namespace std;
struct SWrap {
/*ici les coord de départ sur la map courante*/
int sourceX;
int sourceY;
/*ici, l'identification de la map de sortie: nom, coordonnées, etc.*/
int destMapX;
int destMapY;
/*ici les coordonnees d'arrive sur la map de sortie*/
int destX;
int destY;
};
struct SMap {
size_t rows;
size_t cols;
std::vector<unsigned char> tiles;
std::vector<SWrap> wraps;
std::string title;
/* et, comme on peut travailler en orienté objets, on peut rajouter
* une fonction membre qui renvoie le caractère qui se trouve en X,Y ;)
*/
const unsigned char tileAt(size_t x, size_t y) const
{return tiles[y*cols + x];}
/* et la même chose avec une Position (sait on jamais ;)) */
const unsigned char tileAt(Position const & pos)
{return tileAt(pos.x(), pos.y());}
};
int main()
{
ifstream ifs("ephinea.txt");
SMap Map;
Map.tiles.clear(); //supprime les informations de la map précédante
Map.wraps.clear();
size_t rows;
size_t cols;
string contenue;
ifs>>rows>>cols;
cout << rows << " " << cols << endl;
getline(ifs, contenue);
cout << contenue << endl;
//char a;
//ifs>>a;
//cout << a << endl;
for(size_t y = 0; y < rows; ++y)
{
//char a;
//ifs>>a;
//cout << a << endl;
for(size_t x = 0; x < cols; ++x)
{
char c;
ifs>>c;
cout << c << endl;
Map.tiles.push_back(c);
}
getline(ifs, contenue);
}
int wrapCount;
ifs>>wrapCount;
cout << wrapCount << endl;
for(int i = 0; i< wrapCount;++i)
{
SWrap wrap;
ifs>>wrap.sourceX>>wrap.sourceY
>>wrap.destMapX>>wrap.destMapY
>>wrap.destX>>wrap.destY;
Map.wraps.push_back(wrap);
}
ifs>>Map.title;
cout << Map.title << endl;
} |