Tastendruck



  • Hi,
    bin noch net so lange mit c++ am start.

    wie kann ich ein konsolenprogramm nur dann beenden wenn der user z.B die taste q gedrückt hat, und bei den anderen tasten soll das programm dann nicht beenden.
    über nen kleines code beispiel würd ich mich freun, über hilfe natürlich auch.

    MfG
    nicmar



  • Dauerhaft während jeglichen Aktionen, oder immer nur in einer Art menü?



  • Vernochan schrieb:

    Dauerhaft während jeglichen Aktionen, oder immer nur in einer Art menü?

    bei beidem 🙂



  • #include <conio.h>
    #include <stdio.h>

    int main(){
      char c;
      do
      {
         //hier das programm oder was auch immer
         printf("Bitte q eingeben um das Programm zu beenden, oder was anderes, um nochmal zu machen\n");
      }while ((c=getch())!='q');
    }
    

    EDIT: tags vergessen



  • willst du etwa sowas wie in Programm basteln, dass wie eine Windows-Fenster-Anwendung auf Benutzereingaben wartet und bei bestimmten Tastendrucks bestimmt reagiert (wird sehr schwer werden auf Konsole...!) oder einfach nur eine Frage, die als Prozessorientierter Befehl abgearbeitet wird: "drücke q um zu beenden" (welches viel einfacher ist, wie "mata" schon gezeigt hat).



  • Also ich hab meine menu jezt so gelöst:

    void menu()
    {
            printf("=========================================================\n");
            printf("= Bitte waehlen und mit Enter bestaetigen               =\n");
            printf("=========================================================\n");
            printf("=                                                       =\n");
            cout << "= 1 - Vollbildmodus                                     =\n";
            cout << "= 2 - Fenstermodus                                      =\n";
            //cout << "= 3 - Beenden                                           =\n";
            printf("=                                                       =\n");
            printf("=========================================================\n");
    
            int chr; 
            while(true)
            {
            //chr=getch();
            switch(getch())
            {
            case 49: {FullScreen(); player();}
            case 50: {player();}
            default: {clrscr(); menu();}
            }
            }
    }
    


  • Du musst das so in etwa machen:

    void menu()
    {
            cout << "Auswahl treffen und Enter betätigen" << endl;
            cout << "1. Vollbilmodus                     <1>" << endl;
            cout << "2. Fenstermodus                     <2>" << endl;
            cout << "3. Beenden                          <q>" << endl;
            int chr;
            cin >> chr;
    
            switch(chr)
            {
            case 1: FullScreen();
                    player();}
                    break;
            case 2: player()
                    break;
            case q: exit(chr);
                    break;
            default: cout << "Treffen Sie eine richtige Auswahl!" << endl;
                      int pause;
    			clock_t start;
    			pause = 3*CLOCKS_PER_SEC;
    			start = clock();
    			while(clock() < start+pause)
    				;
                     system("cls");
                     menu();
                    break;
            }
    }
    

    mfg CSS



  • @CSS
    system() sollte man nur verwenden, wenn es auch notwendig ist. In deinem Fall ist es total fehl am Platz. nicmar hat die richtige Variante => clrscr()
    Außerdem ist da noch ein Fehler => case q
    Und deine Klammerung stimmt auch nicht ganz; dein switch wird nicht richtig ausgeführt.

    @nicmar
    Schaut schon ganz gut aus. Jetzt musst du nur noch bevor ein neues case in deinem switch losgeht ein break; machen, sonst macht der Compiler einfach mit dem Code vom nächsten Case weiter. Und anstatt der Zahlen solltest du der Übersichtlichkeit halber die Werte in einfache Hochkommata schreiben, also '1' (49) und '2' (50).


Anmelden zum Antworten