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

klawiatura - nCurses

Ostatnio zmodyfikowano 2014-01-28 11:38
Autor Wiadomość
oputyk
Temat założony przez niniejszego użytkownika
klawiatura - nCurses
» 2014-01-27 16:46:39
Witam wszystkich. Mam problem, a mianowicie kiedy naciskam jakiś klawisz z klawiatury, to program mi się zawiesza... Oto kod:
C/C++
CW okno; //Tutaj jest cała inicjalizacja wraz z tym wywołaniem keypad(stdscr, true).
okno.ColorSet( 5, 2 );
sf::Vector2f pos( 0, 0 );
sf::Clock c;
unsigned int u = 0;
while( true ) //Główna pętla.
{
    okno.Clear();
    if( c.getElapsedTime().asSeconds() > u ) //Co sekundę znak zmienia pozycję w dół.
    {
        pos.y++;
        u++;
    }
    okno.Draw( '$', pos.x, pos.y );
    okno.Display();
}
Problem polega na tym, że kiedy nacisnę coś z klawiatury, to wtedy znak już się nie porusza. Jeszcze raz powtórzę, że wywołuję makrodefinicję
keypad( stdscr, true )
. Z góry dzięki za pomoc.
P-103323
oputyk
Temat założony przez niniejszego użytkownika
» 2014-01-27 17:36:18
Nie jestem pewien, ale to chyba wina bufora, bo kiedy kod wygląda tak:
C/C++
CW okno;
okno.ColorSet( 5, 2 );
sf::Vector2f pos( 0, 0 );
sf::Clock c;
unsigned int u = 1;
while( true )
{
    okno.Clear();
    if( c.getElapsedTime().asSeconds() > u )
    {
        pos.y++;
        u++;
        getch();
    }
    okno.Draw( '$', pos.x, pos.y );
    okno.Display();
}
return 0;
To wtedy gdy nacisnę przycisk ok. co sekundę, to jest dobrze, ale gdy naciskam więcej klawiszy to już mi się zawiesza, a po jakimś czasie
getch()
 wszystko zbiera i znów mi się wszystko wyświetla. Ma ktoś jakiś pomysł na ten błąd?
Może dałoby się jakoś wyczyścić bufor...
P-103336
leon_w
» 2014-01-27 20:35:41
Ja do czyszczenia buforu używałem czegoś takiego:
 
C/C++
while( kbhit() )
     getch();
ale nie wiem czy w Twoim przypadku się sprawdzi.
P-103360
oputyk
Temat założony przez niniejszego użytkownika
» 2014-01-28 11:38:22
Ok, dzięki. Zamykam.
P-103395
« 1 »
  Strona 1 z 1