J2ME平臺A-RPG遊戲地圖資料處理

gudesheng發表於2008-01-03

在我所做的這個A-RPG遊戲中,地圖總共有8張

最小的為25*25個title,最大的為40*40個title

所以說地圖資料量相對於手機平臺來說算是比較大的

那麼這麼大的資料該如何處理才能最優化呢?

以下是我的做法:

當然,不一定是最好的,喜歡大家能積極交流,想出更好的辦法。

在我的地圖上總共有4種資料:地板title、障礙物、遮蓋物、怪物等。

那麼這就存在一個層次的問題,也就是先畫那個的問題。

如果在程式中每個層對應一個陣列的話,肯定是不合適的,太浪費資源了!

那麼有沒有一辦法用一個陣列來代表四個層次呢?

我是這麼做的:

用一個int[] 來表示這四個層次,每個int元素有5位數字,第一位代表怪物ID,第二,三位代表遮蓋物ID或障礙物ID,第四、五位代表地板title。

而每次程式只讀取螢幕大小範圍內的陣列元素,這個看似很複雜,其實如果理順思路了很簡單,具體程式如下:

for(int i = 0;i < 13;i++)
  {
   for(int j = 0;j < 11;j++)
   {
    int tempVar = (x0-screenX)/16+j+((y0-screenY)/16+i)*screenW[screenIndex];
    
    drawByIndex(g,screen_1_Image,x0+j*16,y0+i*16,sc[tempVar]%100,16,16);

}

}

首先計算出當前螢幕範圍內的每個title的索引tempVar,然後對應的讀取陣列內容。

因為我們的最後兩位代表的是地板title,所以%100取得最後兩位內容。

這樣只把當前螢幕的內容畫出來,從而提高了效率。

相應的,也可以把遮蓋物、怪物、障礙物畫出來。

最終的效果圖在“Crazy Wind手機遊戲工作室最新A-RPG力作隆重登場(圖)"裡可以看到



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=748434


相關文章