Java 使用更改的变量重复检查 x 次

Java Repeat a check x times with changed variables

我有一段用于世界生成过程的代码,我想要一些非常简单的东西来使创建的内容易于扩展。

所以我有这个地形,它在 x 轴上连续生成几次,我想要的是,当放置一定数量的地形时,它应该向上移动。这是我当前的代码:

if(terrain == 5) { alpha = alpha+ 1; origin = -distance; }

这意味着如果我想让它每第五次跳转,我需要有几个这样的 if 语句并涵盖所有可能的数字:

if(terrain == 5) { alpha = alpha+ 1; origin = -distance; }
if(terrain == 10) { alpha = alpha+ 1; origin = -distance; }
if(terrain == 15) { alpha = alpha+ 1; origin = -distance; }
if(terrain == 20) { alpha = alpha+ 1; origin = -distance; }

等等..

现在,如果我可以一次性完成并以某种方式告诉程序它应该每 x 次执行一次而不必单独告诉它,那就更好了。

这是处理生成的整个 while 循环:

    float alpha         = 0;
    float terrain       = 0;
    float origin        = 0;
    float distance      = 45;
    float num           = 20;

        while(terrain < num) {
            if(terrain == 0) {
                create_terrain(0,0,distance*alpha); terrain ++;
            }
                create_terrain(origin+distance,0,distance*alpha);
            terrain ++;
            origin += distance;

            if(terrain == 5) { alpha = alpha+ 1; origin = -distance; }
            if(terrain == 10) { alpha = alpha+ 1; origin = -distance; }
            if(terrain == 15) { alpha = alpha+ 1; origin = -distance; }
        } 

感谢您的帮助!

您可以使用模运算符:

if((terrain % 5) == 0) { alpha = alpha+ 1; origin = -distance; }  

如果地形是 5 的倍数,则条件成立。
如果有最大值,加一个&& terrain < something

模数运算符可以为您效劳!

if(terrain % 5 == 0) {
     // Do your stuff.
}

这是如何工作的

模是一种数学运算。它取整数除法的余数。例如,20 modulo 5 是 0,因为 5 可以与 20 相符四次,没有余数。 21 模 5 为 1,因为 5 与 20 相符四次,剩下 1。

有用的是,您可以检查一个值是否是另一个值的倍数,方法是确保模运算的结果为 0,因为这意味着该值 "fits into" 另一个值与没有剩余。

额外阅读

  • 模数运算符在 Java 中广为人知。你可以阅读它 here