Bevor die Arbeit an der XML-Spieledatei losgehen kann, sollten Sie sich über die Regeln und Abläufe in der von Ihnen gewählten Patience im Klaren sein. Wenn Sie selbst eine neue Patience entwickeln wollen, können Sie natürlich experimentieren. Dennoch werden Sie einige Grundfragen im Vornherein klären:
Ich möchte an dieser Stelle eine Patience erstellen, die weitgehend bekannt ist. Bei "Canfield" wird ein einfaches Kartenset mit 52 Karten verwendet. Es gibt vier Grundkartenstapel, wobei zu Beginn auf den ersten bereits eine Karte gelegt wird. Desweiteren gibt es vier Arbeitsstapel und eine Reserve. 13 Karten kommen verdeckt (die letzte offen) auf die Reserve, die automatisch freiwerdende Arbeitsstapel auffüllt. Der Stock legt je drei Karten auf den Abwurf.
Die optimale Positionierung der Felder und damit zusammenhängend die Gesamtgröße des Fensters kann einerseits durch Probieren bestimmt und jederzeit verändert werden, andererseits ist sie bereits zu Beginn der Testphase wichtig, da ohne sie keine Felder angezeigt werden. Ich verwende dazu bereits abgestimmte Werte und erhalte folgendes Grundgerüst:
<spiel name="Canfield" fenster="47x36" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="patfinder.xsd"> <programm>090818</programm> <version>090818</version> <karten>52</karten> <feld id="stock" x="2" y="2" typ="stock"> </feld> <feld id="abwurf" x="8" y="2" typ="abwurf"> </feld> <feld id="g1" x="45" y="10" typ="grund"> </feld> <feld id="g2" x="45" y="18" typ="grund"> </feld> <feld id="g3" x="45" y="26" typ="grund"> </feld> <feld id="g4" x="45" y="34" typ="grund"> </feld> <feld id="r" x="2" y="10" typ="reserve"> </feld> <feld id="h1" x="22" y="10" typ="stapel"> </feld> <feld id="h2" x="27" y="10" typ="stapel"> </feld> <feld id="h3" x="32" y="10" typ="stapel"> </feld> <feld id="h4" x="37" y="10" typ="stapel"> </feld> </spiel>
Ich bezeichne die Version nach dem Erstellungsdatum, da ich hier am besten sehe, wie aktuell die Datei ist. Feld-IDs kürze ich nach Typ und eine eventuell folgende Nummerierung. Natürlich können Sie hier nach Ihren eigenen Vorlieben handeln.
Auf dem Stapel g1 liegt zu Beginn eine Karte des Zufallswertes. Diese wird durch das lege-Tag hinzugefügt. Auch auf den Stapeln h1 bis h4 liegt je eine Karte; auf r liegen 12 verdeckte und eine offene. Damit der Spieler die Karten sehen kann, ist noch eine Angabe nötig, in welche Richtung die Karten des Stapels aufgefächert werden sollen. Dazu dient das Tag richtung. Wird er ausgelassen, dann liegen die Karten aufeinander; es ist dann also immer nur die oberste Karte sichtbar.
Beim Kartenlegen gibt es zwei Besonderheiten: der stock legt drei Karten auf den abwurf, und h1 bis h4 werden durch r aufgefüllt. Der Stock kann beliebig oft gegeben werden. In der XML-Datei - ich kürze hier ähnliche oder nicht relevante Teile heraus - sieht das dann so aus:
<spiel name="Canfield" fenster="47x36"> ... <feld id="stock" x="2" y="2" typ="stock"> <ziel>abwurf</ziel> <ziel>abwurf</ziel> <ziel>abwurf</ziel> <wiederholung>frei</wiederholung> <quelle>abwurf</quelle> <sicht>verdeckt</sicht> </feld> <feld id="abwurf" x="8" y="2" typ="abwurf"> </feld> <feld id="g1" x="45" y="10" typ="grund"> <richtung>stapel</richtung< <lege typ="offen" quelle="stock">zufallswert</lege> </feld> ... <feld id="r" x="2" y="10" typ="reserve"> <richtung>rechts</richtung< <lege typ="verdeckt" quelle="stock" anz="12">frei</lege> <lege typ="offen" quelle="stock">frei</lege> </feld> <feld id="h1" x="22" y="10" typ="stapel"> <richtung>unten</richtung< <fuellen>r</fuellen> <lege typ="offen" quelle="stock">frei</lege> </feld> ... </spiel>
Die dreimalige Erwähnung von abwurf als Ziel von stapel stellt sicher, dass stets drei Karten gegeben werden. Das sicht-Tag wurde deshalb schon hinzugefügt, weil die Definition von stapel damit bereits komplett ist.
h1 (und natürlich auch h2, h3 und h4) enthält das Tag fuellen. Dieses bewirkt, dass das Feld h1 immer dann, wenn es leer wird, eine Karte von r erhät, solange dort noch Karten vorrätig sind.
Auf die Felder h1 bis h4 kann in wechselnden Farben abwärts gelegt werden, wobei das Ass die letzte Karte ist, d. h. es ist nicht möglich, auf ein Ass einen König zu legen. Ein leeres Feld kann (sobald die Reserve aufgebraucht ist) mit einer beliebigen Karte oder Reihe belegt werden. Die Grundkartenstapel g1 bis g4 dagegen werden gleichfarbig in aufsteigende Richtung aufgebaut. Sie können nur mit der durch den Zufallswert festgelegten Karte beginnen.
Für beide Feldergruppen gibt es eine maximale Anzahl an Karten, über die hinaus nichts mehr auf die Felder gelegt werden kann. In unserem Fall sind die Werte so hoch gewählt, dass sie keine Einschränkung für den Spieler darstellen; die Angabe ist dennoch nötig, da sonst keine Ablage möglich ist.
Sowohl auf den Abwurf als auch auf den Reservekartenstapel kann der Spieler keine Karten ablegen. Daher werden hier keine Legereihenfolgen festgelegt.
... <feld id="g1" x="45" y="10" typ="grund"> <max>13</max> <richtung>stapel</richtung> <folgestart>zufallswert</folgestart> <folgefarbe>gleich</folgefarbe> <folgewert>auf</folgewert> <lege typ="offen" quelle="stock">zufallswert</lege> </feld> ... <feld id="h1" x="22" y="10" typ="stapel"> <max>27</max> <richtung>unten</richtung> <folgestart>frei</folgestart> <folgefarbe>wechsel</folgefarbe> <folgewert>ab</folgewert> <fuellen>r</fuellen> <lege typ="offen" quelle="stock">frei</lege> </feld> ...
Auf h1 usw. können bis zu 27 Karten liegen – der Stapel kann damit sehr viel Platz in Anspruch nehmen. Mit dem Tag eng werden die Karten ab einer bestimmten Anzahl zusammengestaucht dargestellt, um Platz zu sparen.
Bei "Canfield" gibt es eine sehr einfache Punktewertung: Jede Karte auf einem der vier Grundkartenstapel gibt einen Punkt. Um das Legen auf einen Grundkartenstapel zu vereinfachen, werden wir außerdem das auto-Tag verwenden. Wird eine Karte mit einem Rechtsklick ausgewählt, dann prüft das Programm, ob sie auf einen mit auto markierten Stapel gelegt werden kann. Dies wird auch beim automatischen Legen (Taste 'a') verwendet.
... <feld id="g1" x="45" y="10" typ="grund"> <max>13</max> <richtung>stapel</richtung> <folgestart>zufallswert</folgestart> <folgefarbe>gleich</folgefarbe> <folgewert>auf</folgewert> <lege typ="offen" quelle="stock">zufallswert</lege> <auto>ja</auto> <punkte>1</punkte> </feld> ...
Ein solches einfaches Verfahren wird bei einer Vielzahl von Patiencen benötigt. Bei Patiencen ohne Grundkartenstapel, bei denen alle Karten auf dem Tisch bleiben und dort zu Familien zusammengestellt werden sollen, müssen ausgefeiltere Punktesysteme verwendet werden. So können Punkte z. B. auch nur dann gezählt werden, wenn das Feld eine durchgängige Folge beinhaltet, oder es gibt Punkte, wenn sich auf einem Feld keine Karten befinden; hier gibt es zahlreiche Variationsmöglichkeiten. Felder können auch mit Minuspunkten belegt werden, sodass es einen Punkt für jede Karte gibt, die vom Stapel entfernt wird. Damit ist es sogar möglich, im Laufe des Spieles eine negative Punktzahl zu erreichen – beachten Sie jedoch, dass das Programm dem Patiencenmanager nie weniger als 0 Punkte zurückgeben wird.
Für "Canfield" existieren zwei offizielle Regelvarianten. In der ersten Version legt ein Klick auf den Stock drei Karten auf den Abwurf, der Stock kann beliebig oft gegeben werden. Alternativ dazu kann vom Stock auch immer nur eine Karte gegeben werden; dann jedoch wird der Stock nur ein einziges Mal gegeben. Diese Regelvarianten werden zunächst festgelegt:
<spiel name="Canfield" fenster="47x36" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="patfinder.xsd"> <programm>090818</programm> <version>090818</version> <bemerkung>(hier steht die zusätzliche Bemerkung zum Spiel)</bemerkung> <anleitung>(hier steht die Spielanleitung)</anleitung> <regelwerk> <regel id="3aufdeck">je drei Karten geben; Talon kann wieder aufgenommen werden</regel> <regel id="1aufdeck">je eine Karten geben; Talon wird nicht wieder aufgenommen</regel> </regelwerk> ... </spiel>
Die Regelvarianten kommen an zwei Stellen zur Geltung: beim Geben vom Stock und bei der Festlegung der Wiederholungen. Beide Angaben beziehen sich auf den Stock, also muss nur dieser verändert werden.
... <feld id="stock" x="2" y="2" typ="stock"> <ziel>abwurf</ziel> <regel id="3aufdeck"> <ziel>abwurf</ziel> <ziel>abwurf</ziel> <wiederholung>frei</wiederholung> </regel> <regel id="einfach"> <wiederholung>1</wiederholung> </regel> <quelle>abwurf</quelle> <sicht>verdeckt</sicht> </feld> ...