problem ze zdarzeniami w SDL
Ostatnio zmodyfikowano 2010-12-23 19:45
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: 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! |
|
SeaMonster131 |
» 2010-12-23 18:50:13 Jeżeli dobrze pamiętam to @DejaVu napisał kiedyś kod do Allegro: static bool LeftKeyPressed = false; if( key[ KEY_LEFT ] && !LeftKeyPressed ) { LeftKeyPressed = true; } if( !key[ KEY_LEFT ] ) LeftKeyPressed = false; Możesz go przerobić do własnych potrzeb :) |
|
Savail Temat założony przez niniejszego użytkownika |
» 2010-12-23 19:45:58 dobry pomysl :D Dzieki wam obu :P |
|
« 1 » |