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
我有一段用于世界生成过程的代码,我想要一些非常简单的东西来使创建的内容易于扩展。
所以我有这个地形,它在 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