Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SDL] Problem z przejściem pomiendzy menu a grą

Ostatnio zmodyfikowano 2013-01-01 18:42
Autor Wiadomość
JategoNwM
Temat założony przez niniejszego użytkownika
[SDL] Problem z przejściem pomiendzy menu a grą
» 2013-01-01 18:16:19
Witam! Jak w temacie mam problem z przejściem z menu do gry przyciskając pszycisk powinno mi ładnie przejść a program nic nie robi. W czym problem?
C/C++
#include <SDL/SDL.h>
#include <cstdlib>

SDL_Surface * ekran = NULL;
SDL_Surface * przycisk = NULL;
SDL_Surface * TloGra = NULL;

SDL_Rect przyciskDane;
SDL_Rect przyciskCel;

SDL_Event zdarzenie;

int myszkaX, myszkaY;

int Gra = 0;

bool wyjscie = false;

int main( int argc, char * args[] )
{
    SDL_Init( SDL_INIT_EVERYTHING );
    ekran = SDL_SetVideoMode( 800, 600, 32, SDL_SWSURFACE | SDL_DOUBLEBUF );
    SDL_Flip( ekran );
   
    while( !wyjscie ) {
       
        if( Gra == 0 ) {
           
            przycisk = SDL_LoadBMP( "przycisk.bmp" );
           
            przyciskDane.w = 200;
            przyciskDane.h = 50;
            przyciskCel.x = 300;
            przyciskCel.y = 275;
           
            while( !wyjscie )
            {
                SDL_FillRect( ekran, NULL, 0 );
                SDL_BlitSurface( przycisk, & przyciskDane, ekran, & przyciskCel );
               
               
                while( SDL_PollEvent( & zdarzenie ) )
                {
                    if( zdarzenie.type == SDL_MOUSEMOTION )
                    {
                        myszkaX = zdarzenie.motion.x;
                        myszkaY = zdarzenie.motion.y;
                    }
                    if( zdarzenie.type == SDL_MOUSEBUTTONDOWN )
                    {
                        if( zdarzenie.button.button == SDL_BUTTON_LEFT &&
                        ( myszkaX >= przyciskCel.x && myszkaX <=
                        przyciskCel.x + przyciskDane.w ) &&( myszkaY >=
                        przyciskCel.y && myszkaY <= przyciskCel.y +
                        przyciskDane.h ) )
                        {
                            Gra++;
                           
                        }
                    }
                }
            }
            SDL_FreeSurface( przycisk );
           
        }
       
        if( Gra == 1 ) {
           
            SDL_FillRect( ekran, NULL, 0 );
           
           
            while( !wyjscie )
            {
                SDL_FillRect( ekran, NULL, 0 );
                SDL_BlitSurface( TloGra, NULL, ekran, NULL );
                SDL_Flip( ekran );
               
                TloGra = SDL_LoadBMP( "TloGra.bmp" );
               
                while( SDL_PollEvent( & zdarzenie ) )
                {
                    if( zdarzenie.key.keysym.sym == SDLK_ESCAPE ) {
                        SDL_FreeSurface( przycisk );
                        wyjscie = true;
                    }
                }
            }
           
        }
    }
}
P-72643
Mike148
» 2013-01-01 18:24:21
Tak na pierwszy rzut oka to masz zdublowaną główną pętlę i to nie wychodzisz z nich. To może być problem.

Rada :
Zrób jedną pętlę i stwórz sobie funkcję rysującą menu oraz drugą rysującą grę. Wywołuje je w zależności co chcesz narysować. Nie wiem dlaczego wszyscy boją się używać funkcji. Przecież one nie gryzą !
P-72644
Mrovqa
» 2013-01-01 18:42:22
Chyba najgorsze co może być - brać się za coś nie spełniając wymagań. Osobiście każdemu początkującemu radzę najpierw nauczyć się języka (chociażby w stopniu strukturalnym, ale najlepiej - jak najwięcej), a dopiero później brać się za cięższe biblioteki. Teraz to owszem - jest mała różnica. Da się jakoś znieść taki kod, ale później się okaże, że to będzie niewygodne i nieczytelne. Ciężko będzie znaleźć cokolwiek. To taka moja drobna rada :)
P-72646
« 1 »
  Strona 1 z 1