我有一个for循环,并且该整数x将从533增加到813。这意味着280递增。在同一循环中,当发生上述情况时,我想将y的值从300减少到200。这意味着x为533时y必须为300,而x为813时y必须为200。我知道这可以通过在每次迭代中将y的值减小100/280来实现。但是两者都是整数。
这是我使用的一些代码示例,但无法正常工作。:
for(int i = 0; i < b.getSize(); i++) {
x = b.getCar(i).getPosX();
b.getCar(i).setPosX(++x);
if(x >= ((getWidth() / 2) - 140) && x < ((getWidth() / 2) + 140)){
y = b.getCar(i).getPosY();
y = (double)(y - (10.0f / 28.0f));
b.getCar(i).setPosY((int)y);
}
}
我该怎么做。谢谢!
最佳答案
有两种解决方案,一种简单,一种复杂。简单的一个:
y = yoff + (int)( (double) height * x / width )
其中
yoff = 300, height = -100, width = 813-533
。基本上,您执行浮点运算,然后对结果进行四舍五入。另外,也可以使用Bresenham line algorithm使用纯整数数学来完成此操作,但这会花费更多代码。