2016-10-10 6 views
0

So wurden gebeten, ein Spiel in meiner C++ - Klasse zu machen, nahm ich eine C++ - Klasse vor einer Weile, so dass ich ein wenig eingerostet bin. Ich erinnere mich, dass Sie Arrays und Listen verwenden können?Keine ausgewählte Auswahl aus einer Liste anzeigen?

Der Sinn des Spiels ist es, eine Armeefraktion zu wählen, den Armeetyp auszuwählen und dann jemanden anzugreifen. Sobald ich zum Angriffsteil komme, anstatt eine Menge if-Anweisungen zu machen, die nach der gewählten Fraktion aus dem vorherigen Menü suchen, könnte ich die Fraktionen in ein Array vom Anfang des Programms implementieren und sobald ich zur Angriffsstufe komme, renne ich durch das Array und vergleichen Sie den vom Benutzer gewählten Kontinent mit den Kontinenten im Array und halten Sie einfach eine Ausgabe zurück, die übereinstimmt?

Wenn jemand einen kleinen Code oder einen Link zu einer Website schreiben könnte, die ein Beispiel für so etwas gibt, würde es sehr geschätzt werden, ich möchte es selbst machen, ich habe nicht wirklich etwas komplett für mich geschrieben.

#include <iostream> 
using namespace std; 

int main() { 
// Declare variables 
int menuInput = 0, continentInput = 0, armyInput = 0, actionInput = 0; 

// Intro 
cout << "WELCOME TO WAR" << endl; 

// Display main menu 
do { 
    cout << "1) Rules" << endl; 
    cout << "2) Play Game" << endl; 
    cout << "3) Quit" << endl; 
    cout << "Menu choice: "; 
    cin >> menuInput; 


    // if rules is selected 
    if (menuInput == 1) { 
     cout << endl; 
     cout << "RULES: " << endl; 
     cout << "1) Choose your player." << endl; 
     cout << "2) Choose your army type." << endl; 
     cout << "3) Choose to attack." << endl; 
     cout << endl; 
    } 

    // if game is selected 
    else if (menuInput == 2) { 
     cout << endl; 
     cout << "START" << endl; 

     // first do while loop, continent choice 
     do { 
      cout << "1) North America" << endl; 
      cout << "2) South America" << endl; 
      cout << "3) Europe" << endl; 
      cout << "4) Africa" << endl; 
      cout << "5) Asia" << endl; 
      cout << "6) Australia" << endl; 
      cout << "7) Antartica" << endl; 
      cout << "Choose your player from the list: "; 
      cin >> continentInput; 
      cout << endl; 
      // invalid display if selection not in range 
      if (continentInput <= 0 ||continentInput > 7) { 
       cout << "INVALID" << endl; 
       cout << endl; 
      } 
     } while (continentInput <= 0 || continentInput > 8); 

     // second do while loop, army type choice 
     do { 
      cout << "1) Army (Ground type forces)" << endl; 
      cout << "2) Navy (Sea type forces)" << endl; 
      cout << "3) Air Force (Air type forces)" << endl; 
      cout << "Choose your army type from the list: "; 
      cin >> armyInput; 
      cout << endl; 

      if (armyInput <= 0 || armyInput > 3) { 
       cout << "INVALID" << endl; 
      } 
     } while (armyInput <= 0 || armyInput > 3); 

     // third do while loop, who to attack 


    } 
    else if (menuInput == 3) { 
     cout << endl; 
     cout << "GAME OVER" << endl; 
    } 

    else { 
     // display invlaid input if number choice is not in given range 
     cout << "INAVLID INPUT" << endl; 
    } 

} while (menuInput != 3); 

return 0; 

}

+0

Das richtige Werkzeug, um solche Probleme zu lösen, ist Ihr Debugger. Sie sollten Schritt für Schritt durch Ihren Code * gehen, bevor Sie auf Stack Overflow nachfragen. Für weitere Hilfe lesen Sie bitte [Wie kleine Programme zu debuggen (von Eric Lippert)] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). Zumindest sollten Sie Ihre Frage bearbeiten, um ein [minimales, vollständiges und verifizierbares] (http://stackoverflow.com/help/mcve) Beispiel einzufügen, das Ihr Problem zusammen mit den Beobachtungen, die Sie in der Debugger. –

+0

Haben Sie schon Unterricht gelernt? Es wäre besser, wenn du ein Klassenobjekt hättest, das einen Spieler und Armeetyp-Mitglieder hat, die du festlegst, bekommst und dann handelst. https://www.tutorialspoint.com/cplusplus/cpp_classes_objects.htm – DigitalNinja

+0

@DigitalNinja die Klasse ist noch nicht an diesem Punkt angelangt, die erste "Version" soll einfacher codiert werden, aber das ist was ich hatte in Plänen so weit wie objektorientiert. –

Antwort

0

Wenn Sie Ihre Benutzereingabe Sie einen Array mit den Entscheidungen gefüllt verweisen kann auf eine Zahl.

military[x] = { "Army", "Navy" ...}; 
fromWhere[x] = { "North America", "South" ...}; 
toKill[x] = { "Whoever has oil" ... }; 
//get user input. 
//toKill[get user input]; 
//kill with military[get user input]; 
//kill form fromWhere[get user input]; 
//do some attack logic 

Nur ein Kopf ist Ihre Frage eher vage. Kannst du erklären, was du brauchst? Anscheinend möchten Sie Ihre Werte hashen und eine schnelle Suche durchführen, um den Vergleich von Zeichenfolgen zu vermeiden, aber Sie müssen dies nicht tun, da Sie eine int als Benutzereingabe verwenden.

+0

Sobald ich also zum Angriffsstadium des Spiels komme, möchte ich eine Liste der anderen Kontinente, die du angreifen kannst, erscheinen lassen, ohne den Kontinent, den du gewählt hast, den, den du gerade "spielst". Also war ich verwirrt darüber, wie ich es so programmieren sollte, wie mein Programm jetzt ist. Ich habe die Eingabe des Benutzers auf ihrem Kontinent, aber da die anderen Optionen nicht im Programm sind, suchte ich nach Möglichkeiten, die Benutzerauswahl mit der Liste zu vergleichen. Ich werde versuchen, was du gesagt hast, indem du die Auswahl zu einer Liste gemacht hast und eine For-Schleife ausführst, sobald ich zum Menü für den Angriff komme, vielleicht wird das funktionieren. –

Verwandte Themen