2016-05-11 2 views
0

Sorry für den Titel, aber ich wusste nicht, wie ich mein Problem in einem Satz beschreiben soll.C# Algorithmus zum Finden der nächsten Kachel mit einem bestimmten Typ

Also grundsätzlich versuche ich etwas zu erstellen, um zufällige Dungeons zu machen. Ich mache Räume an zufälligen Positionen in einem 2D-Raster und füge Türen zu jedem Raum hinzu. Dann bekomme ich die erste Tür und versuche die nächste andere Tür zu finden, aber ich kann keinen guten Algorithmus dazu finden, ich habe eine modifizierte Version von a * ausprobiert und habe mir auch eine Flutfüllung angesehen, aber das ist nicht das, was ich brauche. Ich dachte an eine Art Spirale um die erste Tür und überprüfte jede Fliese, an der wir vorbeigehen, um zu sehen, ob es eine Tür ist. Ich habe eine Liste aller Türen in der Ebene, wenn das hilft, aber es gibt eine Menge, also glaube ich nicht, dass es eine gute Idee ist, die Entfernung zu jeder Tür zu überprüfen.

Weiß jemand, ob es einen guten Algorithmus dafür gibt?

+1

Wenn Sie die Entfernung im Quadrat '(x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)' anstelle der Entfernung 'sqrt ((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)) 'es wird keine Quadratwurzel benutzt, um diese Entfernung zu finden, und wird viel schneller sein als das Überprüfen einer Menge von Kacheln (natürlich hängt es von der Anzahl der Kacheln ab zu überprüfen und die Anzahl der Türen zu überprüfen). – Gusman

Antwort

0

Wenn ein Spiel seine Objekte in einer quadtree speichert, könnte die Suche nach vorhandenen Elementen in einer Szene, die nach Nähe priorisiert ist, durchgeführt werden. Anstatt nach einer Kollision zu suchen, kann man nach einem Objekt eines bestimmten Typs suchen. Dies kann mit der is operator in C# erfolgen. Diese Frage eignet sich möglicherweise besser für die Game Development Stack Exchange.

0

Sie müssen also den nächstgelegenen Diagrammknoten mit bestimmten Eigenschaften finden?

BFS (Breitensuche) ist dein Freund.

Verwandte Themen