IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

problème lors de l'execution


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 52
    Points : 34
    Points
    34
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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à

  2. #2
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 52
    Points : 34
    Points
    34
    Par défaut
    j'allais oublié le back-trace me donne ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #0 0x00401d59    Tile::setX (??:??)
    #1 0x00401965    Map::chargementTiles (??:??)
    #2 0x004020f5    SDL_main (??:??)
    #3 0x00402920    console_main (win32/SDL_win32_main.c:249)
    #4 0x00402ae5    WinMain (win32/SDL_win32_main.c:361)
    #5 0x0040241a    main (??:??)
    en ce qui concerne la classe Tile, il n'y a vraimment rien d'important, l'implémentation est des plus simpliste (du genre: return x; )

    tile.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    #ifndef TILE_HEADER
    #define TILE_HEADER
     
    #include "global.h"
     
    class Tile
    {
        public:
        void setX(int coorX);
        void setY(int coorY);
     
        int getX() const;
        int getY() const;
     
        void setTravers(bool ok);
        bool getTravers() const;
     
        void setId(int ident);
        int getId() const;
     
        private:
        int x;
        int y;
        bool travers;
        int id;
    };
     
    #endif

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Ton tableau "tiles" n'a pas l'air d'avoir été dimensionné avant sa première utilisation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void Map::chargementTiles()
    {
        int x=0, y=0;
        bool ok = true;
     
        nb_tile = (chipset->w/TILE_W)*(chipset->h/TILE_H);
     
    ----> tiles.resize(nb_tile);
     
        for(int i = 0; i<nb_tile;i++)
        {
        tiles[i].setX(x);

  4. #4
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 52
    Points : 34
    Points
    34
    Par défaut
    ca me fais toujours le même problème, par contre je vais essayer de redimentionner également mon tableau qui contient la map[][], mais pour un tableau à 2 dimention je fais comment ?

    donc voila, j'ai redimentionnéla map comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    map.resize(nb_tile_h);
     
        for(int i=0 ; i < map.size() ; i++)
        {
        map[i].resize(nb_tile_w);
        }
    je n'est plus d'erreur, la fenêtre s'affiche bien mais reste toute blanche (la map ne s'affiche pas) un erreur dans mon algo. ?! :/

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 52
    Points : 34
    Points
    34
    Par défaut
    J'ai trouvé ce que j'avais oublié ca fonctionne nickel, vraimment MERCI !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Postgre 8.3 : Problème lors de l'execution d'une fonction
    Par palassou dans le forum Requêtes
    Réponses: 7
    Dernier message: 22/12/2009, 14h44
  2. problème lors de l'execution de mon web service
    Par perrotta dans le forum Visual Studio
    Réponses: 1
    Dernier message: 02/12/2009, 17h59
  3. Problème lors de l'execution d'une action
    Par jshems dans le forum Struts 1
    Réponses: 4
    Dernier message: 21/07/2008, 14h13
  4. problème lors de l'execution d'un projet compilé
    Par nathanaelle dans le forum Windows Forms
    Réponses: 2
    Dernier message: 13/02/2007, 22h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo