строк в консоле, сделал функцию, которая должна заниматься этим, но когда вызываю ее, то оказывается, что двигается только первая строка. Кто-то сталкивался с этим и может знает, как лучше это сделать?
Вторая строка должна быть под первой, но она находиться в начале
Тут фото
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");
}
}
}
.
А почему массив строк двумерный?
Еще вероятно 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"); }
Так каждая следующая будет сдвигаться вправо
А какой принцип передвижения?
Если нажимаю стрелку вправо, то объект сдвигается также направо, то есть x++
А куда мне тогда придется фигуры сохранять?
Я поэтому и спросил, какой принцип
Это принцип типа "чтоб нажать и оно было", этого мало.
В общем, всё не так. 0) нельзя сочетать вывод через stdout из C++ или C и вывод в консоль через функции Win API 1) Тебе надо каждый раз "рисовать" весь экран целиком. сдвигается что-то куда-то - ты берёшь и рисуешь весь экран по-новому. Сдвинуть что-то на экране невозможно 2) про двумерный массив строк - тебе надо понять разницу между строками и символами. Строка - это уже набор символов. Двумерный массив символов я бы понял, двумерный массив строк - это неверно. Символы при этом могут быть РАЗНЫХ типов, не только char, но и wchar_t, в зависимости от требований используемого API Если тебе совсем уж интересно, как это всё делается, найди как пример проект Far, он с открытым кодом, там это всё делается как надо
ок, спасибо, почитаю
Не сказал главного - лучше пока не лезть в такие дебри программирования, лучше делать пока обычные консольные приложения.
Обсуждают сегодня