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 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
| #include "Librairies.h"
void LectureFichierMap(std::string &tilset, Map &map, int &x, int &y)
{
std::string text;
std::stringstream bufferFichierMap;
std::ifstream file("fichier.txt");
bufferFichierMap << file.rdbuf();
file.close();
while (text != "#tileset\r")
{
std::getline(bufferFichierMap, text);
};
std::getline(bufferFichierMap, tilset);
while (text != "#level\r")
{
std::getline(bufferFichierMap, text);
};
bufferFichierMap >> x >> y;
for (int a(0); a < y; a++)
{
map.tableMap.push_back(std::vector<int>(x));
for (int b(0); b < x; b++)
{
bufferFichierMap >> map.tableMap[a][b];
}
}
bufferFichierMap.clear();
}
void Afficher(SDL_Renderer* pRender, SDL_Texture* pTexture, std::vector<std::vector<int>>& tableau, int &x, int &y)
{
int i, j;
SDL_Rect Rect_dest;
Rect_dest.w = 16;
Rect_dest.h = 16;
SDL_Rect Rect_source;
Rect_source.w = 16;
Rect_source.h = 16;
for (i = 0; i < x; i++)
{
for (j = 0; j < y; j++)
{
Rect_dest.x = i*16;
Rect_dest.y = j*16;
Rect_source.x = (tableau[j][i] % 13)*16;
Rect_source.y = (tableau[j][i] / 13)*16;
SDL_RenderCopy(pRender, pTexture, &Rect_source, &Rect_dest );
}
}
SDL_RenderPresent(pRender);
}
int main(int argc, char** argv)
{
Map map;
int x(0), y(0);
SDL_Window* screen;
SDL_Surface *tileset;
SDL_Texture *pTexture;
SDL_Event event;
SDL_Renderer* pRender;
std::string tilset;
LectureFichierMap(tilset, map, x, y);
SDL_Init(SDL_INIT_VIDEO); // prepare SDL
screen = SDL_CreateWindow("Map Mario", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,x*16,y*16, SDL_WINDOW_SHOWN);//
pRender = SDL_CreateRenderer(screen, -1, SDL_RENDERER_PRESENTVSYNC);//
tilset.pop_back();
tileset = SDL_LoadBMP(tilset.c_str());
pTexture = SDL_CreateTextureFromSurface(pRender,tileset);
if (!tileset)
{
std::cout << "Echec de chargement tileset1.bmp" << std::endl;
SDL_Quit();
system("pause");
exit(-1);
}
Afficher(pRender, pTexture, map.tableMap, x, y);
do // attend qu'on appuie sur une touche.
{
SDL_PollEvent(&event);
SDL_Delay(100);
} while (event.type != SDL_KEYDOWN);
SDL_FreeSurface(tileset);
SDL_Quit();
return 0;
} |
Partager