Ich schreibe ein Text-Adventure-Spiel in Prolog, und ich drucke Raum-Exits. Ich habe Code, der tut:Alle Lösungen zu einem Prädikat in Prolog bekommen
exits_from(Room) :-
connected(Room, X),
write(X), write(' ').
wo/2 angeschlossen ist:
connected(X, Y) :- path(X, Y).
connected(X, Y) :- path(Y, X).
und Pfad ist:
path(room, hallway).
path(hallway, foyer).
und so weiter.
Wenn ich die Ausgänge für ein Zimmer drucke, bekommt es zuerst, dann will ein ';' zu sagen, dass ich eine andere Lösung möchte. Gibt es trotzdem ein Prädikat, um das Ergebnis vollständig zu berechnen, damit der Spieler nicht mehr nach weiteren Exits fragen muss?
Ist forall für einige Implementierungen eingebaut? Es ist offensichtlich nicht gültig in gprolog. Aber danke für den Backtracking-Tipp! – Kai
Nach diesem http://www.gprolog.org/manual/gprolog.html#htoc103 gprolog hat findall/3. – pfctdayelise
findall/3 ist nicht dasselbe wie forall/2. – Kaarel