动态迭代If语句

时间:2015-04-07 01:52:08

标签: c++ opengl

我正在和Opengl一起建造一个雪人,当他变得更大时,我希望他能够将按钮添加到他身上。因此,如果他超过x大小然后4个按钮,依此类推。使用if语句非常简单,但它们都是硬编码的。我正在寻找一种动态的方式,但我似乎无法想出任何东西。代码如下。

if(bodyChange >= 2.5){
   renderButton(glm::translate(transform, vec3(0, .5, 0)));
}
if(bodyChange >= 3.5){
   renderButton(glm::translate(transform, vec3(0, 1, 0)));
}
if(bodyChange >= 4.5){
   renderButton(glm::translate(transform, vec3(0, 1.5, 0)));
}

2 个答案:

答案 0 :(得分:2)

迅速脱离我的头脑(我希望它能起作用,因为我没有测试任何一个,并假设我理解你的问题)

if (bodyChange >= 2.5) {
    int iterations = ceil(bodyChange - 2.5);
    for (int i = 0; i < iterations; i++) {
        renderButton(glm::translate(transform, vec3(0, (i + 1) * .5, 0)));
    }
}

答案 1 :(得分:0)

编写一个函数,返回所需的按钮数量作为大小的函数。例如:

int NumButtons(double size)
{
  if (size <= 0)
    return 0;
  }
  int number = (int) (size * 1.5);
  return number;
}
我猜对了常数;随你调整它们。但如果我理解你的问题,这就是我接近它的方式。