2011-08-29 19 views
0

參照字符我正在字符移動信使方法用於調節與二維地圖瓦片

(2D瓷磚地圖遊戲尋找信使)

我想每一瓦片指哪個字符上。

總之,我的程序需要按字符的x,y座標來表示字符。

我試過讓每個瓷磚都有一個字符obj結構的空間。

好這個方法的一點是,每個角色可以被x refered,y座標

但它一直相當困難搬到這裏一個字符那裏。

從這裏複製對象到那裏,並刪除原始x y座標的對象

;最後,從原始x改變OBJ控制指針(控制),Y的對象什特 X,Y的對象。

它不是那麼直截了當,也不容易控制,也不會節省內存。

所以我考慮第二種方法。

有瓦片數組和obj數組。

渲染objs時,只需引用obj的x,y。

當用戶想要移動obj時,只需更改x,y。

,但如果指的obj的時候進來的問題,

我必須到處尋找OBJ陣列。

我的問題是這樣的。

是否有任何好的方法來控制二維瓷磚地圖上的字符(obj)?

任何建議,將不勝感激。

+0

您的格式是有點瘋狂。你可以編輯你的問題使用大寫和段落嗎? –

回答

1

您沒有指定編程語言,所以我將在我的示例中使用C#。

存在的字符和其他對象地圖通常存儲在單獨的列表中,而不是二維數組。每個角色將店鋪自己的x和y座標。喜歡的東西:

class Character 
{ 
    int x, y; 

    public int X 
    { 
     get{ return x; } 
     set{ x = value; } 
    } 

    public int Y 
    { 
     get{ return y; } 
     set{ y = value; } 
    } 

} 

,你將它們存儲在像列表:

List<Character> characters = new List<Character>(); 

如果你真的需要找到一個特定的瓷磚的字符,你會做這樣的事情(有可能LINQ的方式做到這一點的1號線,但是這是容易理解和閱讀):

int searchX = 10; 
int searchY = 15; 
Character characterOnLocation = null; 
foreach(Character character in characters) 
{ 
    if(character.X == searchX && character.Y == searchY) 
    { 
     characterOnLocation = character; 
     break; 
    } 
} 

你draw方法應該通過地形瓦片環(像它可能做的話),那麼就通過T環他字符數組並使用他們自己的X和Y座標繪製它們。喜歡的東西(使用XNA在這個例子中):

foreach(Character character in characters) 
{ 
    spriteBatch.Draw(texture, character.X, character.Y); 
}