SDL HILFE BRAUCHE HILFE !!!



  • Wiso Funktioniert dass nicht ???? Der PC Stürzt immer ab 😞

    #include <SDL.h>
    #include <string>
    #include <iostream>
    #include <windows.h>
    
    SDL_Surface *pScreen;
    SDL_Surface *pImage;
    SDL_Rect Rect;
    
    using namespace std;
    
    void LoadBackground(const string sFilename)
    {
    	if(SDL_Init(SDL_INIT_VIDEO) == -1)
    	{
    		exit(1);
    	}
    
    	pScreen = SDL_SetVideoMode(800,600,16, SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_FULLSCREEN);
    	if(pScreen == NULL)
    	{
    		exit(1);
    	}
    	pImage = SDL_LoadBMP(sFilename.c_str());
    	if(pImage == NULL)
    	{
    		exit(1);
    	}
    	Rect.x = 0;
    	Rect.y = 0;
    	Rect.w = pImage->w;
    	Rect.h = pImage->h;
    	SDL_FillRect(pScreen,NULL,SDL_MapRGB(pScreen->format,255,255,255));
        SDL_BlitSurface(pImage,NULL,pScreen,&Rect);
    }
    
    int main(int argc, char *argv[])
    {
    	int a;
    	while(a != 5)
    	{
    	LoadBackground("Background.bmp");
    	}
    	return(0);
    }
    

    PS: Bitte nicht in Spieleprogrammierung Verschieben(Sonst kann ich nicht mehr antworten ;))



  • weil du 'a' niemals erhöhst -> Endlosschleife.



  • du könntest dich ja auch einfach anmelden 😉
    ach übrigens: coole überschrift 👍

    int a;
        while(a != 5)
        {
        LoadBackground("Background.bmp");
        }
    

    was soll denn das sein? entweder a ist zufällig 5, dann passiert gar nichts, oder a ist zufällig nicht fünf, dann ist das ne endlosschleife 😕

    ich vermute mal, dass sdl_init und sdl_setvideomode nur einmal aufgerufen werden sollten.



  • ach ja, und das geladene bild (bzw, in deinem fall, die unmenge an geladenen bildern) sollte man vielleicht auch wieder freigeben 🙄



  • So funktioniert dass aber immernoch nicht

    #include <SDL.h>
    #include <string>
    #include <iostream>
    #include <windows.h>
    
    SDL_Surface *pScreen;
    SDL_Surface *pImage;
    SDL_Rect Rect;
    
    using namespace std;
    
    void LoadBackground(const string sFilename)
    {
    	if(SDL_Init(SDL_INIT_VIDEO) == -1)
    	{
    		exit(1);
    	}
    
    	pScreen = SDL_SetVideoMode(800,600,16, SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_FULLSCREEN);
    	if(pScreen == NULL)
    	{
    		exit(1);
    	}
    	pImage = SDL_LoadBMP(sFilename.c_str());
    	if(pImage == NULL)
    	{
    		exit(1);
    	}
    	Rect.x = 0;
    	Rect.y = 0;
    	Rect.w = pImage->w;
    	Rect.h = pImage->h;
    	SDL_FillRect(pScreen,NULL,SDL_MapRGB(pScreen->format,255,255,255));
        SDL_BlitSurface(pImage,NULL,pScreen,&Rect);
    }
    
    int main(int argc, char *argv[])
    {
    	int a;
    	LoadBackground("Background.bmp");
    	while(pScreen != NULL)
    	{
    	}
    
    	return(0);
    }
    

    Die Schleide ist da dass proggi nicht Beendet wird :-



  • also ich empfehl dir erstmal n tutorial anzuschaun, z.B. http://www.pronix.de/pronix-519.html

    mfg blan



  • zum beenden fehlt sowas wie SDL_Quit
    die events solltest auch abfragen
    bsp zB da:
    http://de.wikibooks.org/wiki/SDL



  • Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum Spiele-/Grafikprogrammierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Ganz ehrlich: Programmier' erst mal einen Taschenrechner in der Konsole oder sowas... 🙄


Anmelden zum Antworten