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

[Allegro 4.2] Sprawdzanie czy nie jest wciśnięty żaden klawisz

Ostatnio zmodyfikowano 2015-02-14 20:28
Autor Wiadomość
Brunon3
Temat założony przez niniejszego użytkownika
[Allegro 4.2] Sprawdzanie czy nie jest wciśnięty żaden klawisz
» 2015-02-14 15:16:12
Witam. Piszę małą gierkę i potrzebuję wiedzieć jak zrobić w bibliotece Allegro 4.2 sprawdzenie czy żaden klawisz nie jest wciśnięty.

C/C++
if( !key[ KEY_ ??? ] )[...];


Pozdrawiam.
P-126585
maly
» 2015-02-14 17:01:57
keypressed()?
P-126593
Brunon3
Temat założony przez niniejszego użytkownika
» 2015-02-14 19:48:40
Ehh... No więc dlaczego to nie działa?

C/C++
if( textOn ) {
   
    if( key[ KEY_RSHIFT ] || key[ KEY_LSHIFT ] ) {
        if( key[ KEY_Q ] ) {
            text = text + "Q";
            textOn = false;
        }
        if( key[ KEY_W ] ) text = text + "W";
       
        if( key[ KEY_E ] ) text = text + "E";
       
        if( key[ KEY_R ] ) text = text + "R";
       
        if( key[ KEY_T ] ) text = text + "T";
       
        if( key[ KEY_Y ] ) text = text + "Y";
       
        if( key[ KEY_U ] ) text = text + "U";
       
        if( key[ KEY_I ] ) text = text + "I";
       
        if( key[ KEY_O ] ) text = text + "O";
       
        if( key[ KEY_P ] ) text = text + "P";
       
        if( key[ KEY_A ] ) text = text + "A";
       
        if( key[ KEY_S ] ) text = text + "S";
       
        if( key[ KEY_D ] ) text = text + "D";
       
        if( key[ KEY_F ] ) text = text + "F";
       
        if( key[ KEY_G ] ) text = text + "G";
       
        if( key[ KEY_H ] ) text = text + "H";
       
        if( key[ KEY_J ] ) text = text + "J";
       
        if( key[ KEY_K ] ) text = text + "K";
       
        if( key[ KEY_L ] ) text = text + "L";
       
        if( key[ KEY_Z ] ) text = text + "Z";
       
        if( key[ KEY_X ] ) text = text + "X";
       
        if( key[ KEY_C ] ) text = text + "C";
       
        if( key[ KEY_V ] ) text = text + "V";
       
        if( key[ KEY_B ] ) text = text + "B";
       
        if( key[ KEY_N ] ) text = text + "N";
       
        if( key[ KEY_M ] ) text = text + "M";
       
    }
    else
    {
        if( key[ KEY_Q ] ) {
            text = text + "q";
            textOn = false;
        }
        if( key[ KEY_W ] ) text = text + "w";
       
        if( key[ KEY_E ] ) text = text + "e";
       
        if( key[ KEY_R ] ) text = text + "r";
       
        if( key[ KEY_T ] ) text = text + "t";
       
        if( key[ KEY_Y ] ) text = text + "y";
       
        if( key[ KEY_U ] ) text = text + "u";
       
        if( key[ KEY_I ] ) text = text + "i";
       
        if( key[ KEY_O ] ) text = text + "o";
       
        if( key[ KEY_P ] ) text = text + "p";
       
        if( key[ KEY_A ] ) text = text + "a";
       
        if( key[ KEY_S ] ) text = text + "s";
       
        if( key[ KEY_D ] ) text = text + "d";
       
        if( key[ KEY_F ] ) text = text + "f";
       
        if( key[ KEY_G ] ) text = text + "g";
       
        if( key[ KEY_H ] ) text = text + "h";
       
        if( key[ KEY_J ] ) text = text + "j";
       
        if( key[ KEY_K ] ) text = text + "k";
       
        if( key[ KEY_L ] ) text = text + "l";
       
        if( key[ KEY_Z ] ) text = text + "z";
       
        if( key[ KEY_X ] ) text = text + "x";
       
        if( key[ KEY_C ] ) text = text + "c";
       
        if( key[ KEY_V ] ) text = text + "v";
       
        if( key[ KEY_B ] ) text = text + "b";
       
        if( key[ KEY_N ] ) text = text + "n";
       
        if( key[ KEY_M ] ) text = text + "m";
       
    }
    if( keypressed() == false ) textOn = true;
   
    if( key[ KEY_BACKSPACE ] || key[ KEY_DEL ] )
         text.erase();
   
}
P-126622
maly
» 2015-02-14 20:03:33
Dziwnie to wymyśliłeś, może lepiej tak Text_Input_(C++)
P-126623
Gabes
» 2015-02-14 20:22:53
P-126624
Brunon3
Temat założony przez niniejszego użytkownika
» 2015-02-14 20:28:42
Hm.. Czy mogę prosić o przykład użycia tego po polsku? Najlepiej jakby ktoś z Was podał kawałek kodu z użyciem tego. ;)

