我持有的名稱,然後數組使用顯示相應的圖形:如何使一個簡單的迷你地圖爲Java RPG遊戲
公共無效paintComponent(圖形G){
for(int i = 0; i<20; i++)
{
for(int j = 0; j<20; j++)
{
if(testMap.getData(i+(rowX-7), j+(columnY-7)).indexOf("rock") >= 0)
{
g.drawImage(image3, j*50 + 5*add, i*50 + 5*add2, 50, 50, this);
}
}
}
這很好地顯示了我的遊戲的實際圖形。然而,對於我的小地圖,我做同樣的事情,不同的值和增加的數字在'我'和'j'在for循環。這會創建一個更小版本的地圖,這個地圖會有更大的範圍,這讓我感到很開心。 (請注意,我只包括的drawImage()的一個方法,我刪除了在此休息,使代碼更易讀):
這幾乎是從定位,我想要的效果(除了其中我可以很容易地更改),但是,這隻顯示我已經在屏幕上看到的較小版本。儘管如此,任何大於20x20的比賽,遊戲開始嚴重滯後 - 可能與我編碼它的可怕方式有關。
我試圖用fillRect替換正方形的圖像,但它沒有幫助的問題。
這裏是我的主類的代碼,如果有人想看一看:http://pastebin.com/eEQWs2DS
的對的paintComponent方法內循環開始在各地線3160,主顯示屏循環大約是2678.我建立JFrame的大約1260
因此,與所有的說,基本上我的問題是這樣的:
有沒有創造我的小地圖更好的,更有效的方式?我的想法是在程序開始時生成一個圖像,以便遊戲在每次刷新幀時都不必重新計算。我可以提前創建地圖,但每次更改地圖時都必須手動更新,這絕對是一件麻煩事。我很難研究如何做前者。我的另一個想法是隻減慢小地圖的刷新率,但我也不知道該怎麼做。
除此之外,如果對滯後問題有任何簡單的修正,請賜教。我爲非常非常混亂的代碼表示歉意 - 這是我第一次用顯示器編程任何東西,所以我只是......砍了它,直到它工作。
這是我的第一個想法,我有。我曾嘗試使用fillRect更改顏色,但同樣的滯後仍然發生。我認爲問題在於我試圖以每秒20次的5個方塊像素打印2500張圖像。 – 2013-02-13 01:16:51
也許試圖以某種方式簡化地圖中的數據量。例如,不是使用50x50的正方形,使用15x15或類似的東西,而是使正方形代表更大的區域。例如,如果在常規地圖上有一條3平方公里的道路,它會在小地圖上佔用更多的空間,但它在地圖上可以代表道路。同樣,房屋可能只佔用1塊瓦片,或者更大的瓦塊,也許在小地圖上可能有2×2的面積,可能不會成比例,但可以相當準確地表示房屋的實際位置。 – Feles 2013-02-13 01:31:29
也許不是for循環中的i ++和j ++,我使用i = i + 4等? 謝謝,我會盡力的。 – 2013-02-13 01:35:03