C ++连续播放器运动

时间:2015-05-17 23:12:49

标签: c++ windows key

对于我的节目,我正在制作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;
    }

}

1 个答案:

答案 0 :(得分:1)

我看到的最简单的方法就是按下按键时设置一个玩家方向。

因此,您最初将玩家方向设为VK_NONE,当您按任意键时,您将玩家方向设置为该键。

以后这些ifs将代替GetAsyncKeyState(VK_UP)!= 0写成:playerDirection == VK_UP。