2017-07-17 1 views
0

Ich stoße auf ein Problem beim Versuch, eine Anordnung von Elementen zu erstellen. Ich erstelle ein Spiel, das auf einem Brett stattfindet, das aus Gegenständen namens Terrain besteht. Jedes Terrain auf dem Brett ist ein eigener Gegenstand mit Eigenschaften und Beziehungen, die für ihn selbst spezifisch sind. Ein wichtiger Teil der Terrain-Generation erfordert, dass jeder Raum in der Lage ist, sich auf seine benachbarten Kacheln zu beziehen, und ich sehe auch den späteren Bedarf für eine solche Implementierung voraus, so dass ich ihn jetzt gerne überwinden würde.Relational Awareness

Das Hauptproblem, auf das ich stoße, ist, dass ich keine Ahnung habe, wie man jedes Mitglied der Matrix voneinander und von sich selbst in Bezug auf die gesamte Sache bewusst macht. Für einige Einblicke, wie es funktioniert, ist das Design zweischichtig.

Es gibt zuerst eine allgemeine Sammlung, die alle Mitglieder enthält. Jedes Mitglied ist in einem eigenen generischen Element enthalten, das sowohl die Rohdaten als auch die Position des Elements in der Sammlung enthält.

Das wichtigste Kriterium ist, dass ich die Objekte nicht verknüpfen kann, indem ich die große Sammlung durchsuche. Ich muss jedes Element einen Verweis auf alle seine relevanten Nachbarn enthalten, in der Lage sein, seine Nachbarn von diesem Verweis zu bearbeiten, und jede Rekursion bei der Aktualisierung dieser Elemente vermeiden.

Ich versuche im Wesentlichen, etwas fast identisch zu einer eins-zu-eins-Beziehung aus einer Datenbank zu schaffen, so dass es nur an einem Ort existiert, aber von seinen Kollegen zugänglich ist, die wie Datensätze in der Datenbank Analogie sind.

Antwort

0

Wenn ich Ihre Frage richtig verstanden habe, muss jede Kachel sich der benachbarten Kacheln in der Matrix bewusst sein und diese referenzieren können. Die erste Lösung, die in den Sinn kommt, ist die Verwendung von Zeigern, aber da dies C# ist, ist es wahrscheinlich besser, sich an sichere Methoden zu halten.

Meine Lösung für dieses Problem wäre, in dem Konstruktor für den Typen für eine Anordnung von Terrain s Terrain ein Argument umfassen, sowie ein ganze Zahl Argument mit der Position des jeweiligen Elements im Array.

Wenn Sie dies tun, kann die Terrain die angrenzenden Elemente aus dem Array relativ zu seiner eigenen Position erhalten; das Element auf der rechten Seite ist natürlich seine Position + 1, und das Element auf der linken Seite wäre seine Position - 1. Das obige Element wäre die Position abzüglich der Breite des Spielbretts und das Element darunter wäre das Position plus die Breite des Spielplans.

+0

Oder ist das keine gültige Lösung? Sie haben gesagt, dass Sie die Sammlung nicht durchsuchen müssen, aber ich bin mir nicht sicher, ob Sie das oder etwas anderes gemeint haben ... –

+0

Nein, das ist leider keine gültige Lösung, weil jedes Mitglied der Matrix sich seiner eigenen bewusst ist Position, ist es irrelevant seine relative Position zu anderen Elementen, weil es so manuell referenziert werden muss. Was Sie beschreiben, löst diese spezielle Facette des Problems nicht, wenn nicht jede Kachel alle anderen Kacheln enthält, dann führt die Aktualisierung der einzelnen Kacheln zu dem rekursiven Aktualisierungsproblem. Sein Kind von wie die Menge aller Sätze, die sich nicht enthalten. Jedes Mal, wenn Sie es aktualisieren, um sich selbst nicht einzuschließen, müssen sie aktualisiert werden, um sich selbst einzuschließen, und der Stapel wird nie auflösen – Azeranth

Verwandte Themen