减法操作顺序?

时间:2012-10-01 19:37:39

标签: math arithmetic-expressions

这可能是一个没有受过教育的问题 - 或者是一种奇怪的问题。

我的问题是为什么这段代码不起作用:

            if (up == true)
        {
            SDL_Delay(pause_t);
            player.setY(player.velocity - player.getY());
        }
        if (left == true)
        {
            SDL_Delay(pause_t);
            player.setX(player.velocity - player.getX());
        }

但是,此代码确实有效:

            if (up == true)
        {
            SDL_Delay(pause_t);
            player.setY(player.getY() - player.velocity);
        }
        if (left == true)
        {
            SDL_Delay(pause_t);
            player.setX(player.getX() - player.velocity);
        }

两个代码之间的区别在于,在第一个例子中,我在调用位置函数之前首先减去一个部分(对象的速度)。 运行此代码时会发生什么,它不会在轴上移动1,而是10。 Y轴的大小超过10,所以我实际上并没有减去它自己的坐标。

然而,在第二段代码中,我在调用了我的位置函数后,最后减去了速度。 第二段代码会发生的事情是对象移动一个像素(速度的整数值)。

对于那些应该想知道我想要做什么的人,这些是我的openGL游戏的控件。它用于移动物体。

记录中,这不是一个重要的问题。我的代码确实有效。我只是好奇它为什么会像它一样工作。

1 个答案:

答案 0 :(得分:1)

  

在第一个例子中,我在调用位置函数之前首先减去一个部分(对象的速度)。

不,在第一个版本中,您将减去旧位置,而不是减去速度。

您所描述的代码是:

player.setY((-player.velocity) + player.getY());

这将有效。