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

Problem z wyświetlaniem i pobieraniem wciśniętych znaków[C][SDL]

Ostatnio zmodyfikowano 2014-07-05 21:22
Autor Wiadomość
lupek123
Temat założony przez niniejszego użytkownika
Problem z wyświetlaniem i pobieraniem wciśniętych znaków[C][SDL]
» 2014-07-05 12:47:28
Witam, mam mały problem z pobieraniem i wyświetlaniem wciśniętych znaków przez użytkownika. Chodzi mi o pobieranie imienia gracza. Do tego celu chciałem napisać funkcję, która by sprawdzała jaki klawisz został wciśnięty i przypisywała by to do tablicy. Limit powiedzmy byłby np do 3 znaków. Na koniec chciałbym to wyświetlić z pomocą biblioteki SDL_ttf. No i mój problem jest taki:
1. Pętla while wykonuje się tylko dwa razy( po drugim naciśnięciu wyświetlany jest tekst)
2. Wyświetlany jest zawsze tylko jeden wciśnięty klawisz.

Poniżej przedstawiam kod, mógłby mi ktoś powiedzieć co tutaj jest źle zrobione?

C/C++
int i = 0;
char tablica[ 3 ];
while( i < 3 )
{
    while( SDL_PollEvent( & zdarzenie ) )
    {
        if( zdarzenie.key.keysym.sym == SDLK_a )
        {
            tablica[ i ] = 'a';
            i++;
        }
    }
}
TTF_Init();
TTF_Font * font;
font = TTF_OpenFont( "img/calibri.ttf", 32 );
SDL_Surface * text_surface;
SDL_Color color = { 24, 36, 65 };
text_surface = TTF_RenderUTF8_Solid( font, tablica, color );
SDL_Rect dstrect = { 10, 10 };
dstrect.h = text_surface->h;
dstrect.w = text_surface->w;
SDL_BlitSurface( text_surface, NULL, ekran, & dstrect );
SDL_Flip( ekran );
P-113310
Monika90
» 2014-07-05 13:44:59
1. nie sprawdzasz typu zdarzenia
2. funkcja TTF_RenderUTF8_Solid wymaga łańcucha znaków zakończonego zerem
3.
tablica[ i ] = 'a';
 możliwe wyjście poza zakres tablicy
P-113311
lupek123
Temat założony przez niniejszego użytkownika
» 2014-07-05 15:11:20
Poprawiłem i pętla działa już poprawnie, ale ciągle mam problem z wyświetlaniem wszystkich znaków. Nie do końca rozumiem w czym jest problem. Ostatni znak tablicy zakończyłem 0 i pomimo tego nie wyświetla całego napisu. Najlepiej dla mnie byłoby wyświetlać literka po literce w odpowiednich odstępach, ale nie mogę znaleźć nigdzie takiej funkcji w sdl_ttf. Mógłby ktoś mnie nakierować jak to zrobić? :)
P-113315
DejaVu
» 2014-07-05 18:00:14
Jezeli chcesz wyswietlac łańcuch znaków to uzyj zmiennej std::string do przechowania tekstu, a następnie wyswietl calosc przy uzyciu odpowiedniej funkcji SDL.
P-113328
pekfos
» 2014-07-05 19:24:10
uzyj zmiennej std::string
Z jakiegoś powodu autor pisze w C.
P-113333
lupek123
Temat założony przez niniejszego użytkownika
» 2014-07-05 21:22:49
Udało mi się dojść do tego co chciałem. Po naciśnięciu np a na ekranie pojawia się ta litera, teraz tylko napisać funkcję, która będzie sprawdzała możliwe opcję( paręnaście ifów), dziękuje za wszystkie odpowiedzi, temat uważam za zamknięty...
P-113344
« 1 »
  Strona 1 z 1