Tastatur gedrückt halten verhindern



  • Guten Tag ich wollte mal fragen ob es eine möglichkeit gibt es zu verhindern das man eine bestimmte gedrückt hält. Denn in dem Programm soll man eine Taste zwar sehr schnell hintereinander drücken aber es darf sie nicht einfach nur gedrückt gehalten werden. Und am besten wäre es noch wenn man die anzahl der anschkäge in einer Variablen mitzählen kann.

    MFG Dalmendio



  • unter standard c++ nicht. welches betriebssystem verwendest du denn? spontan fällt mir nur ein, die zeit zwischen zwei tastenanschlägen zu stoppen..



  • Falls Du Windows benutzt, laesst sich das ganz gut mit Hooks realisieren. Da kannst Du dem System eine Callback-Funktion geben, die immer aufgerufen wird wenn ein Tastendruck-Ereignis aus der Message-Queue Deines Prozesses geholt wird. In dieser Funktion kannst Du dann entsprechend darauf reagieren ...
    Ausfuehrliche Doku ist unter :
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/hooks/abouthooks.asp > Hook-Types > WH_KEYBOARD Hook zu finden ...



  • erst mla danke für die schnellen antworten aber leider bin ich dann doch noch nicht so weit in c++ um das zu verstehen ich dachte es gibt da ne einfacherer lösung. Um Problem zu umgehen hab ich mir überlegt das man einfach immer zwei tasten nacheinander drücken muss aber irgendwie funkt das nicht so ganz richtig kann mir eventuell einer sagen woran das liegt?

    [cpp]
    void bewegung()
    {
    weiter:

    char eingabe = getch();

    switch(eingabe)
    {
    case 'a': player1(); break;
    case 'k': player2(); break ;
    default : break;
    }

    goto weiter;

    }

    ...

    void player2()
    {
    int schritte2=0;
    schritte2=schritte2+1;

    //---------Testanzeige-----------------
    gotoxy(20,25);cout<<schritte2;
    //--------------------------------

    char eingabe = getch();

    switch(eingabe)
    {
    case 'k':
    {
    schritte2=schritte2-1;
    bewegung();
    break;
    }

    case 'l':
    {
    schritte2=schritte2+1;
    bewegung();
    break;
    }

    }

    denn egal wie oft ich "d" und "k" drücke er zählt einfach nicht weiter:-(


Anmelden zum Antworten