我對Java有點新,但是我在其他編程語言方面有很多經驗。現在我正在嘗試創建一個簡單的「焦土」風格的遊戲,並且我無法讓景觀出現。我使用二維高度場來表示地形。在我的init方法中,我使用幾個sin函數和隨機數生成地形。我在網上找到了這個技巧。Java圖形不顯示
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]);
}
}
但是,我有一個主要問題,讓地形出現。大約一半的時間顯示,看起來不錯,隨機,只是我想要它。其他時候它根本不顯示,我的高度[]數組中的所有值都被設置爲零,就好像init方法從未被調用一樣。有誰知道發生了什麼事?
對於如果你的高度數組歸零,那麼問題更好地幫助越早用圖形和油漆/的paintComponent() – mKorbel
一個[SSCCE(http://sscce.org/)證明你的問題,編輯您的問題幾乎不涉及GUI。對你來說也不是很明顯嗎? –
從哪裏調用'init'方法? 「高度」如何以及在哪裏創建的? – GETah