использована неинициализированная локальная переменная "column"

пишу игру на консоль но пошло что то не так по идеи должно просто вывести массив из ASCLL или как там символов

#include <conio.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
//#include <>
using namespace std;

struct PLAYERS
{
    int hp;
};

int main()
{

    int herorow;
    int heroColumn;


    int symboWall = 177;
    int symboheros = 002;



    PLAYERS player1;
    PLAYERS player2;
    player1.hp = 500;
    player2.hp = 500;
    const int rowCount = 9;
    const int ColumnsCount = 12;

    bool isGameActive = true;

    const unsigned char levelData0[rowCount][ColumnsCount + 1] ={
                                                            "   #########",
                                                            "#   #   #",
                                                            "#   #   #",
                                                            "#   #   #",
                                                            "# 2 # 2 #",
                                                            "#########",
                                                                };





    unsigned char levelData[rowCount][ColumnsCount];


    int row;
    int colomn;
    unsigned char destinationCell = levelData[row][colomn];
    bool canMoveHero = false;



    for (int r = 0; r < rowCount; r++)
        {
            for (int c = 0; c < ColumnsCount; c++)
            {
                unsigned char symbol = levelData0[r][c];

                switch (symbol)
                {

                        //wall
                    case '#':
                    {
                        levelData[r][c] = symboWall;
                        break;
                    }
                    //heros
                    case '2':
                    {
                        levelData[r][c] = symboheros;
                        break;
                    }
                    //other symbols
                    default:
                    {
                        levelData[r][c] = symbol;
                        break;
                    }
                }
            }
    }
    for (int r = 0; r < rowCount; r++)
    {
        for (int c = 0; c < ColumnsCount; c++)
        {
            unsigned char symbol = levelData[r][c];
            printf("%c", symbol);
        }
        printf("\n\t");
        
    
    }
    switch (destinationCell)
    {
        case ' ':
        {
            canMoveHero = true;
            break;
        }

        if (canMoveHero)
        {
            levelData[herorow][heroColumn] = ' ';

            herorow = row;
            heroColumn = colomn;

            levelData[herorow][heroColumn] = symboheros;
        }
    }
}

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Mikhailo
int row;
int colomn;
unsigned char destinationCell = levelData[row][colomn];

В локальных переменных, которые не инициализированы, лежит мусор. Так что вы собираетесь присвоить переменной destinationCell буквально "какое-то значение неизвестно откуда".

Ответьте себе на вопрос - что должно быть в destinationCell, и присвойте соответствующие значения переменным row и colomn (кстати, по-английски столбец - column).

→ Ссылка