Problem z wyświetlaniem i pobieraniem wciśniętych znaków[C][SDL]
Ostatnio zmodyfikowano 2014-07-05 21:22
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? 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 ); |
|
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 |
|
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ć? :) |
|
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. |
|
pekfos |
» 2014-07-05 19:24:10 uzyj zmiennej std::string |
Z jakiegoś powodu autor pisze w C. |
|
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... |
|
« 1 » |