#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;
}