2012-10-15 16 views
5

मैं एक्सएनए गेम स्टूडियो के साथ एक गेम बना रहा था और अब मैं इसे जावा में फिर से लिखना चाहता हूं। यह एक 2 डी Minecraft क्लोन की तरह कुछ है। टकराव का पता लगाने के लिए, मुझे यह देखने के लिए गेम में सभी ब्लॉक के माध्यम से लूप करना होगा कि खिलाड़ी ब्लॉक के साथ टकरा रहा है या नहीं। बड़ी संख्या में ब्लॉक के साथ, ऐसा करना असंभव है, इसलिए मैंने ग्रिड सिस्टम बनाया है। मैंने दुनिया को ग्रिड में विभाजित किया जिसमें ब्लॉक होते हैं, और उन्हें एक शब्दकोश में डाल देते हैं।जावा शब्दकोश <स्ट्रिंग, सूची <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); 
    } 
} 

अब मैं जावा में यह पुनर्लेखन के लिए कोशिश कर रहा हूँ, लेकिन मैं नहीं जानता कि कैसे एक शब्दकोश में कुछ डाल करने के लिए।

उत्तर

0

जावा में HashMap नामक कुछ है जो आपके लिए उपयोगी हो सकती है। यहां HashMap के लिए प्रलेखन है।

उदाहरण:

HashMap<string, List<Block>> 
7

उपयोग जावा के Map इंटरफेस और HashMap वर्ग। आपका विधि जावा में इस प्रकार दिखाई देगा:

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); 
    } 
} 

सूचना सुधार मैं जावा की सिफारिश की प्रारूपण के लिए बनाया है/नामकरण शैलियों में से कुछ।

संबंधित मुद्दे