Перемещение игрока C++

Я не знаю как сделать чтобы у меня в цикле двигался символ (игрок) по нажатиям клавиш (события на клавиши уже готовы). Напишите пожалуйста как сделать движение символа в консоли C++ Вот мой предварительный код:

#include <iostream>
#include <conio.h>
#include <string>
#include <windows.h>
using namespace std;

int main(int argc, char const *argv[])
{
    char keyboard = _getch(); // Keyboard Event 
    bool game = true;
    bool gameOver = false;

    /* код */

    if (keyboard == 'w') { // Forward
    
    } else if (keyboard == 'a') { // Left
        
    } else if (keyboard == 's') { // Back

    } else if (keyboard == 'd') { // Right


    }

    return 0;
}

Ответы (1 шт):

Автор решения: S.H.

Идея программы - печатать звёздочку, управляемую клавишами w,a,s,d.

Мне EOF подсказал ошибку в моём первом примере, и с его помощью удалось сделатьрабочий пример.

А в целом - в первом комментарии к вопросу был приведен верный ответ - ссылка на набор функций, которые можно использовать. В целом - копать надо в сторону скрин буфера

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

        using namespace std;

        int main(){
            cout << "Use 's' and 'd' for move star, and q to quit" << endl;
            cout << endl;

            HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
            if ( h==INVALID_HANDLE_VALUE ){
                cout << "Error in CreateConsoleScreenBuffer(), exited"<<endl;
                return 1;
            }
            AttachConsole(ATTACH_PARENT_PROCESS);

            _COORD coord;
            coord.X = 25;
            coord.Y = 10;

            char ch;
            DWORD numberOfCharsWritten;
            do{

                ch = getch();

                // печатаем пробел на старом месте
                if ( !SetConsoleCursorPosition(h, coord) ){
                    cout << "Error in SetConsoleCursorPosition(), exited"<<endl;
                    return 1;
                }
                if ( ! WriteConsoleA(h, " ", 1, &numberOfCharsWritten, NULL) ){
                    cout << "Error in WriteConsole(), exited"<<endl;
                    return 1;
                }

                switch (ch){
                    case 's':
                        if(coord.X>0)
                            coord.X--;
                        break;
                    case 'd':
                        if (coord.X<50)
                            coord.X++;
                        break; 
                    case 'w':
                        if(coord.Y>0)
                            coord.Y--;
                        break;
                    case 'a':
                        if (coord.Y<20)
                            coord.Y++;
                        break; 
                }
                
                // печатаем звездочку на новом месте
                if ( !SetConsoleCursorPosition(h, coord) ){
                    cout << "Error in SetConsoleCursorPosition(), exited"<<endl;
                    return 1;
                }
                if ( ! WriteConsoleA(h, "*", 1, &numberOfCharsWritten, NULL) ){
                    cout << "Error in WriteConsole(), exited"<<endl;
                    return 1;
                }

            } while (ch!='q');
            
            return 0; 
        }
→ Ссылка