2012-12-30 38 views
3

所以我有一個工作getNeighbors功能:鄰居發現

(根據我的地圖有多大的靜態,還沒有使它充滿活力且..雖然這不應該是一個問題)

其19x12

公共INT [] getNeighbors(int i)以{

int[] neighbors = new int[6]; 
    if (((i % xlength) % 2) == 0) { 
     neighbors[0] = (i - 19); 
     neighbors[1] = (i - 18); 
     neighbors[2] = (i + 1); 
     neighbors[3] = (i + 19); 
     neighbors[4] = (i - 1); 
     neighbors[5] = (i - 20); 
    } else { 
     neighbors[0] = (i - 19); 
     neighbors[1] = (i + 1); 
     neighbors[2] = (i + 20); 
     neighbors[3] = (i + 19); 
     neighbors[4] = (i + 18); 
     neighbors[5] = (i - 1); 
    } 

}

它的工作原理都很好,而且很漂亮,但是當我處於邊緣時會掛起。

我不知道如果我應該做個案的基礎上,或者如果我超越它。現在我有一個自動化腳本,用於將點從十六進制隨機地移動到十六進制,有時它將它視爲一個環面網格,並跳到另一端(不是我想要的,但我期望它與當前的代碼),或者掛起在一個無限循環,即時搜索。

回答

3

在這種情況下,如果你的算法存在問題,使電路板在邊緣附近變得更大一些可能會簡單得多。你當然會限制它們被用於位置,但是你的鄰居邏輯不需要在邊緣處有所不同。