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.