Zurück ins Menü



  • gut danke, aber aber ich gehe immer ins menü zurück wenn die schleife (beispiel optione) abgelaufen ist. ich wollte aber aber mit nem tastendruck wieder ins menü

    (ps die #include befehle habe ich noch benutzt ich habe das programm nur auf das nötigste gelöscht

    und system("pause") brauche ich das sich die console sonst ohne das ich es will schliese


  • Mod

    Na, dann mach an der Stelle eben mehr, als nur "Optionen" auszugeben. Zum Beispiel, warte auf einen Tastendruck. Hättest du dir die Alternativen zu system("Pause") angeguckt, hättest du da auch schon etwas für gefunden.

    http://www.c-plusplus.net/forum/111042



  • @SeppJ was soll ich denn da mehr schreiben ??



  • case ('o'):
            case ('O'):
              {
                cout<<"Optionen\n";
    
               system("pause");
    
              }break;
    

    hast du dir das so vorgestellt


  • Mod

    Jain. Es macht nun das, was du möchtest, oder? Aber system("pause") finde ich nach wie vor doof. Außerdem ist egal, wie ich mir das vorstelle, entscheidend ist doch, was du dir vorstellst und das du in der Lage bist, deine Vorstellungen in Programmcode umzusetzen.



  • nein
    ich will ind den knoten punkten halt meine einstellungen machen und dann mit einer taste (beispiel 'z' << zurück) wieder ins menü und NICHT wenn die schleife ferdig ist
    und ich willte hat wissen ob es das eine funktion oder sowas gibt und ob mir das mal bitte jemand sagt ^^


  • Mod

    Nun, dann mach da deine Einstellungen und wenn z eingegeben wird, dann hörst du mit dem Einstellungsdialog auf. Ich verstehe nicht wo dein Problem damit ist.



  • ich weiß nicht wie ich das mache
    ich suche halt nen befehl / funktion oder sowas



  • leider weiß ich immer noch nicht wie ich zurück ins menü auf befehl komme 😞
    brauch also immer noch hilfe bitte



  • #include <iostream>
    #include <conio.h>
    #include <cstdlib>
    #include <string>
    #include <cstdio>
    
    using namespace std;
    
    void OptFunc();
    
    int main ()
    {
    
        char menu;
    
        do
            {
            cout<<"\n\t<S>piel Starten\n\t<O>tionen\n\t<N>ame deines Helden\n\t<B>eenden des Spieles";
            cin.get(menu);
            fflush(stdin); //cin.clear funktioniert bei mir wundersamerweise nicht... drum verzeih mir diese variante ;)
            switch (menu)
            {
                case ('s'):
                case ('S'):
    
                    cout<<"Spiel Startet jetzt";
                    break;
    
                case ('o'):
                case ('O'):
    
                    cout<<"Optionen";
                    OptFunc();
                    break;
    
                case ('N'):
                case ('n'):
    
                    cout<<"Name aendern.\n";
    
                    break;
    
                case ('B'):
                case ('b'):
    
                    cout<<"Spiel Beendet jetzt";
    
                    break;
    
                default:
    
                break;
    
            }
    
            }while ( menu != 'b' && menu != 'B');
    
        return 0;
    }
    
    void OptFunc()
    {
        char ch;
    
        do
        {
            cout << "Druecken sie...\n<F>: Farbtiefe\n<A>: Aufloesung\n<Z>: Zurueck"; // hier dann einfügen, was man in den optionen ändern kann...
            cin.get(ch);
            fflush(stdin);
            switch(ch)
            {
                case 'a':
                case 'A':
                    break; //Whatever passieren soll...
                case 'f':
                case 'F':
                    break; //Whatever eben passieren soll ;)
            }
        }while (ch != 'z' && ch != 'Z');
    
    }
    

    Ich würde mir für jede Menüauswahl ne eigene Funktion schreiben. Die Funktion von mir verweilt solange in den Optionen bis Z oder z gedrückt wird. Funktioniert übrigens auch mit while(tolower(ch) != 'z');
    Verwende statt

    cin >> menu
    

    lieber

    cin.get(menu);
    

    wenn du nur ein Zeichen einlesen willst. Verzeih mir bitte die Verwendung von

    fflush(stdin);
    

    denn bei mir funktioniert

    cin.clear();
    

    komischerweise nicht. Zumindest nicht so, wie es funktionieren sollte.
    Die Geschweiften Klammern in den case-Labeln kannste dir übrigens sparen. Die machen das ganze nur unübersichtlicher, wie ich finde.



  • AH ok also do while schleife das ist nee idee die ich verwenden kann
    danke
    (und falls jemand ne andere idee hat der kann mir es auch sagen ^^)



  • Matrix..., zu

    //        fflush(stdin);  // => nur, wenn diese "nicht-Standard-C" Variante vom Compiler unterstützt wird -> sonst keine zuverlässige Funktion.
                cin.clear();
                cin.ignore(256, '\n');
    

    ich weiss nicht, ob das immer funktioniert :xmas1:


Anmelden zum Antworten