2016-12-01 1 views
-2

Ich versuche ein Familienfehde-Spiel zu programmieren und ich möchte wissen, wie ich wiederholte Antworten stoppe? Wie in diesem Code könnte ich weiter schreiben "Bugs" und die Schleife würde einfach weitermachen.Wie höre ich damit auf, die Antworten zu wiederholen?

void f() 
{ 
    int y=0; 
    string q[17]; 
    string ans1[4]; 
    ans1[0]= "bears"; 
    ans1[1]="bugs"; 
    ans1[2]= "snakes"; 
    ans1[3]="skunks"; 
    string ans; 
    int sum=0; 
    q[0]="Name something you try to avoid when camping in the woods."; 
    cout << q[0] << endl; 
    for (int a=0; a<7; a++) 
    { 
     int b; 
     getline(cin,ans); 
     if (ans==ans1[0]||ans==ans1[1]||ans==ans1[2]||ans==ans1[3]) 
     { 
      if (ans==ans1[0]) 
      { 
       b=42; 
      cout << "SURVEY SAYS " << b << "! Good Job! " << endl; sum=sum+b; 
      } 
      else if (ans==ans1[1]) 
      { 
       b=33; 
      cout << "SURVEY SAYS " << b << "! Nice one man! " << endl; sum=sum+b; 
      } 
      else if (ans==ans1[2]) 
      { 
       b=20; 
      cout <<"SURVEY SAYS " << b << "! Fantastic man!"<< endl; sum=sum+b; 
      } 

      else if (ans==ans1[3]) 
       { 
        b=5; 
        cout << "SURVEY SAYS " << b << "! You Got it!" << endl; sum=sum+b; 
       } 
     } 
     else if (ans!=ans1[0]&&ans!=ans1[1]&&ans!=ans1[2]&&ans!=ans1[3]) 
     { 
       cout << "YOU GOT THIS ONE WRONG! "<< endl; y++; 
     if (y==3) { cout << "LOOOOSER" << endl; break;} 
     } 
    } 
    cout << " your total score for 

diese Runde ist "< < Summe < < endl;. }

+0

Wenn Sie Ihre Antworten als eine Liste von "gültigen Antworten, die noch nicht erraten werden" denken, muss eine gültige Antwort aus der Liste entfernt werden. Entweder legen Sie jede Antwort in einen Container (vector per jack deeth) und entfernen Sie jede ermittelte, oder markieren Sie jede vermutete Antwort irgendwie und testen Sie sie nicht erneut. Der Test auf korrekte Antworten sollte die Liste gültiger Antworten durchlaufen; Der vorhandene Test wird nicht gut funktionieren. ein anderer Punkt: der 'else if'-Test ist nicht hilfreich: der äußere if prüft, ob eine Antwort richtig ist; Wenn dieser Test fehlschlägt, muss der Else wahr sein, also müssen nicht alle! = -Tests durchgeführt werden – ryonts

Antwort

1

Sie bräuchten eine Liste zu halten (ich würde std::vector empfehlen) aller akzeptierten Antworten Wenn dann gegeben ein neue Antwort, müssen Sie es nicht in der Liste überprüfen.

Alternativ für jede Antwort, haben eine wasUsed Variable, die Sie überprüfen, wenn die Antwort gegeben wird und gesetzt, nachdem eine Antwort akzeptiert wird.

Verwandte Themen