二维阵列乒乓板

C++ 2D Array Ping Pong Board

本文关键字:阵列 乒乓 二维      更新时间:2023-10-16

我找不到我的错误是我的代码。我正在尝试创建一个"板",并在上面画一些东西,以X和Y为坐标。问题是我想要绘制的字符出现了不止一次。下面是代码:

class Board
{
public:
    void fillBoard()
    {
        for (int i = 0; i < 22; i++)
        {
            for (int k = 0; k < 78; k++)
            {
                board[i][k] = ' ';
            }
        }
    }
    void drawBoard()
    {
        for (int i = 0; i < 22; i++)
        {
            for (int k = 0; k < 78; k++)
            {
                cout<<board[i][k];
            }
            cout<<"n";
        }
    }
    void addView(int width, int height, char img, int tallness = 0)
    {
        /// board[height][width] = img;
        for (int i = 0; i <= tallness; i++, height++)
        {
            board[height][width] = img;
        }
    }
private:
   char board[78][22];
};

int main()
{
    Board board;
    board.fillBoard();
    ///board.addView(x, y, 'O');
    board.addView(0, 10, '|', 5); 
    board.drawBoard();
    return 0;
}

如你所见,桨出现了4次。我希望它在给定坐标下只出现一次。我错在哪里?

Steve Cox已经指出你是向后索引数组。:

for (int i = 0; i < 22; i++)
{
    for (int k = 0; k < 78; k++)
    {
        board[i][k] = ' ';
    }
}

将在数组board[22][78]上工作,但是您正在声明board[78][22]