Hallo zusammen,
dies ist zwar kein Javaspezifisches Problem, sondern eher, was für einen Algorithmus ich verwenden kann, um mein Problem zu lösen.
Für mein Spiel schreibe ich gerade einen Questeditor. Das Spiel läuft Pen&Paper mäßig ab.
Es gibt einen Abschnitt(Knoten) der durch ein oder mehrere Aktionen(Kanten) zum nächsten Abschnitt führt. Man hat also die Wahl zwischen z.B.: 3 Aktionen, die alle zu einem anderen Abschnitt führen können. Dabei können sie auch auf den Aktuellen Abschnitt führen und zu einem vorherigen(auch den Startabschnitt). Dann gibt es beliebig viele Endabschnitte. Sobald ein solcher erreicht wurde, ist das Quest zuende.
Das Modell entspricht eigentlich dem eines gerichteten Graphen, soweit ich mich bisher darüber informiert habe.
Nun will ich beim entgültigen Speichern überprüfen, ob das Quest durch alle möglichen Aktionen zu einem beliebigen Endabschnitt führt. Der Endabschnitt ist die Selbe Klasse wie ein Normaler Abschnitt nur gibt isEnd() true aus statt false.
Die Algorithmen die ich bisher gefunden habe zeigen entweder den kürzesten weg oder die anzahl der Knoten die man von einem punkt aus erreichen kann. Das hilft mir leider bei meinem Problem nicht weiter.
Ich selber bin davor bei meinen Überlegungen einfach alle Aktionen ausgehend vom Start durchgegangen.
Das Problem war zuerst, dass ich in eine Endlosschleife geraten bin. Dies habe ich gelöst indem ich Flags gesetzt habe. Jetzt habe ich aber das Problem, wenn ich einen Abschnitt mit 2 Aktionen habe, bei dem die 1. Aktion immer auf den Abschnitt selbst zeigt und nur Aktion 2 zum nächsten Abschnitt führt, ich wegen Aktion 1 ein false bekomme. Und es gibt ja auch noch die Möglichkeit über mehrere Abschnitte eine Solche endlosschleife zu erzeugen bei dem flags gesetzt werden und dann ein knoten nicht mehr besucht werden kann obwohl es von diesem aus weitergehen würde.
Ich hoffe sehr, dass jemand von euch weiß wie ich das Problem lösen kann.
Yanko
dies ist zwar kein Javaspezifisches Problem, sondern eher, was für einen Algorithmus ich verwenden kann, um mein Problem zu lösen.
Für mein Spiel schreibe ich gerade einen Questeditor. Das Spiel läuft Pen&Paper mäßig ab.
Es gibt einen Abschnitt(Knoten) der durch ein oder mehrere Aktionen(Kanten) zum nächsten Abschnitt führt. Man hat also die Wahl zwischen z.B.: 3 Aktionen, die alle zu einem anderen Abschnitt führen können. Dabei können sie auch auf den Aktuellen Abschnitt führen und zu einem vorherigen(auch den Startabschnitt). Dann gibt es beliebig viele Endabschnitte. Sobald ein solcher erreicht wurde, ist das Quest zuende.
Das Modell entspricht eigentlich dem eines gerichteten Graphen, soweit ich mich bisher darüber informiert habe.
Nun will ich beim entgültigen Speichern überprüfen, ob das Quest durch alle möglichen Aktionen zu einem beliebigen Endabschnitt führt. Der Endabschnitt ist die Selbe Klasse wie ein Normaler Abschnitt nur gibt isEnd() true aus statt false.
Die Algorithmen die ich bisher gefunden habe zeigen entweder den kürzesten weg oder die anzahl der Knoten die man von einem punkt aus erreichen kann. Das hilft mir leider bei meinem Problem nicht weiter.
Ich selber bin davor bei meinen Überlegungen einfach alle Aktionen ausgehend vom Start durchgegangen.
Das Problem war zuerst, dass ich in eine Endlosschleife geraten bin. Dies habe ich gelöst indem ich Flags gesetzt habe. Jetzt habe ich aber das Problem, wenn ich einen Abschnitt mit 2 Aktionen habe, bei dem die 1. Aktion immer auf den Abschnitt selbst zeigt und nur Aktion 2 zum nächsten Abschnitt führt, ich wegen Aktion 1 ein false bekomme. Und es gibt ja auch noch die Möglichkeit über mehrere Abschnitte eine Solche endlosschleife zu erzeugen bei dem flags gesetzt werden und dann ein knoten nicht mehr besucht werden kann obwohl es von diesem aus weitergehen würde.
Ich hoffe sehr, dass jemand von euch weiß wie ich das Problem lösen kann.
Yanko