Se non si dispone di un TON (sì, un numero di bit ...) di celle, è possibile utilizzare i dizionari. Che si combinano con un System.Drawing.Point
come la chiave, e si ottiene una buona cosa sta succedendo:
Dictionary<Point,YourGridObject> myMap = new Dictionary<Point,YourGridObject>();
Edit: oltre al dizionario, ogni cella può avere un riferimento ad esso è celle adiacenti, in questo modo è possibile utilizzare il dizionario per andare direttamente "da qualche parte", ma poi navigare con l'adiacente. Ho usato in questo modo per implementare un algoritmo di pathfinder A * in una griglia esadecimale.
Edit 2: Ad esempio, se poi si desidera accedere a una coordinata specifica, si può semplicemente
var myTile = myMap[new Point(25, -25)];
Poi, si desidera ottenere la tessera East
, è possibile
var eastTile = myTile.East;
Il tuo oggetto griglia potrebbe anche implementare un metodo di offset in modo da ottenere la tessera 'West 2, North 5' di
var otherTile = myTile.Offset(-2, 5);
Normalmente è implementato con la cura operatore modulo –
di elaborare un po 'più – Entity
Nevermind mio commento sopra, stavo pensando a qualcos'altro.Vedi invece la mia risposta.I computer –