Ich baue gerade ein eigenes Abenteuerspiel. Jetzt ist es einfach genug, für jede Auswahl ein Ergebnis zu haben und einen linearen Fluss zu erstellen. Gibt es jedoch einen guten Algorithmus, mit dem alle vorherigen Auswahlen das nächste Ergebnis beeinflussen? Ich könnte natürlich jede vorherige Auswahl speichern und große IF-Anweisungen zur Entscheidung haben, aber ich habe mich gefragt, ob es einen besseren Weg gibt.
Ein Teil von mir fragt sich, ob jede Auswahl eine "Punktzahl" haben sollte, und dann benutze ich diese (möglicherweise mit einem Schwellenwert), um zu bestimmen, wie die nächste Aktion aussehen soll, und jede Aktion wird zur Punktzahl hinzugefügt.
Ich mache das hauptsächlich in Swift / SpriteKit, aber ich denke, es geht an dieser Stelle mehr um das Konzept als um den Code.
Als Antwort auf Joshs Kommentar unten:
Ich nehme an, ich bin im Moment noch in der Konzeptionsphase, aber jede 'Seite' wäre entweder ein benutzerdefiniertes Objekt oder eine JSON-Datei. Ich habe über Ihre Antwort nachgedacht (jetzt entfernt) und vielleicht jede ENUM-Option ein bisschen. Dann könnte jede Seite eine "Punktzahl" haben. Verwenden Sie dann die zuvor ausgewählten Optionen, um herauszufinden, welche Bits gesetzt sind und welche Seite bestimmt wird. Ich habe mich wohl nur gefragt, ob es eine Lösung für dieses Problem gibt, bevor ich fast bei der Entscheidung half, wie ich die "Geschichte" formatieren soll.
Grobe Vermutung des Formats:
{ "text":"You arrive in the dungeon and there are 2 doors",
"options":[
1: "Go left",
2: "Go Right"
],
"score" : 0 // first page
}
{"text" "You went left and meet a dragon",
"options":[
0: "Game over, you were eaten" // something to handle game over
],
"score" : 1
}
{"text" "You meet a mushroom who tells you the princess is in another castle",
"options":[
4: "Give up, game over", // something to handle game over
8: "Jump down the pipe"
],
"score" : 2
}
Vielen Dank
if
's, else
' s, switch
's und case
' s von Hand zu schreiben, in der Hoffnung, dass Sie fertig sind, bevor Sie Ihren Verstand verlieren.