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

problem ze zdarzeniami w SDL

Ostatnio zmodyfikowano 2010-12-23 19:45
Autor Wiadomość
Savail
Temat założony przez niniejszego użytkownika
problem ze zdarzeniami w SDL
» 2010-12-23 18:16:04
Hej
Mam nastepujaca funkcje odbierajaca zdarzenia:
C/C++
void ClassProgram::ProcessEvents() {
    if( End ) return;
   
    while( SDL_PollEvent( & event ) ) {
        if( game_mode == "menu" ) {
            if( key[ SDLK_DOWN ] ) kursor_y += 53;
            else if( key[ SDLK_UP ] ) kursor_y -= 53;
           
            if( kursor_y > 309 ) kursor_y = 150;
            else if( kursor_y < 150 ) kursor_y = 309;
           
            if( key[ SDLK_RETURN ] && kursor_y == 150 ) game_mode = "pre_campaign";
            else if( key[ SDLK_RETURN ] && kursor_y == 203 ) game_mode = "pre_versus";
            else if( key[ SDLK_RETURN ] && kursor_y == 256 ) game_mode = "sterowanie";
            else if( key[ SDLK_RETURN ] && kursor_y == 309 ) game_mode = "autor_gry";
           
        }
        if( game_mode == "pre_versus" ) {
           
            if( key[ SDLK_ESCAPE ] ) game_mode = "menu";
            else if( key[ SDLK_RETURN ] ) game_mode = "versus";
           
        }
        if( event.type == SDL_QUIT ) {
            End = true;
            break;
        }
    }
}
Podczas gry w poszczegolne opcje wchodzi sie enterem (SDLK_RETURN) i problem polega na tym ze po nacisnieciu entera program przechodzi odrazu do ostatniego trybu w kolejce(np gdy wejde w "pre_versus" to powinien znowu poczekac aż wcisne enter aby przejsc do versus, a program przechodzi odrazu do versus). Chyba dlatego ze zmienna key caly czas trzyma w sobie dane ostatniego wcisnietego klawisza i nie wiem jak ja zresetowac... Bylbym wdzieczny za pomoc!
P-25430
SeaMonster131
» 2010-12-23 18:50:13
Jeżeli dobrze pamiętam to @DejaVu napisał kiedyś kod do Allegro:
C/C++
static bool LeftKeyPressed = false;
if( key[ KEY_LEFT ] && !LeftKeyPressed ) {
    //Wciśnięto klawisz
    LeftKeyPressed = true;
}
if( !key[ KEY_LEFT ] ) LeftKeyPressed = false;
Możesz go przerobić do własnych potrzeb :)
P-25431
Savail
Temat założony przez niniejszego użytkownika
» 2010-12-23 19:45:58
dobry pomysl :D Dzieki wam obu :P
P-25435
« 1 »
  Strona 1 z 1