Problem mit kbhit()



  • if(kbhit())
    		{
    			taste=_getch();
    			if(taste == 224)
    			{
    				taste=_getch();
    				if(taste== 75)
    					printf("\nLinks\n");
    				else if(taste==77)
    					printf("\nRechts\n");
    			}
    			if(getch()=='x')
    				return 0;
    		}
    

    Folgendes:

    Wenn ich nun das Programm ausführe, und ich drücke nun angenommen die linke Pfeiltaste, führt er die Anweisung

    printf("\nLinks\n");
    

    aus. Drücke ich nun aber noch einmal die Pfeilraste links oder rechts, macht er es nicht mehr.

    Nun meine Frage, wie schaffe ich es, dass er die Anweisung erneut ausführt, wenn ich erneut eine Pfeiltaste (links, rechts) drücke.

    Ich danke euch schonmal für eure Hilfe



  • das Problem ist das

    Die Pfeiltasten zuerest den wert 0 zurück geben und dann erst als "Sonderwert" den ensprechenden Code:

    #include <conio.h>
    #include <iostream>
    using namespace std;
    
    int main()
    {
    	while(1)
    	{
    		if(kbhit())
    		{
    
    			if((getch() == 0xE0|| getch() == 0)&&(getch() == 75))
    			{
    				cout<<"pfeil links"<<endl;
    
    			}
    			if((getch() == 0xE0|| getch() == 0)&&(getch() > 75))
    			{
    				cout<<"pfeil rechts"<<endl;
    			}
    		}
    
    	}	
    }
    

    hier der "Sonderwert" der beim 2. aufruf zurückgegeben wird: http://www.datasource.de/programmierung/tab01_tastaturcodes.html

    gruss reima



  • Die Pfeiltasten liefern erst den wert 224 zurueck, soweit ich mich erinnern kann..



  • Ok hab den Fehler, so ist der Code richtig:

    if(kbhit()) 
            { 
    
                taste=getch(); 
    			if(taste == 224||taste==0) 
                { 
    
                    taste=_getch(); 
    				if(taste== 75) 
                        printf("\nLinks\n"); 
                    else if(taste==77) 
                        printf("\nRechts\n"); 
                } 
                if(taste=='x') 
                  return 0; 
    
    		}
    

Anmelden zum Antworten