遊戲地圖非手工硬編碼,通常由地圖編輯器(如 Mappy)製作,匯出為 2D 位元組陣列。文中以一個 24×11 的迷宮陣列為例,0/1 代表兩種圖塊(可含動畫)。
假設主角螢幕置中,地圖隨主角移動平移。圖塊尺寸 ELEMENT_WIDTH/HEIGHT,螢幕尺寸 SCREEN_WIDTH/HEIGHT。
雙重迴圈遍歷陣列,計算每塊螢幕座標 (bX, bY),若在螢幕範圍內(含邊緣一塊緩衝)才 drawImage。隨地圖面積增大,FPS 嚴重下降。
根據地圖絕對偏移 (nMapStartedX, nMapStartedY) 反推陣列起始索引 (nArrayI, nArrayJ),雙重迴圈僅跑螢幕能容納的塊數(SCREEN_WIDTH/ELEMENT_WIDTH + 2),邊界檢查後直接繪製。實測此法幾乎不掉幀,強烈推薦。
只需改變 nMapStartedX/Y 即可繪製地圖任意區域,程式碼複用率極高,適用 RPG、SLG、PUZZLE 等多類遊戲。