清除2D阵列中的值

时间:2013-02-28 15:03:53

标签: c++

我一直在为一个naughts和crosses程序做一些编程,而且这个板是一个2D数组。我一直试图让程序重复,如果用户想要重播但是我注意到重复时所有值都保留在数组中。所以我想知道是否有办法清除我的数组中的所有值。

我确实在论坛上尝试了一些先前的问题,但我找到的一些解决方案似乎没有用。

如果有人希望看到代码只是评论,我会在这里添加,我只是不确定是否有必要。

非常感谢任何帮助。

    const int Rows = 4;
    const int Columns = 4;
    char Board[Rows][Columns] = { {' ', ' ', ' ', ' ' },
                                  {' ', '_', '_', '_' },
                                  {' ', '_', '_', '_' },
                                  {' ', '_', '_', '_' } };


    for (int i = 0; i < Rows; ++i)
    {
        for (int j = 0; j < Columns; ++j)
            cout << Board [i][j];
        cout << endl;
    }

    cout << endl << endl;



    int row;
    int column;


    do
    {
        cout << "Please enter the value of the row you would like to take ";
        cin >> row;
        }while (row != 0 && row != 1 && row != 2 && row != 3);


    do
    {
        cout << "Please enter the value of the column you would like to take ";
        cin >> column;
        }while (column != 0 && column != 1 && column != 2 && column != 3);


    Board [row][column] = Player1.GetNorX();

            for (int i = 0; i < Rows; ++i)
    {
        for (int j = 0; j < Columns; ++j)
            cout << Board [i][j];
        cout << endl;
    }

3 个答案:

答案 0 :(得分:2)

假设您希望将Board重置为其原始状态,则需要:

for (int i = 0; i < Rows; i++) {
  for (int j = 0; j < Columns; j++) {
    if (i == 0 || j == 0) {
      Board[i][j] = ' ';
    } else {
      Board[i][j] = '_';
    }
  }
}

这将循环遍历数组的每个元素,如果列或行号为0,则用' '填充,或者用'_'填充。

如果您只关心右下方的3x3网格,那么您可以这样做:

for (int i = 1; i < 4; i++) {
  for (int j = 1; j < 4; j++) {
    Board[i][j] = '_';
  }
}

但我建议将RowsColumns声明为3。如果您希望用户输入从1开始的行号和列号,则只需在访问阵列时从{1,2,3}转换为{0,1,2}。

答案 1 :(得分:0)

将代码放入单独的函数

void game()
{
   const int Rows = 4;
   // ...
}

并从游戏控制器

调用它
bool replay;
do
{
    game();
    cout << "Replay? (0 - no, 1 - yes)";
    cin >> replay;
} while(replay);

这种方法可以恢复整个环境。

答案 2 :(得分:0)

使用 List 类而不是传统的多维数组。可以轻松清除和删除此类对象的元素。此外,列表的大小是动态的和可变的。创建对象时无需指定大小。尝试定义二维列表。

List<List<char>> Board = new List<List<char>>;