2012-10-15 23 views
5

XNA oyun stüdyosuyla oyun oynuyordum ve şimdi onu Java'da yeniden yazmak istiyorum. 2D Minecraft klonu gibi bir şey. Çarpışma tespiti için, oyuncunun bir blok ile çarpışıp çarpmadığını kontrol etmek için oyundaki tüm blokları geçmem gerekiyor. Çok sayıda blok ile, bunu yapmak imkansız, bu yüzden bir ızgara sistemi yaptım. Dünyayı bloklar içeren ızgaralara böldüm ve onları bir sözlüğe ekledim.Java sözlüğü <String, Liste <Object>>

Dictionary<string, List<Block>> gameBlocks; 

Şimdi yalnızca geçerli kılavuzdaki bloklar arasında geçiş yapmam gerekiyor.

Bu

bir blok kayıt yöntemidir:
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); 
    } 
} 

Şimdi Java yeniden yazmak çalışıyorum ama bir Dictionary içine bir şey koymak nasıl bilmiyorum.

cevap

0

Java, sizin için yararlı olabilecek HashMap adlı bir şeye sahiptir. İşte HashMap belgelerine.

Örnek:

HashMap<string, List<Block>> 
7

Kullanım Java'nın Map arayüzü ve HashMap sınıfı. Kişisel yöntem Java şu şekilde görünecektir:

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

Bildirim stilleri adlandırma ben Java'nın tavsiye biçimlendirme için yaptık düzeltmeler/bazılarıdır.