Zum Spaß versuche ich, eines der Lieblingsbrettspiele meines Sohnes als Software zu schreiben. Irgendwann erwarte ich, eine WPF-Benutzeroberfläche darüber zu erstellen, aber im Moment baue ich die Maschine, die die Spiele und ihre Regeln modelliert.
Dabei sehe ich immer wieder Probleme, von denen ich denke, dass sie vielen Brettspielen gemeinsam sind, und vielleicht haben andere sie bereits besser gelöst als ich.
(Beachten Sie, dass KI für das Spielen des Spiels und Muster für hohe Leistung für mich nicht interessant sind.)
Bisher sind meine Muster:
Verschiedene unveränderliche Typen, die Entitäten in der Spielbox darstellen, z. B. Würfel, Steine, Karten, ein Brett, Felder auf dem Brett, Geld usw.
Ein Objekt für jeden Spieler, das die Ressourcen des Spielers (z. B. Geld, Punktzahl), seinen Namen usw. enthält.
Ein Objekt, das den Status des Spiels darstellt: die Spieler, wer an der Reihe ist, das Layout der Teile auf dem Brett usw.
Eine Zustandsmaschine, die die Abbiegefolge verwaltet. Zum Beispiel haben viele Spiele ein kleines Vorspiel, in dem jeder Spieler würfelt, um zu sehen, wer zuerst geht. Das ist der Startzustand. Wenn ein Spieler an der Reihe ist, würfelt er zuerst, bewegt sich dann, muss an Ort und Stelle tanzen, dann raten andere Spieler, um welche Hühnerrasse es sich handelt, und erhalten dann Punkte.
Gibt es einen Stand der Technik, den ich nutzen kann?
EDIT: Eine Sache, die ich kürzlich erkannt habe, ist, dass der Spielstatus in zwei Kategorien unterteilt werden kann:
Spielartefaktstatus . "Ich habe 10 Dollar" oder "Meine linke Hand ist blau".
Status der Spielsequenz . "Ich habe zweimal Doppel gewürfelt; der nächste bringt mich ins Gefängnis". Eine Zustandsmaschine kann hier sinnvoll sein.
EDIT: Was ich hier wirklich suche, ist der beste Weg, um rundenbasierte Multiplayer-Spiele wie Chess oder Scrabble oder Monopoly zu implementieren. Ich bin mir sicher, dass ich ein solches Spiel erstellen könnte, indem ich es von Anfang bis Ende durcharbeite, aber wie bei anderen Designmustern gibt es wahrscheinlich einige Möglichkeiten, die Dinge viel reibungsloser zu gestalten, die ohne sorgfältiges Studium nicht offensichtlich sind. Darauf hoffe ich.