第二次按下按键时光标不动
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);
}
你应该在每种情况下更改 X
和 Y
变量,就像你将它们传递给 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);
}
嘿,我在 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);
}
你应该在每种情况下更改 X
和 Y
变量,就像你将它们传递给 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);
}