Suche Befehl (Array, Schleife)



  • Hi Leute,
    ich arbeite grad an einem zugegeben etwas kranken Konsolenspiel.
    Hier das Spiel:

    //mobbingspiel.cpp
    
    #include <iostream>
    #include <string>
    #include <iomanip>
    #include <conio.h>
    
    using namespace std;
    
    int selbstbewusstsein = 100, wut = 0, maxwut = 80, skill = 1, toteopfer = 0, opferzaehler;
    string opfer[2];
    char aktion;
    
    int main()
    {
        for (opferzaehler = 0; opferzaehler < 3; opferzaehler++) // 3 Mal Schleife durchlaufen
    	{
    	   cout << "Wer soll das Opfer sein: ";
    	   cin >> opfer[0];
    
    	   system("CLS");                                                          // löscht Bildschrim 
    
    	   do
    	   {
    	      cout << "Opfer: " << opfer[0] << "                               Dein Mobbingskill: " << skill << endl                           // Menü
    		       << "Selbstbewusstsein: " << selbstbewusstsein << "                     Tote Opfer: " << toteopfer << endl
    			   << "Wut: " << wut << endl << endl;
    
    	      cout << "Was wollen Sie mit ihm machen:" << endl
    	           << "1. Schlagen" << endl
    	           << "2. Anspucken" << endl
    			   << "3. Beleidigen" << endl
                   << "Geben Sie die entsprechende Zahl ein: ";
    
    	      cin >> aktion;                                                      // Eingabe der Aktion
    
    	      if (wut >= maxwut)
    	      {
    	   	      cout << endl << opfer[0] << " rastet aus und droht sich umzubringen!" << endl;
    		      maxwut += 9999;                                                 // verhindert ein zweites ausführen
    		      getch();
    	      }
    	      else
    	      {
                 switch(aktion)
    	         {
    		         case '1': selbstbewusstsein -= 3 * skill, wut += 3 * skill; break;
    		         case '2': selbstbewusstsein -= 5 * skill, wut += 5 * skill; break;
    		         case '3': selbstbewusstsein -= 2 * skill, wut += 2 * skill; break;
    	         }
    	      }
    
    	      system("CLS");                                                     // löscht Bildschirm
    	   }
    	   while (selbstbewusstsein > 0);
    
    	   cout << opfer[0] << " hat sich umgebracht!" << endl;
    	   toteopfer++;
    	   skill++;
    	   cout << "LEVEL UP!" << endl
    	        << "Dein neuer Mobbingskill ist " << skill << endl;
    	   getch();
    	   system("CLS");
       }
    	   getch();
    	   return 0;
    }
    

    Ich wollte es so machen, dass beim ersten Durchlauf der for-Schleife opfer[0], beim Zweiten opfer[1] und beim Dritten opfer[2] angesprochen wird. Gibt es einen Befehl oder so, der sowas macht?
    Wäre sehr dankbar dafür.



  • Hier ein Beispiel mit einem einfachen int-Array:

    int main()
    {
        int opfer[] = {1, 2};
        int index = 0;
    
        while ( true )
        {
            cout << opfer[index] << endl;
            index ^= 1; // Flipt die Zahl, das heisst 0 wird zu 1 und 1 wird zu 0
        }
    }
    

    Das index ^= 1 ist aequivalent zu index = index ^ 1.



  • Danke! Warum bin ich darauf nicht früher gekommen. Vielen Dank!
    EDIT:
    Ich hab noch ein paar weitere Sachen geändert und jetzt geht's nicht mehr

    //mobbingspiel.cpp
    
    #include <iostream>
    #include <string>
    #include <conio.h>
    
    using namespace std;
    
    int selbstbewusstsein[] = {100, 100, 100}, skill = 1, toteopfer = 0, opferzaehler, index = 0, grenze = 20;
    string opfer[3];
    char aktion;
    
    int main()
    {
        for (opferzaehler = 0; opferzaehler < 3; opferzaehler++) // 3 Mal Schleife durchlaufen
    	{
    	   cout << "Wer soll das Opfer sein: ";
    	   cin >> opfer[index];
    
    	   system("CLS");                                                          // löscht Bildschrim 
    
    	   do
    	   {
    	      cout << "Opfer: " << opfer[index] << "                               Dein Mobbingskill: " << skill << endl                           // Menü
    		       << "Selbstbewusstsein: " << selbstbewusstsein[index] << "                     Tote Opfer: " << toteopfer << endl
    			   << endl << endl;
    
    	      cout << "Was wollen Sie mit ihm machen:" << endl
    	           << "1. Schlagen" << endl
    	           << "2. Anspucken" << endl
    			   << "3. Beleidigen" << endl
                   << "Geben Sie die entsprechende Zahl ein: ";
    
    	      cin >> aktion;                                                      // Eingabe der Aktion
    
              switch(aktion)
    	      {
    		      case '1': selbstbewusstsein[index] -= 3 * skill; break;
    		      case '2': selbstbewusstsein[index] -= 5 * skill; break;
    		      case '3': selbstbewusstsein[index] -= 2 * skill; break;
    	      }
    
    	      if (selbstbewusstsein[index] < grenze)
    	      {
    	   	      cout << endl << opfer[index] << " rastet aus und droht sich umzubringen!" << endl;
    		      grenze -= 9999;                                                 // verhindert ein zweites ausführen
    		      getch();
    	      }
    
    	      system("CLS");                                                     // löscht Bildschirm
    	   }
    	   while (selbstbewusstsein > 0);
    
    	   cout << opfer[index] << " hat sich umgebracht!" << endl;
    	   toteopfer++;
    	   skill++;
    	   index++;
    	   grenze = 20;
    	   cout << "LEVEL UP!" << endl
    	        << "Dein neuer Mobbingskill ist " << skill << endl;
    	   getch();
    	   system("CLS");
       }
    	   getch();
    	   return 0;
    }
    

    Der Teil nach der do-while Schleife wwird nicht mehr ausgeführt.
    Kann mir jemand helfen?



  • Du hantierst unkoordiniert mit cin und getch() herum, sowas führt leicht zu diffizilem Verhalten wie du bemerkt hast.


Anmelden zum Antworten