Spielzustand

Eine ausführlichere Dokumentation folgt.

Logicalls

Ein Logicall ist ein Aufruf von dem Communication-Layer an die Spielelogik.

Aufbau eines Logicalls: logicall(SenderID, Action)

Call Broadcasts Returns Erläuterungen
newPlayerPossible None boolean, Gibt true oder false zurück und Bei true Informationen über die anderen Spieler.
init None n* playerinfo Sendet die Spielerinfos
setName(Name) playerinfo None Setzt den Namen und macht einen Broadcast mit der Änderung
setColor(ColorID) playerinfo ctrue, cfalse Setzt die Spielerfarbe und macht einen broadcast mit der Änderung
start (Admin Only) update_ostack forall: player Initialisiert den Öffentlichen Wagenkartenstapel (update_ostack) und aktualisiert die Spieler (player)
deletePlayer None boolean löschte einen Spieler vor dem Beginn des Spiels und dekrementiert die ID der nachfolgenden Spieler
giveUp giveUp(ID) None beendet das Spiel und macht einen Broadcast wer aufgegeben hat
playerCount None playerCount Anzahl der Spieler
goalsReturned None boolean Eine Liste aller zurückgegeben Zielkarten (allgemein), bei false Nachricht an Client goalsReturnedFail
drawCard(stack,_,-1) playerinfo, currentPlayer player Zieht eine Karte vom Stapel. gibt über Color -1 zurück (für unbekannt)
drawCard(openStack, CardID, Color) playerinfo, update_ostack, ggf. currentPlayer player Zieht die CardID-te Karte vom offenen Stapel (ostack), bei false Nachricht an Client drawCardFail gibt über Color die gezogene Farbe zurück
buildRoute(Start, End, WStack, RouteColor) playerinfo player Baut eine Route, wenn fehlgeschlagen buildRouteFail an Client
sendGoals None goal Verteilt drei Zielkarten vom Stapel.
goalReached None goalReached(GoalID) Überprüft welche Ziele eines Spielers bereits abgeschlossen sind und sendet pro abgeschlossenem Ziel eine Nachricht mit der GoalID an dn Client der anfragt

Send-Predicate (an Client) Erläuterungen
cstatus(playerinfo(ID, Name, Wagons, Points, ListOfRoutes, NumOfGoals, NumOfWagonCards, Color)) Öffentliche Spielerinformationen
cstatus(player(ID, Name, ListOfGoals, WStack, Wagons, Points, ListOfRouts, Color)) Private Spielerinformationen, am Ende öffentlich
cgoal([ID1, ID2, ID3], Status) Eine List von Zielen, die zur Auswahl steht. Status=0 -> Initialisierungsphase, Status=1 -> Spielphase
cupdate_ostack(C1,C2,C3,C4,C5) C1..C5 sind Kartentypen (vgl. Manual)
cplayerCount(Count) Spieleranzahl
ccurrentPlayer(ID) Du bist der aktuelle Spieler.
wstack(ListOfColors) Eine Liste mit der Anzahl der verschieden Farben (z.B. [5, 3, ..., 2] für 5 violette, 2 weiße, ... und 2 Joker-Karten)
clastGameLoop Letzt Runde!
cendOfGame Ende des Spieles, Berechnung erfolgt und wird gesendet.
clongestPath([path(ID,ListOfPathRoutes),…]) Längste Strecke - Info
cwinner(ID) Der Gewinner!
ctrue / cfalse Wenn aktion erfolgreich bzw aktion nicht erfolgreich war
cgiveUp(ID) Spieler gibt im Spiel auf
cbuildRouteFail Route kann nicht gebaut werden
cgoalsReturnedFail Ziele können nicht zurückgegeben werden (Zu wenig Ziele, Falsche Ziele)
cgoalsReached(List) Liste von allen Zielen des anfragenden Spielers mit 0 für nicht erfüllt, 1 für erfüllt
cdrawCardFail Karte konnte nicht gezogen werden (tritt ein wenn zweite Karte zbsp Joker ist)
crouteUsed(Route,Mode,PlayerID) Sagt, dass PlayerID die Route Route mit dem Modus Mode belegt.

Send-Predicate (an Kommunikation) Erläuterungen
snzurueckok(ID, ZielZuruckCount wenn das Zurückgeben von Zielen erfolgreich war, mit Anzahl der zurückgegebenen Zielen
snzurueckfail(ID) Zielkarten können nicht zurückgegeben werden
snkarteok(ID, CardID) Karte gezogen hat funktioniert, CardID = -1 für vom Stack gezogen, CardID=0...9 für FarbID die vom offenen Stapel gezogen wurde
snkartefail(ID) siehe drawCardFail
snsteckeok(ID, route(Start, Ziel, Länge, FarbID)) Wenn Streckenbau ok
snstreckefail(ID) Wenn Streckenbau fehlgeschlagen ist

ToDo's

  • Ende des Spieles
    • Letzte Runde erkennen (erledigt)
    • Ende der Spielzüge erkennen (erledigt)
    • Zielkarten abrechnen und Punkte berechnen (erledigt)
    • Längste Strecke berechnen (optional)
    • Punkte zusammenzählen (erledigt aber ohne längste Strecke)
    • Alle Playerobjekte an den Client senden (erledigt)

Internals

Datenbasis

Status Pädikat Erläuterungen
Done goal(Start, End, Points) Repräsetiert eine Zeilkarte
Done wstack([Color1, ... Color9]) Repräsentiert einen Wagenkartenstapel, Color1 .. Color9 geben die Anzahl der farbigen Karten an, Color9 = Joker
Done cstack(wstack) Stapel von verdeckten Wagenkarten
Done gqueue(ListOfFreeGoals) Eine Liste der im Stapel vorhandenen Ziele, 0 = TOS
Done currentPlayer(ID, Phase) ID ist die Farb-ID (0..6), Phase der Zustand (Spieler am Zug keine Auswahl getroffen 0, Karte ziehen 1..2; Ziel ziehen 3..4; Strecke bauen 5..6)
Done player(ID, Name, ListOfGoals, wstack, Wagons, Points, ListOfRoads, Color) ID bestimmt die Farbe, wstack ist ein Kartensptapel (vgl. Definition)
Done town(Name) Eine Stadt
Done route(Start, End, Length, Color) Eine Strecke einer Länge und einer Farbe (0..9)
Done pointTrans(Length, Points) Transformation einer Stecke zu Punkten

Prädikate

Status Prädikat Erläuterungen
Done newPlayerPossible(ID) gibt zurück ob ein neuer Spieler angemeldet werden, wenn true, wird eine ID vergeben und ein Spieler erzeugt
Done setName(ID,Name) Setzt den Namen eines Spielers
Done start Startet und initialisiert das Spiel (Ziele mische und Karten verteilen) und verteilt Zielkarten
Done karteziehen(offen, ID) offen beschreibt ob eine offene Karte gezogen werden soll, ID beschreibt die Position der Karte
Done karteziehen(stack) zieht eine Karte vom Stack
ToDo zielziehen zieht drei Ziele vom Stapel (ID der Ziele können übergeben werden)
Done zielziehen(ListOfRückgabe) Liste von Karten die nicht gewählt werden sollen
Done zugbauen(Start, Ziel, ListOfFarben) List von Farben sind Anzahlen der genutzten Farben (Liste mit 9 Elementen)

-- AlexisEngelke -- 21 Feb 2012
 
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback