Pfeile



  • Moin moin,

    ich versuch grad ein Programm zu schreiben, wo man mit Pfeilen das Menue aussuchen kann. Mein Problem ist das wenn man entweder runter oder hoch drückt, er immer im Menue 3 hängen bleibt und man zu 1 und 2 nicht kann.
    Hier mal der Code

    #include <iostream>
    #include <conio.h>
    
    int main()
    {
        std::cout << "Menue1  <<==\n";
        std::cout << "Menue2\n";
        std::cout << "Menue3\n";
    
        int zeiger = 0;
        int gedrueckt;
    
        while(1)
        {
            if(kbhit())
            {
                gedrueckt = getch();
    
                if(gedrueckt == 117)
                {
                    zeiger--;
                }
                if(gedrueckt == 106)
                {
                    zeiger++;
                }
                if(zeiger > 3)
                {
                    zeiger = 0;
                }
                if(zeiger < 0)
                {
                    zeiger = 3;
                }
                switch(zeiger)
                {
                    case 1:
                    {
                        system("cls");
                        std::cout << "Menue1  <<==\n";
                        std::cout << "Menue2\n";
                        std::cout << "Menue3\n";
                    }
                    case 2:
                    {
                        system("cls");
                        std::cout << "Menue1\n";
                        std::cout << "Menue2  <<==\n";
                        std::cout << "Menue3\n";
                    }
                    case 3:
                    {
                        system("cls");
                        std::cout << "Menue1\n";
                        std::cout << "Menue2\n";
                        std::cout << "Menue3  <<==\n";
                    }
                }
            }
        }
    }
    

    if(gedrueckt == 117) und 106 bedeutet "u" und "j" die indem Falle zum runter und hoch drücken dienen sollen und das ist ihre Dezimalzahl ...
    Wie gesagt mein Problem ist das er immer auf Menue3 bleibt bzw. er versucht glaube ich auf andere Menues zugehen springt aber dann wieder auf 3.



  • omfg *selbsthau* hat sich erledigt ... hab die "break;" vergessen in den cases ^^



  • Wie wär's mit nem...

    break;
    

    ...nach jedem case: ?

    MfG



  • Desweiteren ist es möglich ads hinzubekommen: zeiger = 0;
    Das wird aber nirgends behandelt. Du hast mit 0 <= zeiger <= 3 insgesamt 4 mögliche Zustände.



  • jo hab schon alles verbessert mitlerweile sieht das programm auch so aus
    Menue1 OFF
    Menue2 OFF
    Menue3 OFF

    und du kannst on und off schalten ...



  • Vielleicht könntest du dich auch daran machen, redundanten Code zu kürzen. Beispielsweise lässt sich der Pfeil mit Strings anhängen, dann musst du nicht für jeden Fall die gesamte Menüliste neu schreiben. Dann lässt sich der Code auch leichter warten und erweitern.

    Ausserdem ist es eher unüblich, nach case: geschweifte Klammern zu schreiben; diese sind nämlich nicht nötig.


Anmelden zum Antworten