嘿,我在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);
}
答案 0 :(得分:0)
您应该在每种情况下更改X
和Y
变量的方式与将其传递给qotoxy
的方式相同,(或者如果它们是全局的话,只需在gotoxy
中执行) 。如果你想进行相对运动,你需要跟踪光标的位置。
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);
}