C++ 连续玩家移动
C++ Continuous Player Movement
为了我的程序,我正在制作 Pacman!我可以让玩家随键移动,但我怎样才能让玩家自动移动,然后当你按下另一个键时它会改变。简而言之,如果我按下向右箭头键,播放器会自行移动而无需我按住键,如果我按下向上键,下一个可用的角,播放器将继续向上移动。这是我的玩家移动代码:
void Controls()
{
if (GetAsyncKeyState(VK_UP) != 0)
{
text(Ply_X, Ply_Y, 15, " ");
if( Map[Ply_Y-1][Ply_X] == '.' ){ Ply_Y--; points++; } else
if( Map[Ply_Y-1][Ply_X] == ' ' ) Ply_Y--;
text(Ply_X, Ply_Y, 14, ""); cout << (char)2;
}
if (GetAsyncKeyState(VK_DOWN) != 0)
{
text(Ply_X, Ply_Y, 15, " ");
if( Map[Ply_Y+1][Ply_X] == '.' ){ Ply_Y++; points++; } else
if( Map[Ply_Y+1][Ply_X] == ' ' ) Ply_Y++;
text(Ply_X, Ply_Y, 14, ""); cout << (char)2;
}
if (GetAsyncKeyState(VK_RIGHT) != 0)
{
text(Ply_X, Ply_Y, 15, " ");
if( Map[Ply_Y][Ply_X+1] == '.' ){ Ply_X++; points++; } else
if( Map[Ply_Y][Ply_X+1] == ' ' ) Ply_X++;
text(Ply_X, Ply_Y, 14, ""); cout << (char)2;
}
if (GetAsyncKeyState(VK_LEFT) != 0)
{
text(Ply_X, Ply_Y, 15, " ");
if( Map[Ply_Y][Ply_X-1] == '.' ){ Ply_X--; points++; } else
if( Map[Ply_Y][Ply_X-1] == ' ' ) Ply_X--;
text(Ply_X, Ply_Y, 14, ""); cout << (char)2;
}
}
我看到的最简单的方法就是在按下某个键时设置播放器方向。
所以你最初的播放器方向是VK_NONE,当你按下任意键时,你会将播放器方向设置为该键。
稍后这些 ifs 将代替 GetAsyncKeyState(VK_UP)!= 0 写为:playerDirection == VK_UP.
为了我的程序,我正在制作 Pacman!我可以让玩家随键移动,但我怎样才能让玩家自动移动,然后当你按下另一个键时它会改变。简而言之,如果我按下向右箭头键,播放器会自行移动而无需我按住键,如果我按下向上键,下一个可用的角,播放器将继续向上移动。这是我的玩家移动代码:
void Controls()
{
if (GetAsyncKeyState(VK_UP) != 0)
{
text(Ply_X, Ply_Y, 15, " ");
if( Map[Ply_Y-1][Ply_X] == '.' ){ Ply_Y--; points++; } else
if( Map[Ply_Y-1][Ply_X] == ' ' ) Ply_Y--;
text(Ply_X, Ply_Y, 14, ""); cout << (char)2;
}
if (GetAsyncKeyState(VK_DOWN) != 0)
{
text(Ply_X, Ply_Y, 15, " ");
if( Map[Ply_Y+1][Ply_X] == '.' ){ Ply_Y++; points++; } else
if( Map[Ply_Y+1][Ply_X] == ' ' ) Ply_Y++;
text(Ply_X, Ply_Y, 14, ""); cout << (char)2;
}
if (GetAsyncKeyState(VK_RIGHT) != 0)
{
text(Ply_X, Ply_Y, 15, " ");
if( Map[Ply_Y][Ply_X+1] == '.' ){ Ply_X++; points++; } else
if( Map[Ply_Y][Ply_X+1] == ' ' ) Ply_X++;
text(Ply_X, Ply_Y, 14, ""); cout << (char)2;
}
if (GetAsyncKeyState(VK_LEFT) != 0)
{
text(Ply_X, Ply_Y, 15, " ");
if( Map[Ply_Y][Ply_X-1] == '.' ){ Ply_X--; points++; } else
if( Map[Ply_Y][Ply_X-1] == ' ' ) Ply_X--;
text(Ply_X, Ply_Y, 14, ""); cout << (char)2;
}
}
我看到的最简单的方法就是在按下某个键时设置播放器方向。
所以你最初的播放器方向是VK_NONE,当你按下任意键时,你会将播放器方向设置为该键。
稍后这些 ifs 将代替 GetAsyncKeyState(VK_UP)!= 0 写为:playerDirection == VK_UP.