2017-09-06 1 views
0

Ich habe ein zweidimensionales Gitter, in dem alle Kacheln durch zwei Koordinaten x und y definiert sind. Ich speichere die Kacheln in einem Array wie diesem var tiles = [];. Jede Fliese ist ein Objekt mit einem x und y Eigenschaft:Finde benachbarte Kacheln in einem zweidimensionalen Gitter

Tile = { 
    x: ..., 
    y: ... 
} 

Für die Zwecke (Leinwand) Zeichnung Ich möchte herausfinden, welche Fliesen zueinander benachbart sind. Ich könnte das tun, indem ich jedes Element durchlaufen und prüfen würde, ob es benachbart ist. Da dies eine knappe Anzahl von Zugriffen erfordern würde, halte ich das nicht für den richtigen Weg. Ich denke, dass es einen effizienteren Algorithmus geben würde.

Ich dachte auch, dass das Speichern der Daten auf andere Weise helfen würde, aber auch hier würde ich nicht wissen, wie.

+0

Nun, von einer generischen Perspektive dies wie ein Problem aussieht, wie Sie untersuchen können durch Lernen der großen O-Notation und wie sie sich auf Datenspeicherungstypen in der Informatik bezieht. Das heißt, es sieht so aus, als müsstest du es auf diese Weise machen, an die du denkst. –

Antwort

2

Sie haben zwei Möglichkeiten, um ein Raster zu erstellen:

  • Mit einem 2-dimensionalen Array, das die leichter, was für ein Gitter sein muss
  • Shop benachbarten Fliesen eines Tile in es mit etwas wie folgt aus:

    var tile0 = { 
        x:0, y:1 
    } 
    
    var tile1 = { 
        x:1,y:1, tileLeft : tile0 
    } 
    

Es kann nützlich sein, wenn Sie Fünfeck oder Hexagonal ... Raster erstellen möchten, erstellen Sie natürlich Ihre Raster automatisch mit af oder Schleife.

EDIT

eine zweidimensionale Anordnung ist einfach ein Array von Array

var arr = new Array() 
for(var i = 0 ; i < 10 ; i++){ 
    arr[i] = new Array() 
} 

Jetzt Sie Wert wie in einem Raster, beispielsweise festlegen:

arr[0][2] = {x:2,y:2} //It's a bit useless since indexes can be use for x and y 

Darin Fall, ich habe 10 Array in einem Array gespeichert so:

arr[10][0] 

wird folgende Fehlermeldung zurück: Uncaught Typeerror: Kann nicht gesetzt Eigenschaft ‚2‘ undefinierten, weil Index von arr wird nur definieren zwischen 0 und 9

+0

Können Sie erklären, wie ein zweidimensionales Array funktioniert und hier verwendet wird? – BBotMerlin

+0

Ich habe meine Antwort bearbeitet :) – Nolyurn

+0

Mein Problem ist, dass das Gitter unendlich ist und nur einige Kacheln definiert sind. Die erste Methode scheint mir passender zu sein. Da ich aber auch die Daten speichern und laden muss, scheint es ein bisschen schwierig zu realisieren. – BBotMerlin

0

Mit Ihrem Datenkonstrukt kann ich keine Möglichkeit sehen, nach allen angrenzenden Kacheln zu suchen, ohne auf jede Kachel zugreifen zu müssen.

Das "erprobte und wahre" zweidimensionale Gitterdatenkonstrukt wäre ... ein einfaches zweidimensionales Array. Dann können Sie direkt auf die Kacheln zugreifen.

+0

Können Sie erklären, wie ein zweidimensionales Array funktioniert und hier verwendet wird? – BBotMerlin

Verwandte Themen