2012-10-15 126 views
5

我正在製作XNA遊戲工作室的遊戲,現在我想用Java重寫它。這就像2D Minecraft克隆。對於碰撞檢測,我必須遍歷遊戲中的所有模塊以檢查玩家是否與模塊碰撞。由於數量巨大,因此無法這樣做,所以我製作了一個網格系統。我將世界劃分爲包含塊的網格,並將它們放入字典中。Java字典<String,List <Object>>

Dictionary<string, List<Block>> gameBlocks; 

現在我只需要遍歷當前網格中的塊。

這是註冊一個塊的方法:

public void RegisterBlock(Block block) 
{ 
    idX = (int)(block.blockPosition.X/width); 
    idY = (int)(block.blockPosition.Y/height); 
    string id = idX.ToString() + "_" + idY.ToString(); 
    if (gameBlocks.ContainsKey(id)) 
    { 
     gameBlocks[id].Add(block); 
    } 
    else 
    { 
     gameBlocks.Add(id, new List<Block>()); 
     gameBlocks[id].Add(block); 
    } 
} 

現在我想改寫它在Java中,但我不知道如何把東西放到一個字典。

回答

0

Java有一些名爲HashMap的內容,可能對您有用。這裏是HashMap的文檔。

例子:

HashMap<string, List<Block>> 
7

使用Java的Map接口和HashMap類。你的方法在Java中看起來像這樣:

private Map<String, List<Block>> gameBlocks = new HashMap<String, List<Block>>(); // Java 6 
// OR: 
private Map<String, List<Block>> gameBlocks = new HashMap<>(); // Java 7 

public void registerBlock(Block block) { 
    idX = (int)(block.blockPosition.X/width); 
    idY = (int)(block.blockPosition.Y/height); 
    String id = idX + "_" + idY; 
    if (gameBlocks.containsKey(id)) { 
     gameBlocks.get(id).add(block); 
    } else { 
     gameBlocks.put(id, new ArrayList<Block>()); 
     gameBlocks.get(id).add(block); 
    } 
} 

請注意我爲Java推薦的格式/命名樣式所做的一些更正。

相關問題