我已经阅读了一些代码并且遇到了这个问题:
private int[] tiles = new int [64 * 64];
那是瓷砖阵列。
这会为tiles数组设置一个随机颜色。
for (int i = 0; i < 64 * 64; i++) {
this.tiles[i] = rand.nextInt(0xffffff);
}
现在渲染
public void render() {
for (int i = 0; i < this.height; i++) {
for (int j = 0; j < this.width; j++) {
int index = (j / 50) * 64;
pixels[j + i * this.width] = tiles[index];
}
}
}
(在该类之外渲染,但无关紧要)。
输出:
但如果我将j / 50更改为j / 16,则瓷砖会变小并变为:
为什么会这样?毕竟变量索引只从数组中获取颜色?它为什么会变大? j每次都会改变,每次颜色都不一样吗?
有人可以解释一下吗?我有点困惑。
谢谢!
答案 0 :(得分:2)
它正在计算颜色列表中的index
,您只创建了64种不同的颜色。
通过使用index
将x坐标转换为index
,循环计算出要使用的64种颜色中的哪种颜色的(j / 50) * 64
。
因为j是整数j/50
会给你步骤,0-49变为0,50-99变为1等等。
当你乘以64时,你仍然保持这些步骤。
如果你将分数从50变为16,那么你的步数是16像素宽,而不是50像素宽。
请注意,不要跑掉随机颜色阵列的边缘!