C 连续播放器移动

C++ Continuous Player Movement

本文关键字:移动 播放器 连续      更新时间:2023-10-16

对于我的程序,我正在制作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。