Ncurses.wgetch - Eingabepuffer leeren



  • Hallo,

    ich schreibe gerade ein Spiel mit Ncurses, wo ich wtimeout(win, 0) mache, damit wgetch() nicht blockiert und sofort returnt. Wenn ich nun einige Sekunden die Space-Taste drücke, so bleibt wgetch() ein bisschen "hängen". Und ich wollte fragen ob es hierzu eine Möglichkeit gibt, in meinem Spielchen jedes mal vor getch() den Eingabepuffer zu leeren.

    Folgendes funktioniert nicht:

    chtype key;
    while((key = wgetch(win)) != '\n' && key != EOF);
    

    Also, nicht, dass es nicht funktioniert, aber bei meinem Spiel war das nicht das Richtige. Damit mach ich den Input kaputt.

    Weiß jemand wie ich das richtig lösen kann?



  • Ich kenn mich mit ncurses nicht aus, aber unter DOS (und NTVDM) würd ich

    #include <conio.h>
    
    int main()
    {
        bool exit = false;
    
        do {
    
            if( kbhit() )
                switch( getch() ) {
                    case 'a':
                        // ...
                        break;
    
                    case 'b':
    
                    // ...
    
                    case 0x1b: // [ESC]
                        exit = true;
                        break;
                }
            }
        } while( !exit )
    }
    

    machen.

    _kbhit() for Linux.


Anmelden zum Antworten