170 похожих чатов

Привет, у меня есть такой вопрос: я хочу передвигать массив

строк в консоле, сделал функцию, которая должна заниматься этим, но когда вызываю ее, то оказывается, что двигается только первая строка. Кто-то сталкивался с этим и может знает, как лучше это сделать?

Вторая строка должна быть под первой, но она находиться в начале

Тут фото
https://ibb.co/QjQRYwD

std::string str[2][2] =
{
"//",
"//"
};



void Console::move(short x, short y)
{
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), { x,y });
}

void Console::m()
{
char ch;
short x = 10, y = 10;

while (true)
{
ch = _getch();
if (ch == -32)
ch = _getch();

switch (ch)
{
case rigth:

Console::move(x++, y);
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 2; j++)
{
std::cout << str[i][j] << std::endl;
}
//std::cout << std::endl;
}
Sleep(100);
system("cls");
}
}
}

15 ответов

4 просмотра
Vova- Автор вопроса

.

А почему массив строк двумерный?

Еще вероятно SetConsoleCursorPosition нужно выставлять для каждой строки

Vova- Автор вопроса
Max Kolesnikov
А почему массив строк двумерный?

Массив двумерный потому, что была идея сделать несколько фигур и чтобы они были большие или маленькие и лучшей идеи за массив не пришло

Vova- Автор вопроса
Max Kolesnikov
Еще вероятно SetConsoleCursorPosition нужно выстав...

Вот так? case rigth: Console::move(x++, y); for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { std::cout << str[i][j] << std::endl; Console::move(x++, y); } //std::cout << std::endl; } Sleep(100); system("cls"); }

Vova
Вот так? case rigth: Console::move(x++, y); ...

Так каждая следующая будет сдвигаться вправо

А какой принцип передвижения?

Vova- Автор вопроса
Ilya Zviagin
А какой принцип передвижения?

Если нажимаю стрелку вправо, то объект сдвигается также направо, то есть x++

Vova- Автор вопроса
Ilya Zviagin
Убери пока...

А куда мне тогда придется фигуры сохранять?

Vova
А куда мне тогда придется фигуры сохранять?

Я поэтому и спросил, какой принцип

Vova
Если нажимаю стрелку вправо, то объект сдвигается ...

Это принцип типа "чтоб нажать и оно было", этого мало.

В общем, всё не так. 0) нельзя сочетать вывод через stdout из C++ или C и вывод в консоль через функции Win API 1) Тебе надо каждый раз "рисовать" весь экран целиком. сдвигается что-то куда-то - ты берёшь и рисуешь весь экран по-новому. Сдвинуть что-то на экране невозможно 2) про двумерный массив строк - тебе надо понять разницу между строками и символами. Строка - это уже набор символов. Двумерный массив символов я бы понял, двумерный массив строк - это неверно. Символы при этом могут быть РАЗНЫХ типов, не только char, но и wchar_t, в зависимости от требований используемого API Если тебе совсем уж интересно, как это всё делается, найди как пример проект Far, он с открытым кодом, там это всё делается как надо

Vova
ок, спасибо, почитаю

Не сказал главного - лучше пока не лезть в такие дебри программирования, лучше делать пока обычные консольные приложения.

Похожие вопросы

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
53
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
Кто-нибудь решал проблему с автоматическим скроллингом к выбранной ячейке в TDBGrid в Lazarus? Проблема в том, что есть допустим 3 столбца, третий столбец виден наполовину, вк...
Дмитрий Логинов
1
Приветствуем всех! Устали без проектов? Если вы программист и хотите получать стабильные заказы, компания Elif предлагает вам недельный курс по поиску проектов и их ведению. ...
Elif
1
А чего сейчас в моде вместо Error для эксепшенов? А то я тут внезапно узрел что он не рекомендуется :) У Try::Tiny какой-то совершенно ужасный синтаксис если надо конкретные э...
Denis F
19
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Чорт! Чорт! Чорт! Стала ставить через GetIt (написано же, что ручками не рекомендуется) Сломалось на дублировании моей TSkLabel. Чтож мне ее по всем проектам переименовывать в...
Катерина Свиридова
7
Привет. Сразу скажу, что на C/C++/Rust я не пишу, но тем не менее возникла потребность дебага C/C++/Rust кода. Суть: есть серверное приложение, которое периодически ведёт себ...
ninekeem 🐳
4
Hey someone plz help to resolve my issue here is my table... Log { id user_id type target_ct target_obj_id action_ct action_obj_id workspace_id created_at } i wanna fil...
Rahul Singh
1
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
Карта сайта