Загрузка данных


Вот итоговый вариант кода на C++, в котором учтены все правки и итоговые изменения, сделанные автором по ходу первых двух видеоуроков (добавлены ключевые слова const, правильные циклы заполнения границ через массивы mapArray1 и mapArray2, функция отрисовки q3 с конструкцией switch-case, выбор уровня сложности ed и построчный вывод карты на экран):
#include <iostream>
#include <windows.h>

using namespace std;

// Глобальные константы для длины и ширины поля (автор исправил их на const, чтобы компилятор разрешил задавать размеры массивов)
const int v = 20;
const int h = 20;

// Общий размер массива (произведение длины и ширины)
const int size = v * h;

// Массивы для построения карты (верх/низ и боковые стенки)
int mapArray1[400];
int mapArray2[400];

// Функция отрисовки элементов по кодам (итоговый вариант из видео)
char q3(int q5) {
    switch (q5) {
    case -1:
        return '#'; // Символ границ (стены)
    }
}

int main() {
    // Настройка консоли для корректного отображения кириллицы
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);

    // Переменная для выбора уровня сложности
    int ed;

    // Вывод меню сложности в консоль
    cout << "Введите уровень сложности" << endl;
    cout << "1. Легко" << endl;
    cout << "2. Средне" << endl;
    cout << "3. Сложно" << endl;

    // Считывание выбора пользователя
    cin >> ed;

    // Заполнение верхней и нижней стенки в первом массиве
    for (int i = 0; i < v; i++) {
        mapArray1[i] = -1;
        mapArray1[i + (h - 1) * v] = -1;
    }

    // Заполнение левой и правой стенки, а также пустого пространства во втором массиве
    for (int i = 0; i < v; i++) {
        for (int j = 0; j < h; j++) {
            mapArray2[i + j * v] = 0;
        }
        mapArray2[0 + i * v] = -1;
        mapArray2[(v - 1) + i * v] = -1;
    }

    // Объединение данных из первого массива во второй (перенос горизонтальных стен)
    for (int i = 0; i < size; i++) {
        if (mapArray1[i] == -1) {
            mapArray2[i] = -1;
        }
    }

    // Очистка экрана перед выводом готового поля
    system("cls");

    // Вложенные циклы для построчного вывода карты на экран
    for (int y = 0; y < h; y++) {
        for (int x = 0; x < v; x++) {
            cout << q3(mapArray2[x + y * v]);
        }
        cout << endl; // Перевод строки после каждого ряда
    }

    return 0;
}