C ++ 2D Array Ping Pong Board

0

Я не могу найти, что моя ошибка - мой код. Я пытаюсь создать "доску" и нарисовать что-то на ней с помощью X и Y в качестве координат. Проблема в том, что char, который я хочу рисовать, появляется не один раз. Вот код:

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 раза. Я хочу, чтобы он появлялся только один раз, при заданных координатах. Какая у меня ошибка?

  • 1
    Вы индексируете в обратном направлении, как если бы вы объявили доску [22] [78]. это проявляется в распечатке персонажа дважды, потому что вы делаете это
  • 1
    Не могли бы вы опубликовать, что в настоящее время распечатывается и что вы хотите распечатать? Я не знаю, что вы подразумеваете под "веслом".
Показать ещё 7 комментариев
Теги:
arrays
2d

1 ответ

3

Стив Кокс уже указал, что вы индексируете массив назад. Эта:

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

Будет работать на board[22][78] массива board[22][78], однако вы объявляете board[78][22]

  • 0
    Боже ... Я искал это дерьмо почти час ... Большое спасибо! :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню