problème lors de l'execution
bonjour tout le monde
Voilà, j'ai aucune erreur lors de la compilation mais à l'execution mon programme me retourne une erreur et impossible de voir ce que c'est, j'ai essayé de debugué il me dit pas grand chose, pouvez vous m'aider svp ?
main.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
Map map;
map.chargementTiles();
map.aleatoire();
...
map.affichage();
SDL_Flip(ecran);
}
SDL_Quit();
return EXIT_SUCCESS;
} |
map.cpp
Code:
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
|
#include "map.h"
Map::Map()
{
chipset = IMG_Load("chips.png");
width = WIDTH;
height = HEIGHT;
nb_tile_w = width/TILE_W;
nb_tile_h = height/TILE_H;
}
Map::~Map()
{
SDL_FreeSurface(chipset);
}
void Map::chargementTiles()
{
int x=0, y=0;
bool ok = true;
nb_tile = (chipset->w/TILE_W)*(chipset->h/TILE_H);
for(int i = 0; i<nb_tile;i++)
{
tiles[i].setX(x);
tiles[i].setY(y);
tiles[i].setTravers(ok);
tiles[i].setId(i);
x+=TILE_W;
if(x>(chipset->w-TILE_W))
{
x=0;
y+=TILE_H;
}
}
}
void Map::aleatoire()
{
srand(time(NULL));
for(int i=0; i<nb_tile_h; i++)
{
for(int j=0; j<nb_tile_w; j++)
{
map[i][j] = rand()%nb_tile;
}
}
}
void Map::affichage()
{
SDL_Rect src, dst;
int x=0,y=0;
for(int i=0; i<nb_tile_h;i++)
{
for(int j=0; j<nb_tile_w;j++)
{
src.x = tiles[map[i][j]].getX();
src.y = tiles[map[i][j]].getY();
dst.x = x;
dst.y = y;
SDL_BlitSurface(chipset,&src,SDL_GetVideoSurface(),&dst);
x+=TILE_W;
}
x=0;
y+=TILE_H;
}
} |
map.h
Code:
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
|
#ifndef MAP_HEADER
#define MAP_HEADER
#include "global.h"
#include "tile.h"
class Map
{
public:
Map();
~Map();
void chargementTiles();
void affichage();
void chargement(string map);
void aleatoire();
private:
SDL_Surface *chipset;
vector <Tile> tiles;
vector <vector<int> > map;
unsigned int width;
unsigned int height;
unsigned int nb_tile;
unsigned int nb_tile_w;
unsigned int nb_tile_h;
};
#endif |
ce que me dit le debugger:
Code:
1 2 3 4 5 6 7 8
|
Selecting target: default
Compiling: done
Starting debugger: done
Adding source dir: C:\Documents and Settings\blastmanu\Mes documents\biguels\
Adding file: SDLapp.exe
Program received signal (SIGSEGV)
Segmentation fault |
apparemment c'est un pointeur mais j'ai regardé et je ne vois vraimment rien, je désespère là :(