SDL2 - anfänger problem: raumschiff darstellen



  • Hallo allerseits,

    Ich bin vor kurzer zeit auf SDL2 umgestiegen und habe nun folgendes Problem:

    Ich habe bei einem BildExample abgeschaut wie man mit SDL2 was darstellt...
    das ganze muss anscheind erst auf eine Textur gebracht werden und dann nochmals
    an den Render geschickt werden - egal alles tuts wie ich es will und ich kann auch die IMG_Load(jpg,png,tga...)dank sdl_image.h benutzen 🙂

    nun war ich an den punkt wo ich ein kleines rauschiff steuern konnte und sogar
    schießen konnte... Da ich aber mehrmals schießen wollte hab ich im internet gegoogelt und folgendes endeckt:

    jemand der genau das gleiche problem hatte wie ich
    http://stackoverflow.com/questions/22532065/sdl2-bullet-movement-not-working

    da hab ich mir den code mal ganz genau angeschaut und war begeistert von den klassen, weil man anscheint so damit mehrmals schießen kann

    - zurück zu mein code :

    ich wollte ja auch mehrmals schießen können und hab dass dann übernommen oder besser gesagt mein code nochmals neu aufgezogen von anfang an:

    Da ich NOCHNIE was mit klassen gemacht habe, hab ich mir das mal teils abgeschaut...

    ich hab das problem dass zwar mein hintergrund dargestellt wird aber jedoch nicht mein raumschiff... BIS ICH GESEHN HABE DASS das SURFACE zum render geschickt wird ... so und jetzt hab ich das ganze nochmals bearbeitet und bin bei folgendem punkt:

    #include <SDL2/SDL.h>
    #include <SDL2/SDL_image.h>
    
    SDL_Renderer* renderer = NULL;
    SDL_Surface* ScreenSurface =NULL;
    SDL_Surface* window = NULL;
    
    SDL_Surface* Background = NULL;
    SDL_Surface* Player = NULL;
    
    	    SDL_Texture * texture2 = SDL_CreateTextureFromSurface(renderer,Player);
    
    SDL_Rect posPlayer;
    
    class thePlayer
    {
    	public:
    	thePlayer();
    
    	void player_movement();
    	void show_player();
    
    	private:
    };
    
    thePlayer::thePlayer()
    {
    	posPlayer.x = 200;
    	posPlayer.y = 300;
    	posPlayer.w = 20;
    	posPlayer.h = 30;
    
    }
    
    void thePlayer::player_movement()
    {
    
    }
    
    void thePlayer::show_player()
    {
    	SDL_RenderCopy(renderer, texture2, NULL, NULL);  
    
       //SDL_BlitSurface( Player, NULL, renderer,NULL);  
    	//SDL_SetColorKey(Player, SDL_TRUE, SDL_MapRGB(Player->format, 255, 255, 255));
    }
    
    int main(int argc, char** argv)
    {
    
        SDL_Event event;
    
        SDL_Init(SDL_INIT_VIDEO);
    
    SDL_Window * window = SDL_CreateWindow("SDL AndroidGame",
        SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,   480, 854, 0);
    
        SDL_Renderer * renderer = SDL_CreateRenderer(window, -1, 0);
    
    	Background= IMG_Load("background.png");
    
    	Player = SDL_LoadBMP("ship.bmp");
    
    	    SDL_Texture * texture = SDL_CreateTextureFromSurface(renderer,Background);
    
    	bool quit = false;
    	thePlayer myPlayer;
    
     //GAME LOOP
    	while (quit == false)
    	{
    		SDL_RenderCopy(renderer, texture, NULL, NULL);  
    
    		myPlayer.show_player();
    		myPlayer.player_movement();
    
             SDL_RenderPresent(renderer);
    	}
    }
    

    😃 😉
    wer kann mir helfen ???


Anmelden zum Antworten