c ++在每次循环迭代期间被覆盖的变量

时间:2014-11-04 15:53:14

标签: c++ variables

我正在开发模拟软件,该软件需要某个实体的某些预定行为用于其功能的某些方面。我目前正在处理的行为是在模拟环境中设置一个实体,以围绕用户确定的点“螺旋式”移动。

通过从GUI中选择特定选项,用户可以为实体设置几种现有的行为选择。我打算实现这种新行为的方式如下:

  • 获取从实体当前位置到螺旋原点的角度(用户指定实体将围绕其旋转的点)。
  • 检查实体与螺旋原点的当前距离:
  • 如果它距离原点大于一定距离,则直接朝原点移动,直到距离原点一定距离,然后开始螺旋形。
  • 如果距离原点不到一定距离,请远离原点,直到与原点相距,然后开始螺旋形。
  • 每次实体完成螺旋电路时,应更新显示在完成的电路数量的GUI中显示的值。

我已经开始编写一个循环来实现这种行为,并且我打算通过每次迭代循环检查实体与原点的角度来增加完成的电路数量 - 每次该角度相同时当螺旋行为开始时,我将知道另一条电路已经完成。但是,由于我在循环开始时得到实体和原点之间的角度,这个值将随着循环的每次迭代而更新 - 这意味着实体将永远不再从原点到达该角度,因为角度会不断变化。

我想知道的是,如果有一种方法可以在循环的第一次迭代期间设置变量的值,然后在循环的任何其他迭代中不再更改该值?我可以将该值分配给全局变量,并将其设置为“绝对”值,这样即使我尝试再次更改其值,我也无法做到吗?

修改

明显的建议是在循环外设置角度变量值,但由于已实现的现有行为的性质,以及当用户选择其中一个行为时会发生什么,我无法做到这一点。

1 个答案:

答案 0 :(得分:0)

听起来你应该在循环之外进行循环的第一次迭代来设置这个一次性变量,然后在循环内进行n-1次迭代。如果循环体很复杂,请将其放入函数中。另外请记住,如果您碰巧使用角度的浮点值,那么在第一次迭代后它们相等的可能性很小甚至没有。

int loop_body(params)
{
    // Do stuff.
    return first_iteration_value;
}

int initial_value = loop_body(params);
for(init; condition; incr)
{
    loop_body(params);
}