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

[Allegro 5] Wprowadzanie tekstu w aplikacji.

Ostatnio zmodyfikowano 2014-05-05 17:40
Autor Wiadomość
pekfos
» 2014-05-04 13:23:33
Jak zrobić tą mapę asocjacyjną?
Mapa asocjacyjna? Mapa w bibliotece standardowej C++, to kontener asocjacyjny, więc mapa asocjacyjna to.. Asocjacyjny kontener asocjacyjny? Masło maślane.
C/C++
std::map < K, V > mapa;
P-109264
Kudłaty
Temat założony przez niniejszego użytkownika
» 2014-05-04 13:26:01
O takie coś ci chodzi?
C/C++
if( al_key_down( & Key, ALLEGRO_KEY_A ) )
{
    if( !key_state_down )
    {
        if( shift ) nazwa[ i ] = 'A';
        else nazwa[ i ] = 'a';
       
        key_state_down = true;
        i++;
    }
}
tylko tutaj od razu na charach pracuje.
P-109266
Kudłaty
Temat założony przez niniejszego użytkownika
» 2014-05-04 13:27:05
Pekfos. Poczytam zaraz o niej i spróbuję coś lepszego napisać, od mojego pomysłu z ifami.

/Edit
Napisze tutaj, żeby nie zaśmiecać. Poczytałem na forum o bibliotece conio.h i tam znalazłem prosty sposób na odczytywanie znaków. Ale działa tylko w konsoli. Można to jakoś zmienić?
P-109268
pekfos
» 2014-05-04 18:24:18
Poczytałem na forum o bibliotece conio.h i tam znalazłem prosty sposób na odczytywanie znaków. Ale działa tylko w konsoli. Można to jakoś zmienić?
Nie. conio - console io.

Napisze tutaj, żeby nie zaśmiecać.
Haha, ha.. Zasady zakładania tematów - jeden temat = jeden problem. Tu jeszcze nie jest to taki offtop, ale co to w ogóle za myślenie? Nie chcę śmiecić, więc nie zakładam nowego tematu zgodnie z porządkiem forum, tylko śmiecę w jednym temacie?
P-109300
Kudłaty
Temat założony przez niniejszego użytkownika
» 2014-05-04 18:57:59
Temat chyba ten sam. Ale chodziło mi o to, że napiszę w tym poście, żeby nie robić kolejnego. A więc muszę czytać o tych mapach asocjacyjnych? Tylko nie mogę nic znaleźć, a o tym nie słyszałem. Jeszcze poszukam, ale jak macie link do jakiegoś kursu o tym, to byłbym wdzięczny.
P-109304
Nekronomik
» 2014-05-04 20:16:10
A nie łatwiej by ci było wykorzystać event'u jeśli chodzi o klawiature.
C/C++
queue = al_create_event_queue();
al_register_event_source( queue, al_get_display_event_source( okno ) );
al_register_event_source( queue, al_get_keyboard_event_source() );
ALLEGRO_EVENT ev;
 np: klikasz na jakiś przycisk np. litera "a" i zostanie zapisana jako 97 to 97 zostanie przypisane do
event.keyboard.unichar
 po przez
al_get_next_event( queue, & event );
. No i teraz:
C/C++
char znaki1[ 20 ];
znaki1[ a ] = char( event.keyboard.unichar );
 .
Jak zapełnisz całą tablice lub w połowie to aby ją wyświetlić możesz zrobić coś takiego:
string haslo = haslo + znaki1[ a ];
 no i wystarczy teraz wyświetlić string.
Jak czegoś nie rozumiesz to pisz ^^.
P-109309
Kudłaty
Temat założony przez niniejszego użytkownika
» 2014-05-05 17:40:07
Przed chwilą miałem dopiero czas, żeby się w to zagłębić. Poczytałem jeszcze o twoim sposobie z eventami w google i myślę, że zrozumiałem o co w tym chodzi. Wpisywanie wygląda u mnie mniej więcej tak:
C/C++
int i = 0;
bool key_state_down = false;

ALLEGRO_EVENT_QUEUE * queue = al_create_event_queue();
al_register_event_source( queue, al_get_keyboard_event_source() );
ALLEGRO_EVENT event;

char znaki1[ 20 ];
event.keyboard.unichar = NULL;

while( 1 )
{
    al_get_next_event( queue, & event );
    if( event.keyboard.unichar != 0 && !key_state_down )
    {
        if( event.keyboard.unichar == 8 )
        {
            i--;
        }
        else
        {
            znaki1[ i ] = char( event.keyboard.unichar );
            i++;
        }
        key_state_down = true;
    }
    if( !event.keyboard.unichar ) key_state_down = false;
   
    for( int j = 0; j < i; j++ )
    {
        std::cout << znaki1[ j ];
    }
    std::cout << std::endl;
}
Dodam jeszcze wyświetlanie w aplikacji i może to jakoś uproszczę, ale mniej więcej tak to wygląda. Później dopracuję ten sposób, ale na szczęście działa bez zarzutów. Dzięki za pomoc, temat zamykam.
P-109336
1 « 2 »
Poprzednia strona Strona 2 z 2