Как сделать доску одномерной с ++ - PullRequest
0 голосов
/ 10 апреля 2020

Я ранее создал доску для властной игры, но сейчас я пытаюсь сделать доску одномерной для игры под названием жабы и лягушки, и я не знаю, с чего начать, если возможно, что я этого не сделаю нужно сделать массив, чтобы сделать одномерное, тогда это было бы хорошо.

#include<Windows.h>
#include<iostream>
#include<vector>

using namespace std;


int main()
{  
// specify default value to fill the vector elements
int mapSize = 8;
int x = 0;
int y = 0;
int horizontal = 0;
int vertical = 0;

cout << "Enter the size of board => ";
cin >> mapSize;

vector< vector<char> > board(mapSize, vector<char>(mapSize, 'e'));
for (int i = 0; i < mapSize; i++) {
    for (int j = 0; j < mapSize; j++) {
        cout << board[i][j] << " ";
    }
    cout << endl;
}

}

1 Ответ

1 голос
/ 10 апреля 2020

Прямо сейчас у вас есть двумерная доска, созданная с использованием вложенного вектора. Вы используете vector<vector<char>> board(mapSize, vector<char>(mapSize, 'e'));, который создает список, содержащий списки, используя векторный конструктор vector<E>(size_type n, const value_type& val). Это означает, что вектор содержит n элементов типа E, которые являются копиями val.

Например, в случае vector<int>(5, 10) созданный список будет выглядеть следующим образом [10, 10, 10, 10, 10] In Ваш код, например, будет [['e', 'e', 'e'], ['e', 'e', 'e'], ['e', 'e', 'e']] для mapSize = 3.

Чтобы сделать одномерное, вам просто нужно сделать его обычным списком, а не списком списков. Например, vector<char> board(mapSize, 'e') для создания простого ['e', 'e', 'e'].

Это также означает, что при печати кода доступ будет осуществляться в одном измерении - например, board[i] получит значение в этом месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...