Suche nach speziellen Bedienung für Untermenü Ausgabe.



  • Hallo Leute !

    Ich habe klassisches Hauptmenü erstellt:

    #include "kartenspiel.h"
    #include <cstdlib>
    #include <iostream>
    #include <time.h>
    using namespace std;
    
    /*
     * 
     */
    int main() {
    
        Kartenspiel k;
        int a;
        do{
        cout << " === Kartenspiel Menue === \n"
             << "1 Karten mischen\n " 
             << "2 Karten austeilen\n " 
             << "3 Karten eines Spielers ansehen\n "   
             << "0 BEENDEN "   
             << endl;
    
        cout << "Auswahl (0-3): ";
        cin >> a;
        switch(a)
        {
            case 1: 
                k.mischen();
                break;
            case 2:
                k.austeilen(); 
                break;
            case 3:
                do{
                k.spielerAuswahl(); // die Ausgabe des Untermenüpunkte nur wenn
                                   //vorher ausgewählt worden ist
    
                } while(a == 2);
                break;
        }
    
        } while( a > 0);
    
        return 0;
    }
    

    In Klasse kartenspiel.cpp habe ich eine Funktion SpielerAuswahl(), welches ein
    ein zweites Menü besitzt. Dieses zeigt die Karten jedes Spielers an.

    void Kartenspiel::spielerAuswahl() {
        char z;
        do{
            cout << "Zeige Karten von...\n"
                  << " (a) Spieler1\n "  
                  << " (b) Spieler2\n "  
                  << " (c) Spieler3\n " 
                  << " (d) Spieler4\n " 
                  << " (e) Beenden "  << endl; 
            cout << " Auswahl a-e: ";
            cin >>  z;
            switch(z){
                case 'a':
                      for(int i = 0; i < 8; i++){
                      cout << + " "  + spieler1[i].toString() << endl;
                      }
                      break;
                case 'b':
                      for(int i = 0; i < 8; i++) {
                      cout << + "" + spieler2[i].toString() << endl;
                      } 
                      break;
                case 'c':
                      for(int i = 0; i < 8; i++) {
                      cout << + "" + spieler3[i].toString() << endl;
                      } 
                      break;
                case 'd' :
                      for(int i = 0; i < 8; i++) {
                      cout << + "" + spieler4[i].toString() << endl;
                      } 
                      break;
    
            }
    
        }while(z < 'e');
    
    }
    

    Jetz möchte ich so machen, dass die Ausgabe in Untermenü nur dann Ausgeführt wird, wenn vorher die Karten gemischt worden sind ( also if ( case 2 ausgeführt ist ) gebe mir case 3 des Hauptmenüns ). Habe es schon wie ihr in der Main sieht versucht mit

    if(eingabe == 2) { k.spielerAuswahl(); }
    

    Aber leider funktioniert es nicht... 🙄
    Wie kann man das am besten Lösen?



  • Benutze doch einfach ein bool-Flag und frage dieses dann ab.



  • Hi Helenchen,

    versuchs doch mal so:

    #include "kartenspiel.h"
    #include <cstdlib>
    #include <iostream>
    #include <time.h>
    using namespace std;
    
    /*
     * 
     */
    int main() {
    
        Kartenspiel k;
        int a;
        int gemischt = 0;   // ob gemischt wurde, Voreinstellung nicht
        do{
        cout << " === Kartenspiel Menue === \n"
             << "1 Karten mischen\n " 
             << "2 Karten austeilen\n " 
             << "3 Karten eines Spielers ansehen\n "   
             << "0 BEENDEN "   
             << endl;
    
        cout << "Auswahl (0-3): ";
        cin >> a;
        switch(a)
        {
            case 1: 
                k.mischen();
                gemischt = 1;   // es wurde gemischt
                break;
            case 2:
                k.austeilen(); 
                break;
            case 3:
                if (gemischt == 1)   // wenn gemischt wurde
                  k.spielerAuswahl();
                break;
        }
    
        } while( a > 0);
    
        return 0;
    }
    

    Gruß Mümmel