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


#include <iostream>
#include <windows.h>

using namespace std;

// Глобальные переменные длины и ширины поля (как в видео)
int v = 20; 
int h = 20; 

// Общий размер массива
int sizeField = v * h; 

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

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

int main() {
    // Поддержка русского языка в консоли
    setlocale(LC_ALL, "Russian");
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);

    // Запрос уровня сложности
    int difficulty = 1;
    cout << "Введите уровень сложности:" << endl;
    cout << "1 - Легко" << endl;
    cout << "2 - Средне" << endl;
    cout << "3 - Сложно" << endl;
    cin >> difficulty;

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

    // Заполнение левой и правой стенки (формулы из видео №2)
    for (int i = 0; i < v; i++) {
        for (int j = 0; j < h; j++) {
            int index = i + j * v;
            mapArray2[index] = 0;
        }
        mapArray2[0 + i * v] = -1;
        mapArray2[(v - 1) + i * v] = -1;
    }

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

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

    // Вывод игрового поля с помощью вложенных циклов и функции renderCell
    for (int y = 0; y < h; y++) {
        for (int x = 0; x < v; x++) {
            int currentIndex = x + y * v;
            cout << renderCell(mapArray2[currentIndex]);
        }
        cout << endl;
    }

    return 0;
}