Вы просто перепутали строки и столбцы при инициализации массива.
for ( int i = 0 ; i < row; i++ ) {
for( int j = 0; j < col; j++ ) {
должно быть
for ( int i = 0 ; i < col; i++ ) {
for( int j = 0; j < row; j++ ) {
Выделение одного массива является альтернативой, лично яне думайте, что между ними есть что выбрать.Но значительное улучшение, которое вы можете сделать, - это использовать std::vector
вместо того, чтобы выделять память самостоятельно.Если вам не сказали конкретно, что вы должны использовать массивы, вы должны использовать std::vector
.
Вы также можете изменить это
for( int i = 0; i < col ; i++ ) {
playing_board[i] = nullptr;
playing_board[i]=new char[row];
}
на это
for( int i = 0; i < col ; i++ ) {
playing_board[i]=new char[row];
}
Назначение nullptr
перед назначением выделенной памяти не требуется.