0
对于我的程序,我正在让Pacman!我可以让玩家随键移动,但是我怎么能让玩家自动移动,然后当你按下另一个键时,它就会改变。在一个简短的句子中,如果我按下右箭头键,玩家将自行移动而无需按住按键,如果按下上键,下一个可用角落,玩家将继续向上移动。这是我对玩家的移动代码:C++连续播放器运动
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;
}
}
好吧,它的工作原理。但现在让我说我按下右键,然后下一个回合离开三个街区,然后按下向上键。我的播放器将自动停止。有什么建议么? – ThatAwesomeCoder
它不应该停下来。任何按键应该只设定方向。所以你必须复制你的前4个ifs来设置玩家的方向。 其余的逻辑与以前一样。 这很可能是您复制/粘贴错误的所有分支机构。 :) –
空隙控制() { \t如果 { \t \t PlDir = VK_UP(GetAsyncKeyState(VK_UP)!= 0); } \t if(GetAsyncKeyState(VK_DOWN)!= 0) { \t \t PlDir = VK_DOWN; } \t如果(GetAsyncKeyState(VK_RIGHT)!= 0){ \t \t PlDir = VK_RIGHT; } \t如果 { \t \t PlDir = VK_LEFT(GetAsyncKeyState(VK_LEFT)!= 0); } \t如果(PlDir == VK_UP) {...} 如果(PlDir == VK_DOWN) {...} ... } –