我对java有点陌生,但我在其他编程语言方面有很多经验。现在我正在尝试创建一个简单的“焦土”风格的游戏,但我无法让景观出现。我正在使用 2d 高度场来表示地形。在我的 init 方法中,我使用一些 sin 函数和随机数生成地形。我在网上的教程中发现了这种技术。
float flat, peak;
flat = 70; peak = 50;
int rand1, rand2, rand3;
rand1 = gen.nextInt() % 4 + 1;
rand2 = gen.nextInt() % 4 + 1;
rand3 = gen.nextInt() % 4 + 1;
for (int a=0; a<750; a++) {
double height = peak / rand1 * Math.sin((double)a / flat * rand1 + rand1);
height += peak / rand2 * Math.sin((double)a / flat * rand2 + rand2);
height += peak / rand3 * Math.sin((double)a / flat * rand3 + rand3);
height += 250;
heights[a] = (int)height;
}
然后在我的paint()
方法中,我绘制地形,高度表示为屏幕底部的像素,长 750 像素,高 500 像素。
public void paint(Graphics g)
{
g.setColor(Color.green);
for (int a=0; a<750; a++) {
g.fillRect(a, 500-heights[a], 1, heights[a]);
}
}
但是,我在让地形出现时遇到了一个主要问题。大约有一半的时间它显示出来,看起来很漂亮和随机,这正是我想要的。其他时候它根本不显示,我的 heights[] 数组中的所有值都设置为零,就好像从未调用过 init 方法一样。有谁知道发生了什么?