EDIT:

Nie zrozumiałem Text Input, więc napisałem to po swojemu. Wklejam kod bo może komuś kiedyś się przyda. ;)

C/C++
void App::readKey( std::string & text, bool ON ) {
    if( textOn && ON ) {
        if( key[ KEY_Q ] ) {
            text = text + "Q";
            textOn = false;
        }
        if( key[ KEY_W ] ) {
            text = text + "W";
            textOn = false;
        }
        if( key[ KEY_E ] ) {
            text = text + "E";
            textOn = false;
        }
        if( key[ KEY_R ] ) {
            text = text + "R";
            textOn = false;
        }
        if( key[ KEY_T ] ) {
            text = text + "T";
            textOn = false;
        }
        if( key[ KEY_Y ] ) {
            text = text + "Y";
            textOn = false;
        }
        if( key[ KEY_U ] ) {
            text = text + "U";
            textOn = false;
        }
        if( key[ KEY_I ] ) {
            text = text + "I";
            textOn = false;
        }
        if( key[ KEY_O ] ) {
            text = text + "O";
            textOn = false;
        }
        if( key[ KEY_P ] ) {
            text = text + "P";
            textOn = false;
        }
        if( key[ KEY_A ] ) {
            text = text + "A";
            textOn = false;
        }
        if( key[ KEY_S ] ) {
            text = text + "S";
            textOn = false;
        }
        if( key[ KEY_D ] ) {
            text = text + "D";
            textOn = false;
        }
        if( key[ KEY_F ] ) {
            text = text + "F";
            textOn = false;
        }
        if( key[ KEY_G ] ) {
            text = text + "G";
            textOn = false;
        }
        if( key[ KEY_H ] ) {
            text = text + "H";
            textOn = false;
        }
        if( key[ KEY_J ] ) {
            text = text + "J";
            textOn = false;
        }
        if( key[ KEY_K ] ) {
            text = text + "K";
            textOn = false;
        }
        if( key[ KEY_L ] ) {
            text = text + "L";
            textOn = false;
        }
        if( key[ KEY_Z ] ) {
            text = text + "Z";
            textOn = false;
        }
        if( key[ KEY_X ] ) {
            text = text + "X";
            textOn = false;
        }
        if( key[ KEY_C ] ) {
            text = text + "C";
            textOn = false;
        }
        if( key[ KEY_V ] ) {
            text = text + "V";
            textOn = false;
        }
        if( key[ KEY_B ] ) {
            text = text + "B";
            textOn = false;
        }
        if( key[ KEY_N ] ) {
            text = text + "N";
            textOn = false;
        }
        if( key[ KEY_M ] ) {
            text = text + "M";
            textOn = false;
        }
    }
   
    if( key[ KEY_SPACE ] && textOn ) {
        text = text + " ";
        textOn = false;
    }
   
    if( !key[ KEY_SPACE ] && !key[ KEY_Q ] && !key[ KEY_W ] && !key[ KEY_E ] && !key[ KEY_R ] && !key[ KEY_T ] && !key[ KEY_Y ] && !key[ KEY_U ] && !key[ KEY_I ] && !key[ KEY_O ] && !key[ KEY_P ] && !key[ KEY_A ] && !key[ KEY_S ] && !key[ KEY_D ] && !key[ KEY_F ] && !key[ KEY_G ] && !key[ KEY_H ] && !key[ KEY_J ] && !key[ KEY_K ] && !key[ KEY_L ] && !key[ KEY_Z ] && !key[ KEY_X ] && !key[ KEY_C ] && !key[ KEY_V ] && !key[ KEY_B ] && !key[ KEY_N ] && !key[ KEY_M ] ) textOn = true;
   
    if( key[ KEY_BACKSPACE ] || key[ KEY_DEL ] ) {
        text.erase();
    }
}

Wiem że jest to bardzo amatorski kod, wiem również że po kliknięciu Backspace/Del usuwa się cały string, a nie tylko ostatnia litera, ale nie umiem tego obejść. ;)
Pozdrawiam.
P-126625
« 1 »
  Strona 1 z 1