Ан
Анна

Здравствуйте как нарисовать рамку в консоле с++? надо через for рамка должна состоять из знака "="

Алексей Новиков
Алексей Новиков

Вот мой код для "как бы" мини игры
Там используються рамки (борты) за которые не разрешено выходить.
Можеш посомтреть и переписать что нужно.

#include // cin, cout
#include // поддержка русского языка
#include // _getch()
#include // поддержка функции очистки экрана system("cls")
#include

using namespace std;

int main()
{
setlocale(LC_ALL,"Russian"); // установка русского языка

start:

char act; // переменная для хранения ввода пользователя
int ch; // ввод пользователя приведённый к типу int
int x = 7; // две переменные для хранения координат пользователя
int y = 9;
int oil = 600;//Переменная для определния топлива
int hp = 100;
char map[15][20]; // двумерный массив для хранения игровой карты

// блок инициализации массива
// внешний цикл отвечает за строки
for (int i = 0; i< 15; i++)
{
// внутренний цикл отвечает за столбцы
for (int j = 0; j< 20; j++)
{
map[j] = ' ';
}
}
//инциализация бортов
for(int i = 0; i < 15; i +=14)
{
for(int j = 0; j < 20; j++)
{
map[j] = '=';
}
}
for(int j = 0; j < 20; j +=19)
{
for(int i = 0; i < 15; i++)
{
map[j] = '|';
}
}
map[7][9] = 'T';// помещаем игровой персонаж в начало координат

while (1)
{
system("cls"); // вызов функции очистки экрана

for (int i = 0; i < 15; i++)
{
for (int j = 0; j < 20; j++)
{
cout << map[j]; // в циклах поэлементно выводится массив
}
cout << "\n"; // переход на новую строку после каждого "ряда"
}

cout << "Координаты : " << " По X : " << x << " : " << " По Y : " << y << endl;
cout << "Топливо : " << oil << endl;
cout << "Жизни : " << hp << endl;
act = _getch();
ch = static_cast(act);

/*if (ch == -32)
{}
else if (ch == 27)
{
break;
}

else if (ch == 75)
{
map[x][y] = ' ';
y--;
map[x][y] = 'T';
}

else if (ch == 77)
{
map[x][y] = ' ';
y++;
map[x][y] = 'T';
}

else if (ch == 80)
{
map[x][y] = ' ';
x++;
map[x][y] = 'Т';
}

else if (ch == 72)
{
map[x][y] = ' ';
x--;
map[x][y] = 'Т';
}
*/

switch (static_cast(act))

{
case -32:
break;
case 27:
exit(0);
break;
case 75:
map[x][y] = ' '; // "Убираем" объект со старой координаты
y--; // изменяем координаты
oil--;
if(y<1)y=1;
if(y<1)hp-=25;
map[x][y] = 'Т'; // "рисуем" объект на новом месте
break;
case 77:
map[x][y] = ' ';
y++;
oil--;
if(y>18)y=18;
if(y>17)hp-=25;
map[x][y] = 'Т';
break;
case 80:
map[x][y] = ' ';
x++;
oil--;
if(x>13)x=13;
if(x>12)hp-=25;
map[x][y] = 'Т';
break;
case 72:
map[x][y] = ' ';
x--;
oil--;
if(x<1)x=1;
if(x<2)hp-=25;
map[x][y] = 'Т';
break;
case 32:
goto start;
break;
}
if(oil<0) cout << "Топливо по нулям. Вы проиграли. Начните сначала! \n" << "Для рестарта нажмите Space (Пробел) \n" << "Для выхода из программы нажмите (ESC)" <(act) == 13)goto start;
if(static_cast(act) == 27)exit(0);
}
}
} // конец цикла while
_getch();
return 0;
}

Похожие вопросы
Что нарисовать? Мучаюсь вопросом "Что нарисовать? ". Есть советы, могу нарисовать вам что-нибудь!
Как вложить рамку (с текстом ) в другую рамку? В CSS !
Как нарисовать символ (знак) определенным шрифтом (чтобы линии символа, были похожие на тематику шрифта)?
Как нарисовать этот знак?
Как нарисовать забор в pascalabc, чтобы доска была в n пикселей, а забор состоял из k досок.
что не должно выходить за дозволенные рамки?
Как нарисовать знак biohazard
Помогите. Нужно вывести в консоль с++ пирамиду из звезд. И сделать это надо с помощью двух циклов for.
Должны же быть рамки.. . хоть в чём то?
В чём вы СОСТОЯЛИСЬ? Здравствуйте!)