Превратить код в массив и дисплей - PullRequest
0 голосов
/ 30 июля 2010

Как я могу превратить это в массив?Мне нужна доска для показа пробелов, и когда пользователь входит в нее, она заполняется X или O другой функцией.Текущая плата работает, я хотел бы превратить ее в массив [3] [3] и отобразить содержимое массива.

void showboard(char &squareOne, char &squareTwo, char &squareThree, char &squareFour, char &squareFive, char &squareSix, char &squareSeven,
    char &squareEight, char &squareNine)
{


 cout << squareOne << "|" << squareTwo << "|" << squareThree << endl
  << "-+-+-"<< endl
  << squareFour << "|" << squareFive << "|" << squareSix << endl
  << "-+-+-"<< endl
  << squareSeven << "|" << squareEight << "|" << squareNine << endl;
 }
}

Ответы [ 2 ]

1 голос
/ 30 июля 2010

Вы можете сделать так, чтобы функция showboard() принимала ссылку на массив 3x3 chars.Странно выглядящий параметр char (&squares)[3][3] означает «ссылку на массив 3x3 с именем chars с именем squares».

void showboard(char (&squares)[3][3]) 
{ 
    std::cout << squares[0][0] << "|" << squares[0][1] << "|"
         << squares[0][2] << "\n" << "-+-+-"<< "\n" 
         << squares[1][0] << "|" << squares[1][1] << "|"
         << squares[1][2] << "\n" << "-+-+-"<< "\n"
         << squares[2][0] << "|" << squares[2][1] << "|"
         << squares[2][2] << std::endl; 
} 

int main()
{
    char s[3][3] = { {'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'} };
    showboard(s);
}

В качестве альтернативы приведена реализация, в которой вместо этого используется цикл for:

void showboard(char (&squares)[3][3]) 
{ 
    for(int i = 0; i < 3; ++i)
    {
        for(int j = 0; j < 3; ++j)
        {
            std::cout << squares[i][j];
            if(j < 2) std::cout << "|";
        }
        std::cout << "\n";
        if(i < 2) std::cout << "-+-+-" << std::endl;;
    }
} 
0 голосов
/ 30 июля 2010
template <typename T, int nRows, int nCols>
class Matrix: public vector<vector<T>>
{
public:
    Matrix()
    {
        for (int r = 0; r < nRows; ++r)
        {
            vector<T> row;
            row.resize(nCols);
            fill(row.begin(), row.end(), 0);
            this->push_back(row);
        }
    }

    int rows() const { return nRows; }
    int columns() const { return nCols; }
};

typedef Matrix<int, 3, 3> Board;

void show(const Board& board)
{
    for (int i = 0; i < board.rows(); ++i)
    {
        for (int j = 0; j < board.columns(); ++j)
            cout << board[i][j] << " ";
        cout << endl;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...