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

[SDL]Jak zrobić aby program impretował kliknięcie klawisza jako 1 kliknięcie klawisza w pętli?

Ostatnio zmodyfikowano 2014-08-06 09:55
Autor Wiadomość
Blablabla99pl
Temat założony przez niniejszego użytkownika
[SDL]Jak zrobić aby program impretował kliknięcie klawisza jako 1 kliknięcie klawisza w pętli?
» 2014-07-02 16:16:51
Witam tak jak w temacie mam problem z pętlą czy ma ktoś pomysł jak to Naprawić?
P-113115
Pshepo
» 2014-07-02 16:29:35
Mógłbyś rozwinąć problem. Nie bardzo rozumiem co masz na myśli przez interpretację klawisza w pętli? ;)
P-113117
Blablabla99pl
Temat założony przez niniejszego użytkownika
Ok
» 2014-07-02 16:32:40
Chodzi mi o to ,że tworzę grę i potrzebuję użyć klawisza w pętli ale musi on być uznany za 1 kliknięcie klawisza a nie kilka kliknięć.
P-113118
Pshepo
» 2014-07-02 16:42:02
  https://wiki.libsdl.org/SDL_KeyboardEvent

możesz albo pokombinować ze stanami eventu albo skorzystac z funkcji SDL_GetKeyState()
P-113119
Blablabla99pl
Temat założony przez niniejszego użytkownika
Hmmm
» 2014-07-02 16:58:09
Mnie nadal to nie działa ale wstawie kawałek kodu:
C/C++
int Gra_Trwa()
{
    Lmwg = 0;
    sprintf( mwg, "%i", Lmwg );
    bool Jest = true;
    while( Jest )
    {
       
        while( SDL_PollEvent( & zdarzenie ) )
        {
            if( zdarzenie.type == SDL_QUIT )
            {
                Jest = false;
            }
            if( zdarzenie.type == SDL_MOUSEMOTION )
            {
                mx = zdarzenie.motion.x;
                my = zdarzenie.motion.y;
            }
        }
        SDL_BlitSurface( Tlo_Gra, NULL, Ekran, NULL );
        Monety_W_Grze = TTF_RenderText_Solid( font, mwg, kolor );
        SDL_BlitSurface( Monety_W_Grze, NULL, Ekran, & Monety_W_GrzeI );
        if( Klawisz[ SDLK_UP ] )
        {
            if( PPostaciNF == 1 )
            {
                PPostaci.y = 165;
                PPostaciNF = 2;
            }
            if( PPostaciNF == 2 )
            {
                PPostaci.y = 105;
                PPostaciNF = 3;
            }
        }
        if( Klawisz[ SDLK_DOWN ] )
        {
            if( PPostaciNF == 3 )
            {
                PPostaci.y = 165;
                PPostaciNF = 2;
            }
            if( PPostaciNF == 2 )
            {
                PPostaci.y = 235;
                PPostaciNF = 1;
            }
        }
        if( NRPostaci == 0.1 )
        {
            SDL_BlitSurface( Normal_Boy, NULL, Ekran, & PPostaci );
        }
        SDL_Flip( Ekran );
    }
    return 0;
}
P-113121
SeaMonster131
» 2014-07-02 17:12:08
Jak są eventy lub funkcje do tego stworzone, to z nich skorzystaj. Jak nie, to:
C/C++
bool click = false;

if( jakisKlawisz && !click )
{
    ...
    click = true;
}

if( !jakisKlawisz && click )
     click = false;

P-113123
Blablabla99pl
Temat założony przez niniejszego użytkownika
Yhhhhhhhhhhhh :(
» 2014-07-02 18:11:52
Takie coś nadal nie pomogło :
C/C++
int Gra_Trwa()
{
    Lmwg = 0;
    sprintf( mwg, "%i", Lmwg );
    bool Jest = true;
    while( Jest )
    {
       
        while( SDL_PollEvent( & zdarzenie ) )
        {
            if( zdarzenie.type == SDL_QUIT )
            {
                Jest = false;
            }
            if( zdarzenie.type == SDL_MOUSEMOTION )
            {
                mx = zdarzenie.motion.x;
                my = zdarzenie.motion.y;
            }
        }
        SDL_BlitSurface( Tlo_Gra, NULL, Ekran, NULL );
        Monety_W_Grze = TTF_RenderText_Solid( font, mwg, kolor );
        SDL_BlitSurface( Monety_W_Grze, NULL, Ekran, & Monety_W_GrzeI );
        if( Klawisz[ SDLK_UP ] && !click )
        {
            if( PPostaciNF == 1 )
            {
                PPostaci.y = 165;
                PPostaciNF = 2;
            }
            if( PPostaciNF == 2 )
            {
                PPostaci.y = 105;
                PPostaciNF = 3;
            }
            click = true;
        }
        if( !Klawisz[ SDLK_UP ] && click )
        {
            click = false;
        }
        if( Klawisz[ SDLK_DOWN ] && !click1 )
        {
            if( PPostaciNF == 3 )
            {
                PPostaci.y = 165;
                PPostaciNF = 2;
            }
            if( PPostaciNF == 2 )
            {
                PPostaci.y = 235;
                PPostaciNF = 1;
            }
            click1 = true;
        }
        if( !Klawisz[ SDLK_DOWN ] && click1 )
        {
            click1 = false;
        }
        if( NRPostaci == 0.1 )
        {
            SDL_BlitSurface( Normal_Boy, NULL, Ekran, & PPostaci );
        }
        SDL_Flip( Ekran );
    }
    return 0;
}
:( oh
P-113127
pekfos
» 2014-07-02 18:16:04
Dlaczego po prostu nie obsłużysz zdarzenia SDL_KEYDOWN..? To robi dokładnie to, czego chcesz.
P-113128
« 1 » 2 3
  Strona 1 z 3 Następna strona