2012-10-15 15 views
5

Ich machte ein Spiel mit XNA Game Studio und jetzt möchte ich es in Java umschreiben. Es ist so etwas wie ein 2D-Minecraft-Klon. Zur Kollisionserkennung muss ich alle Blöcke im Spiel durchlaufen, um zu prüfen, ob der Spieler mit einem Block kollidiert. Bei einer großen Anzahl von Blöcken ist das unmöglich, also habe ich ein Rastersystem erstellt. Ich habe die Welt in Gitter unterteilt, die Blöcke enthalten, und sie in ein Wörterbuch eingegeben.Java-Wörterbuch <String, Liste <Object>>

Dictionary<string, List<Block>> gameBlocks; 

Jetzt muss ich nur noch die Blöcke im aktuellen Raster durchlaufen.

Dies ist die Methode um einen Block zu registrieren:

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

Jetzt versuche ich es in Java neu zu schreiben, aber ich weiß nicht, wie etwas in ein Wörterbuch zu setzen.

Antwort

0

Java hat etwas namens HashMap, das für Sie nützlich sein kann. Hier ist Dokumentation für HashMap.

Beispiel:

HashMap<string, List<Block>> 
7

Verwendung von Java Map Schnittstelle und HashMap Klasse. Ihre Methode würde in Java wie folgt aussehen:

Beachten Sie einige der Korrekturen, die ich für Javas empfohlene Formatierungs-/Benennungsstile vorgenommen habe.

Verwandte Themen