SDL Error



  • Ich bekomme in meinem Programm immer einen Runtime Error,

    Fatal signal: Segmentation Fault (SDL Parachute Deployed)
    

    wenn ich z.B diese Funktion

    void LoadMap(void)
    {
        FILE* file;
        file = fopen("Level.dat", "r");
        if(!file)
        {
            fprintf(stderr, "Datei konnte nicht geoeffnet werden: Couldn't open Level.dat\n");
            exit(1);
        }
        char level;
        while (( level = getc(file)) != '\n' ) ;
        while (( level = getc(file)) != 'e')
        {
            while (( level = getc(file)) != '\n' )
            {
                field[_count][y] = level;
                putc(field[_count][y], stdout);
                _count++;
            }
                _count = 0;
                y++;
                fprintf(stdout, "\n");
        }
        _count = 0;
        y = 0;
        fclose(file);
    }
    

    innerhalb meiner Spielschleife

    while(running)
        {
            SDL_Event event;
            while(SDL_PollEvent(&event))
            {
                switch(event.type)
                {
                    case SDL_KEYDOWN: switch(event.key.keysym.sym)
                                      {
                                          case SDLK_ESCAPE: running = 0;
                                                            break;
                                          default:          break;
                                      }
                                      break;
                    case SDL_QUIT:    running = 0;
                                      break;
                }
            }
    
            DrawMap(screen);
    
            DoMove(screen);
    
            SDL_Flip(screen);
    
            SDL_Delay(time_left());
            next_time += TICK_INTERVAL; 
    }
    

    Wenn ich die Funktion LoadMap() jedoch vor der Spielschleife aufrufe, erhalte ich keinen Fehler.

    Ich hab dann noch ein kleines anderes Problem: Mein mit

    if(SDL_Init(SDL_INIT_VIDEO)<0)
        {
            fprintf(stderr, "SDL konnte nicht initialisiert werden: %s\n", SDL_GetError());
            exit(1);
        }
    
        screen = SDL_SetVideoMode(640, 480, 32, SDL_DOUBLEBUF | SDL_HWSURFACE | SDL_SRCCOLORKEY | SDL_SRCALPHA);
        if(!screen)
        {
            fprintf(stderr, "Konnte Bildschirmmodus nicht setzen: %s\n", SDL_GetError());
            exit(1);
        }
    

    erzeugtes Fenster öffnet sich nicht wie gewünscht, sonder minimal, so, als hätte jemand das Fenster ganz kleine gezogen (Größe)...

    Hoffe jemand kann mir helfen 🙂



  • Hallo,

    laß mal bei der Funktion SDL_SetVideoMode die Flags SDL_SRCCOLORKEY | SDL_SRCALPHA weg, ich glaube die gehöre da einfach nicht hin.



  • Gesagt getan.....allerdings bekomm ich damit nicht den Fehler weg..... 🙄



  • Jetzt ha ich meine Funktion zum Laden des Levels in eine externe Klasse gepackt und schon funzt alles prima.....warum auch immer!

    Allerdings hab ich das mit dem Fenster immer noch nicht hinbekommen. Beim Start ist es immer noch ganz verkleinert.


Anmelden zum Antworten