C ++空间入侵者:准确地在屏幕上移动入侵者数组

时间:2018-05-24 02:45:44

标签: c++ animation

在这个网站的帮助下,我能够弄清楚如何在屏幕上正确渲染我的入侵者。现在我的路障与我无法在屏幕上准确移动它们的事实有关。从我的2D数组中的最后一行[4]开始,我可以在屏幕上来回移动整行。我的目标是当入射者在spot [4] [0]中的x​​位置与阵列点[3] [1]中的入侵者处于相同的x位置时,使其上方的行[3]开始移动。所以基本上数组的最后两行看起来像这样:

          • (第[3]行)
            • (第[4]行)

这是我尝试过的代码。就像我之前在这里处理这个项目的帖子一样,我觉得我的逻辑可能并不遥远。

`//This outer FOR LOOP works
for (int column = 0; column < 5; column++)
{
    //start movement at ROW [4] (last row of the array)
    invaderArmy[4][column].xPos += invaderArmy[4][column].moveX;

    //This IF STATEMENT doesn't work
    if (invaderArmy[4][0].xPos == invaderArmy[3][1].xPos)
    {

        //This inner FOR LOOP doesn't work
        for (int column = 0; column < 5; column++)
        {
            //Need to start movement at ROW 5 subscript/element 4
            invaderArmy[3][column].xPos += invaderArmy[3][column].moveX;
        }

    }

}`

我现在的另一个问题是我使用浮动值来移动我的入侵者在屏幕上移动但是使用整数值是我想要使用的,以便像原始游戏一样给他们一个类似网格的移动。我的问题是当我使我的移动和位置变量成为一个整数时,他们在Game_Run()中快速移动两个。我可以通过在Game_Run()的最后使用Sleep()来降低速度,但我预见到当我将其实现到游戏中时,影响我的玩家移动将是浮动值。那么在这种情况下我该怎么办?目前出于测试目的,我的每个入侵者都是64x64像素,当使用整数变量时,我一次移动32个像素,当使用浮动值为moveX变量时,我将它设置为0.01f。

谢谢!

1 个答案:

答案 0 :(得分:1)

我弄明白为什么它不起作用。我只需要改变

if (invaderArmy[4][0].xPos == invaderArmy[3][1].xPos)

到此:

if (invaderArmy[4][0].xPos >= invaderArmy[3][1].xPos)

==替换为>=