第二次按下按键时光标不动

Cursor not moving when key pressed second time

嘿,我在 visual studio 2013 年有一个 C++ 代码。 我想上下左右移动光标。但问题是当我第二次按下同一个键时它没有移动。

提前致谢 这是我的代码

do
{
    // Get user input (non-blocking) if it exists
    WORD wKeyCode = GetKey();

    // Process input to update application state
    switch(wKeyCode)
    {
    case VK_ESCAPE:
        bExit = true;
    case VK_LEFT:
        if(X >= 0 && X < MAP_WIDTH){
            gotoxy(X - 1, Y);
        }
        break;

    case VK_RIGHT:
        if(X >= 0 && X < MAP_WIDTH){
            gotoxy(X + 1, Y);
        }
        break;
    case VK_UP:
        if(Y >= 0 && Y < MAP_HEIGHT){
            gotoxy(X, Y - 1);
        }
        break;
    case VK_DOWN:
        if(Y >= 0 && Y < MAP_HEIGHT){
            gotoxy(X, Y + 1);
        }
        break;
    case VK_SPACE:
        if(tileMap[X][Y] == WALL){
            tileMap[X][Y] = EMPTY;
        }
        else if(tileMap[X][Y] == EMPTY){
            tileMap[X][Y] = WALL;
        }
        break;
    };

和 goto 函数

void gotoxy(int X, int Y)
{
    COORD coord;
    coord.X = X;
    coord.Y = Y;
    SetConsoleCursorPosition(
        GetStdHandle(STD_OUTPUT_HANDLE), coord);
}

你应该在每种情况下更改 XY 变量,就像你将它们传递给 qotoxy 一样(或者如果它们是全球的)。如果要进行相对移动,则需要跟踪光标的位置。

case VK_LEFT 示例:

if(X >= 0 && X < MAP_WIDTH) {
    gotoxy(X - 1, Y);
    X = X - 1; // or --X;
}

极简版:

if(X >= 0 && X < MAP_WIDTH) {
    gotoxy(--X, Y);
}