2016-05-24 11 views
1

Ich versuche, ein Tic-Tac-Toe-Spiel zu codieren und kann nicht herausfinden, wie push_back ein '+' char, wenn ich dran bin.Wie push_back etwas in einem 2D-Vektor

Also wenn ein Spieler zum Beispiel "Oben links" tippt, was im Grunde bedeutet, dass ich oben links möchte, dass das Spiel nach der korrekten Eingabe sucht und einen '+' an der vom Spieler gewählten Position platziert. Was ich tue, scheint nicht zu funktionieren. Entweder wird es nicht gespeichert oder ich verwende die falsche Syntax.

int main() { 
vector < vector <char> > spielbrett(3, vector<char>('3')); 
bool gewonnen = true; 
string feld; 

while (gewonnen) { 
    cout << "Position waehlen, z. B. Oben links oder Mitte Mitte usw. " << endl; 
    for (int i = 0; i < 3; i++) { 
     for (int j = 0; j < 3; j++) { 

      cout << spielbrett[i][j] << " "; 
      if (j < 2) { 
       cout << " | "; 
      } 

     } 
     if (i < 2) { 
      cout << endl << " ------------ " << endl; 
     } 
    } 
    cout << endl << endl << endl; 
    cin >> feld; 
    if (feld == "Oben links") { 
     spielbrett[0].push_back('+'); 
    } 
    else if (feld == "Oben mittig") { 

    } 
    else if (feld == "Oben rechts") { 

    } 
    else if (feld == "Mitte links") { 

    } 
    else if (feld == "Mitte mittig") { 

    } 
    else if (feld == "Mittig rechts") { 

    } 
    else if (feld == "Unten links") { 

    } 
    else if (feld == "Unten mittig") { 

    } 
    else if (feld == "Unten rechts") { 

    } 
} 
system("pause"); 
} 

Antwort

3

Sie möchten push_back hier nicht verwenden. Da der Vektor bereits 3x3 ist dank

vector < vector <char> > spielbrett(3, vector<char>('3')); 

Alles, was Sie tun müssen, ist den Zugriff auf die Positionen direkt. Also, wenn Sie die linke obere Ecke wollen, dann wollen Sie

spielbrett[0][0] = '+'; 

Unten rechts wäre

spielbrett[2][2] = '+';