Zurück ins Menü
-
hallo,
ich habe ein Menü: mit verschieden funktionen
gehe ich zum beispiel in den punkt Optionen rein will ich wieder zurück ins menü
welche arten gibs da und wie kann ich das machen#include <iostream> #include <conio.h> #include <stdlib.h> #include <string> using namespace std; int main () { char Menü; cout<<"\n\t<S>piel Starten\n\t<O>tionen\n\t<N>ame deines Helden\n\t<B>eenden des Spieles"; do { cin>>Menü; switch (Menü) { case ('s'): case ('S'): { cout<<"Spiel Startet jetzt"; }break; case ('o'): case ('O'): { cout<<"Optionen"; }break; case ('N'): case ('n'): { cout<<"Optionen\n"; cout<<"mit tasentrück (oder eine spezielle taste) zurück ins menue\n"; }break; case ('B'): case ('b'): { cout<<"Spiel Beendet jetzt"; }break; default: { }break; } }while ( Menü != 'b' || Menü != 'B'); system("pause"); return 0; }so danke für eure hilfe
ronny
-
Meinst du so?
#include <iostream> // #include <string> // Benutzt du gar nicht // #include <cstdlib> // Das heißt cstdlib, nicht stdlib.h. Und system ist doof. Daher: Raus. using namespace std; int main () { char Menu; // Umlaute in Namen sind doppeldoof do { cout<<"\t<S>piel Starten\n\t<O>tionen\n\t<N>ame deines Helden\n\t<B>eenden des Spieles\n"; // In die Schleife verschoben cin>>Menu; switch (Menu) { case ('s'): case ('S'): { cout<<"Spiel Startet jetzt\n"; }break; case ('o'): case ('O'): { cout<<"Optionen\n"; }break; case ('N'): case ('n'): { cout<<"Name\n"; }break; case ('B'): case ('b'): { cout<<"Spiel Beendet jetzt\n"; }break; default: { }break; } }while ( Menu != 'b' && Menu != 'B'); // Hier die Bedingung korrigiert // system("PAUSE") weggemacht. Gucke FAQ für Alternativen // return 0; // In main auch nicht nötig, da default 0 ist. (Sonderfall nur in main!) }
-
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
-
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.
-
@SeppJ was soll ich denn da mehr schreiben ??
-
case ('o'): case ('O'): { cout<<"Optionen\n"; system("pause"); }break;hast du dir das so vorgestellt
-
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 ^^
-
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 stattcin >> menulieber
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: