Tastatureingabe ohne stopp



  • Hallo liebe com,

    ich suche einen weg, mit der dosbox ein programm zu schreiben.
    Das die ganze zeit läuft ( ohne stopp ) und wenn zum beispiel a gedrückt wird, soll dann ein event sozusagen passieren.
    ZB:

    while(true)
    {

    cout << "hallo" << endl;
    if( KEY_A_GEDRÜCKT )
    {
    cout << "a" << endl;
    }

    }

    Das heißt, er soll die ganze zeit hallo spammen und wenn der user a drückt soll er einmal "a" in das fenster schrieben und wieder weiter hallo spammen

    MFG



  • Du programmierst unter Windows? "Dosbox" impliziert das irgendwie. Das Ding heißt übrigens Konsole und ist kein DOS, auch wenn's so aussieht. Dann könntest du windows.h inkludieren und GetAsyncKeyState verwenden. kbhit ginge auch noch (ebenfalls kein Standard-C++, VC++ bietet's aber in conio.h an).



  • kannst du mir bitte ein beispiel geben mit der conio,h .. ?

    oder ca. so ?

    if(kbhit())
    {
    char c = getch();
    switch(c)
    {

    }
    }

    MFG



  • lilbeat schrieb:

    kannst du mir bitte ein beispiel geben mit der conio,h .. ?
    MFG

    Super-simples Beispiel:

    http://www.cprogramming.com/fod/kbhit.html

    Das kannst du ja ganz einfach so umbauen, dass die Ausgabe deiner Wahl in der Schleife gemacht wird. Und wenn du dann auch noch wissen willst, welche Taste gedrückt wurde, kannst du im if -Block (also wenn kbhit was ungleich 0 zurückgibt) mit getch arbeiten.



  • #include <conio.h>
    #include <iostream>
    
    int main()
    {
        for(;;)
            if(kbhit())
                std::cout << static_cast<char>(getch()) << '\n';
    }
    


  • danke es funktioniert



  • #include <conio.h>
    #include <iostream>
    
    int main()
    {
        for(const char ue('\201');;)
            if(kbhit())
                switch(char a = getch())
                {
                    case 'a': case 'b':
                        std::cout << "Sie dr" << ue << "ckten '" << a << "'!!\n";break;
                    default:
                        std::cout << "Sie dr" << ue << "ckten eine andere Taste als 'a' oder 'b'!!\n";
                }
    }
    

    Jetzt im Switch-Statement, damit du noch alles andere spezifisch behandeln kannst...

    Für PI mit Konstanten für Umlaute



  • Wie hässlich.



  • 314159265358979 schrieb:

    Wie hässlich.

    Ja, ich weiß! Hast du seine Hose gesehen? Limongrün!

    so schöner?

    int main()
    {
        const char ue('\201');
    
        for(char a;;)
            if(kbhit())
                switch(a = getch())
                {
                    case 'a':
                    case 'b':
                        std::cout << "Sie dr"<<ue<<"ckten '"<<a<<"'!!\n";break;
                    default
                        std::cout << "Sie dr"<<ue<<"ckten eine andere Taste als 'a' oder 'b'!!\n";
                }
    }
    

Anmelden zum Antworten