Вот итоговый вариант кода на 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;
}