1
0
Fork 0
mirror of https://github.com/shlomif/PySolFC.git synced 2025-04-05 00:02:29 -04:00

Additional options and documentation for Solitaire Wizard.

This commit is contained in:
Joe R 2022-12-30 09:56:00 -05:00
parent 3ea9f7f481
commit f3661a0aee
13 changed files with 733 additions and 54 deletions

View file

@ -61,6 +61,7 @@ files = [
('report_bug.html', 'PySol - Report a Bug'), ('report_bug.html', 'PySol - Report a Bug'),
# ('rules_alternate.html', 'PySol - a Solitaire Game Collection'), # ('rules_alternate.html', 'PySol - a Solitaire Game Collection'),
# ('rules.html', 'PySol - a Solitaire Game Collection'), # ('rules.html', 'PySol - a Solitaire Game Collection'),
('solitaire_wizard.html', 'PySol - Solitaire Wizard'),
] ]
rules_files = [ rules_files = [

View file

@ -11,11 +11,15 @@
<li> <a href="rules.html">Individual Game Rules</a> <li> <a href="rules.html">Individual Game Rules</a>
<li> <a href="rules_alternate.html">Alternate Names</a> <li> <a href="rules_alternate.html">Alternate Names</a>
</ul> </ul>
<h2>Features</h2>
<ul>
<li> <a href="solitaire_wizard.html">Solitaire Wizard</a>
</ul>
<h2>Misc</h2> <h2>Misc</h2>
<ul> <ul>
<li> <a href="news.html">What's new?</a> <li> <a href="news.html">What's new?</a>
<li> <a href="report_bug.html">Report a Bug</a> <li> <a href="report_bug.html">Report a Bug</a>
<li><a href="license.html">PySol license terms</a> <li> <a href="license.html">PySol license terms</a>
</ul> </ul>
<hr> <hr>
<p> Visit the official <a href="http://pysolfc.sourceforge.net/">PySolFC Home <p> Visit the official <a href="http://pysolfc.sourceforge.net/">PySolFC Home

View file

@ -0,0 +1,95 @@
<h1>Solitaire Wizard</h1>
<p>
The Solitaire Wizard is a feature in PySol that allows you to create and play
custom solitaire games.
<p>
Also note that the Solitaire Wizard may not be enabled in mobile versions of
PySol.
Below are the different options you can set when using the Solitaire Wizard:
<h2>General</h2>
<ul>
<li><b>Initial Setting</b> - The initial setting automatically configures the
Solitaire Wizard options to match one of several sample games.</li>
<li><b>Name</b> - This is the name of the game you wish to create.</li>
<li><b>Skill Level</b> - Whether the game is more luck or skill. This doesn't
affect the actual game, but is used to categorize it in PySol, and to help
with sorting.</li>
<li><b>Number of Decks</b> - The number of decks used.</li>
<li><b>Layout</b> - The physical layout of the card piles. This is purely
aesthetic and doesn't affect gameplay.</li>
</ul>
<h2>Talon</h2>
<ul>
<li><b>Type</b> - This determines when and how cards are dealt from the talon.
Cards can be dealt either all at the beginning, to a waste pile, reserves, or
foundations, or to the tableau, either in normal style, Spider style (don't allow
dealing from the talon if there are empty piles), or Grounds for a Divorce style
(do not deal to empty tableau piles).</li>
<li><b>Number of Redeals</b> - How many times the player is allowed to redeal.
In each redeal, the pile(s) where the cards from the talon are dealt are
combined to form a new talon.</li>
<li><b># of cards dealt to waste</b> - If dealing cards from the talon to the
waste, this indicates how many are dealt at once.</li>
<li><b>Shuffle during Redeal</b> - Whether the deck should be shuffled when
doing a redeal.</li>
</ul>
<h2>Foundations</h2>
<ul>
<li><b>Type</b> - This determines what cards can be moved to the foundations.
Foundations can be built by same suit, same color, alternate color,
any suit but the same, rank regardless of suit, or Spider style
(move entire sequences to the foundations once complete).</li>
<li><b>Base Card</b> - Which rank is used to start the foundations - either ace
or king, or any card.</li>
<li><b>Direction</b> - Whether the foundation is built up or down.</li>
<li><b>Move</b> - Whether you're allowed to move the top card from a foundation.</li>
<li><b>First card sets base cards</b> - If the base card is set to any, this
indicates whether all four foundations must start with the same rank - once the
first card is moved to the foundations, all other foundations must start from
the same base rank.</li>
</ul>
<h2>Tableau</h2>
<ul>
<li><b>Number of tableau piles</b> - How many tableau piles there are.</li>
<li><b>Type</b> - This determines how foundations are built - by same suit,
alternate color, same color, rank regardless of suit, any suit but the same,
up or down, Spider style (can be built regardless of suit, but only sequences
that match the suit option can be moved as a unit), Yukon style (cards can
be moved regardless of sequence), or no building on the tableau allowed.</li>
<li><b>Base Card</b> - What card can fill an empty tableau pile.</li>
<li><b>Direction</b> - Whether the tableau piles are built up or down.</li>
<li><b>Move</b> - Whether sequences can be moved together, or cards can only
be moved singly.</li>
<li><b>Wrapping</b> - Whether wrapping from king to ace or ace to king is
allowed.</li>
<li><b>Use "Super Move" feature</b> - If sequences normally cannot be moved
together, a "Super Move" allows you to move sequences regardless, if there
are enough empty stacks/reserves to make the move normally.</li>
</ul>
<h2>Reserves</h2>
<ul>
<li><b>Number of reserves</b> - How many reserves there are.</li>
<li><b>Max # of accepted cards</b> - How many cards you can move to each
reserve.</li>
<h2>Opening deal</h2>
<ul>
<li><b>Type</b> - How the cards are dealt to the tableau. Rectangular
deals have the cards dealt relatively evenly, triangular deals involve
each pile getting one more card than the previous, and pyramid deals are
similar, but piles after the center one have one fewer than the previous.</li>
<li><b># of face-down cards dealt to the tableau pile</b> - How many
cards are dealt face-down to each pile. Note that the top card of
each tableau pile is always face-up.</li>
<li><b># of cards dealt to the reserve</b> - How many cards are dealt
face-up to each reserve.</li>
<li><b>Max # of dealt cards</b> - How many cards can be dealt from the
talon at the start of the game at most.</li>
<li><b>Deal first cards to foundations</b> - Whether the first cards are
dealt to the foundations at the start of the game.</li>

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: PySol 0.0.1\n" "Project-Id-Version: PySol 0.0.1\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-12-10 10:19-0500\n" "POT-Creation-Date: 2021-12-10 10:19-0500\n"
"PO-Revision-Date: 2022-09-26 20:59-0400\n" "PO-Revision-Date: 2022-12-30 09:31-0500\n"
"Last-Translator: H. Schaekel <Holger.Schaekel@web.de>\n" "Last-Translator: H. Schaekel <Holger.Schaekel@web.de>\n"
"Language-Team: German\n" "Language-Team: German\n"
"Language: de\n" "Language: de\n"
@ -1223,6 +1223,12 @@ msgstr "Endablage. Aufwärts setzen nach Farbe"
msgid "Foundation. Build down by color." msgid "Foundation. Build down by color."
msgstr "Endablage. Abwärts setzen nach Farbe." msgstr "Endablage. Abwärts setzen nach Farbe."
msgid "Foundation. Build up in any suit but the same."
msgstr ""
msgid "Foundation. Build down in any suit but the same."
msgstr ""
#: pysollib/stack.py:2459 pysollib/games/golf.py:126 pysollib/games/golf.py:322 #: pysollib/stack.py:2459 pysollib/games/golf.py:126 pysollib/games/golf.py:322
msgid "Tableau. No building." msgid "Tableau. No building."
msgstr "Tableau. Keine Erstellung." msgstr "Tableau. Keine Erstellung."
@ -1305,6 +1311,21 @@ msgstr ""
"Tableau. Aufgebaut unabhängig von der Farbe. Sequenzen von Karten in der " "Tableau. Aufgebaut unabhängig von der Farbe. Sequenzen von Karten in der "
"gleichen Farbe können als eine Einheit bewegt werden." "gleichen Farbe können als eine Einheit bewegt werden."
msgid ""
"Tableau. Build up regardless of suit. Sequences of cards in the same color "
"can be moved as a unit."
msgstr ""
msgid ""
"Tableau. Build up regardless of suit. Sequences of cards in any suit but the "
"same can be moved as a unit."
msgstr ""
msgid ""
"Tableau. Build down regardless of suit. Sequences of cards in any suit but "
"the same can be moved as a unit."
msgstr ""
#: pysollib/stack.py:2654 #: pysollib/stack.py:2654
msgid "" msgid ""
"Tableau. Build up by alternate color, can move any face-up cards regardless " "Tableau. Build up by alternate color, can move any face-up cards regardless "
@ -1344,6 +1365,26 @@ msgstr ""
"Tableau. Erstellt nach unten nach Farbe. Es kann jede aufgedeckte Karte " "Tableau. Erstellt nach unten nach Farbe. Es kann jede aufgedeckte Karte "
"unabhängig der Sequenz bewegt werden." "unabhängig der Sequenz bewegt werden."
msgid ""
"Tableau. Build up by color, can move any face-up cards regardless of "
"sequence."
msgstr ""
msgid ""
"Tableau. Build down by color, can move any face-up cards regardless of "
"sequence."
msgstr ""
msgid ""
"Tableau. Build up by any suit but the same, can move any face-up cards "
"regardless of sequence."
msgstr ""
msgid ""
"Tableau. Build down by any suit but the same, can move any face-up cards "
"regardless of sequence."
msgstr ""
#: pysollib/stack.py:2694 pysollib/stack.py:2697 #: pysollib/stack.py:2694 pysollib/stack.py:2697
msgid "" msgid ""
"Tableau. Build up regardless of suit, can move any face-up cards regardless " "Tableau. Build up regardless of suit, can move any face-up cards regardless "
@ -1368,6 +1409,9 @@ msgstr "Tableau. Aufbau nach oben oder unten im Rang."
msgid "Tableau. Build up or down regardless of suit." msgid "Tableau. Build up or down regardless of suit."
msgstr "Tableau. Aufbau nach oben oder unten unabhängig von der Farbe." msgstr "Tableau. Aufbau nach oben oder unten unabhängig von der Farbe."
msgid "Tableau. Build up or down in any suit but the same."
msgstr ""
#: pysollib/stack.py:2874 #: pysollib/stack.py:2874
msgid "Waste." msgid "Waste."
msgstr "Zwischentalon." msgstr "Zwischentalon."
@ -1698,6 +1742,9 @@ msgstr "Anzahl der Karten in der Zwischentalon :"
msgid "Shuffle during redeal:" msgid "Shuffle during redeal:"
msgstr "Mischen während Neudecks:" msgstr "Mischen während Neudecks:"
msgid "No building"
msgstr ""
#: pysollib/wizardutil.py:176 pysollib/wizardutil.py:184 #: pysollib/wizardutil.py:176 pysollib/wizardutil.py:184
#: pysollib/wizardutil.py:224 #: pysollib/wizardutil.py:224
msgid "Same suit" msgid "Same suit"
@ -1728,6 +1775,12 @@ msgstr "Spinne alternative Farbe"
msgid "Spider rank" msgid "Spider rank"
msgstr "Spinne Rang" msgstr "Spinne Rang"
msgid "Spider same color"
msgstr ""
msgid "Spider any suit but the same"
msgstr ""
#: pysollib/wizardutil.py:191 pysollib/wizardutil.py:249 #: pysollib/wizardutil.py:191 pysollib/wizardutil.py:249
#: pysollib/wizardutil.py:252 #: pysollib/wizardutil.py:252
msgid "Any" msgid "Any"
@ -1747,6 +1800,9 @@ msgstr "Hoch"
msgid "Down" msgid "Down"
msgstr "Unten" msgstr "Unten"
msgid "Same rank"
msgstr ""
#: pysollib/wizardutil.py:200 pysollib/wizardutil.py:259 #: pysollib/wizardutil.py:200 pysollib/wizardutil.py:259
msgid "Direction:" msgid "Direction:"
msgstr "Richtung:" msgstr "Richtung:"
@ -1793,6 +1849,9 @@ msgstr "Oben oder unten nach Rang"
msgid "Up or down by same color" msgid "Up or down by same color"
msgstr "Oben oder unten nach gleicher Farbe" msgstr "Oben oder unten nach gleicher Farbe"
msgid "Up or down by any suit but the same"
msgstr ""
#: pysollib/wizardutil.py:238 #: pysollib/wizardutil.py:238
msgid "Yukon same suit" msgid "Yukon same suit"
msgstr "Yukon gleiche Farbe" msgstr "Yukon gleiche Farbe"
@ -1805,6 +1864,12 @@ msgstr "Yukon alternative Farben"
msgid "Yukon rank" msgid "Yukon rank"
msgstr "Yukon Rang" msgstr "Yukon Rang"
msgid "Yukon same color"
msgstr ""
msgid "Yukon any suit but the same"
msgstr ""
#: pysollib/wizardutil.py:263 pysollib/wizardutil.py:264 #: pysollib/wizardutil.py:263 pysollib/wizardutil.py:264
msgid "Sequence" msgid "Sequence"
msgstr "Sequenz" msgstr "Sequenz"
@ -1833,6 +1898,9 @@ msgstr "Triangel"
msgid "Rectangle" msgid "Rectangle"
msgstr "Rechteck" msgstr "Rechteck"
msgid "Pyramid"
msgstr ""
#: pysollib/wizardutil.py:308 #: pysollib/wizardutil.py:308
msgid "# of face-down cards dealt to the tableau pile:" msgid "# of face-down cards dealt to the tableau pile:"
msgstr "Anzahl verdeckter Karten auf dem Stapel:" msgstr "Anzahl verdeckter Karten auf dem Stapel:"

View file

@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: 1.02\n" "Project-Id-Version: 1.02\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-12-10 10:19-0500\n" "POT-Creation-Date: 2021-12-10 10:19-0500\n"
"PO-Revision-Date: 2022-09-26 20:59-0400\n" "PO-Revision-Date: 2022-12-30 09:31-0500\n"
"Last-Translator: Eric Rausch <neelix570@gmail.com>\n" "Last-Translator: Eric Rausch <neelix570@gmail.com>\n"
"Language-Team: French\n" "Language-Team: French\n"
"Language: fr\n" "Language: fr\n"
@ -1253,6 +1253,12 @@ msgstr "Fondation. Croissant par couleur."
msgid "Foundation. Build down by color." msgid "Foundation. Build down by color."
msgstr "Fondation. Décroissant par couleur." msgstr "Fondation. Décroissant par couleur."
msgid "Foundation. Build up in any suit but the same."
msgstr ""
msgid "Foundation. Build down in any suit but the same."
msgstr ""
#: pysollib/stack.py:2459 pysollib/games/golf.py:126 pysollib/games/golf.py:322 #: pysollib/stack.py:2459 pysollib/games/golf.py:126 pysollib/games/golf.py:322
msgid "Tableau. No building." msgid "Tableau. No building."
msgstr "Tableau. Aucun empilement." msgstr "Tableau. Aucun empilement."
@ -1335,6 +1341,21 @@ msgstr ""
"Tableau. Décroissant indépendamment de l'enseigne. Les ensembles de cartes " "Tableau. Décroissant indépendamment de l'enseigne. Les ensembles de cartes "
"d'une même enseigne peuvent être déplacés entièrement." "d'une même enseigne peuvent être déplacés entièrement."
msgid ""
"Tableau. Build up regardless of suit. Sequences of cards in the same color "
"can be moved as a unit."
msgstr ""
msgid ""
"Tableau. Build up regardless of suit. Sequences of cards in any suit but the "
"same can be moved as a unit."
msgstr ""
msgid ""
"Tableau. Build down regardless of suit. Sequences of cards in any suit but "
"the same can be moved as a unit."
msgstr ""
#: pysollib/stack.py:2654 #: pysollib/stack.py:2654
msgid "" msgid ""
"Tableau. Build up by alternate color, can move any face-up cards regardless " "Tableau. Build up by alternate color, can move any face-up cards regardless "
@ -1374,6 +1395,26 @@ msgstr ""
"Tableau. Décroissant par enseigne, toutes les cartes ouvertes peuvent être " "Tableau. Décroissant par enseigne, toutes les cartes ouvertes peuvent être "
"déplacées sans former de suite." "déplacées sans former de suite."
msgid ""
"Tableau. Build up by color, can move any face-up cards regardless of "
"sequence."
msgstr ""
msgid ""
"Tableau. Build down by color, can move any face-up cards regardless of "
"sequence."
msgstr ""
msgid ""
"Tableau. Build up by any suit but the same, can move any face-up cards "
"regardless of sequence."
msgstr ""
msgid ""
"Tableau. Build down by any suit but the same, can move any face-up cards "
"regardless of sequence."
msgstr ""
#: pysollib/stack.py:2694 pysollib/stack.py:2697 #: pysollib/stack.py:2694 pysollib/stack.py:2697
msgid "" msgid ""
"Tableau. Build up regardless of suit, can move any face-up cards regardless " "Tableau. Build up regardless of suit, can move any face-up cards regardless "
@ -1398,6 +1439,9 @@ msgstr "Tableau. Croissant ou décroissant par enseigne."
msgid "Tableau. Build up or down regardless of suit." msgid "Tableau. Build up or down regardless of suit."
msgstr "Tableau. Croissant ou décroissant indépendamment de l'enseigne." msgstr "Tableau. Croissant ou décroissant indépendamment de l'enseigne."
msgid "Tableau. Build up or down in any suit but the same."
msgstr ""
#: pysollib/stack.py:2874 #: pysollib/stack.py:2874
msgid "Waste." msgid "Waste."
msgstr "Défausse." msgstr "Défausse."
@ -1728,6 +1772,9 @@ msgstr "Nombre de cartes sur la défausse:"
msgid "Shuffle during redeal:" msgid "Shuffle during redeal:"
msgstr "Mélanger lors de la donne:" msgstr "Mélanger lors de la donne:"
msgid "No building"
msgstr ""
#: pysollib/wizardutil.py:176 pysollib/wizardutil.py:184 #: pysollib/wizardutil.py:176 pysollib/wizardutil.py:184
#: pysollib/wizardutil.py:224 #: pysollib/wizardutil.py:224
msgid "Same suit" msgid "Same suit"
@ -1758,6 +1805,12 @@ msgstr "Spider - Couleur alternée"
msgid "Spider rank" msgid "Spider rank"
msgstr "Spider - Valeur" msgstr "Spider - Valeur"
msgid "Spider same color"
msgstr ""
msgid "Spider any suit but the same"
msgstr ""
#: pysollib/wizardutil.py:191 pysollib/wizardutil.py:249 #: pysollib/wizardutil.py:191 pysollib/wizardutil.py:249
#: pysollib/wizardutil.py:252 #: pysollib/wizardutil.py:252
msgid "Any" msgid "Any"
@ -1777,6 +1830,9 @@ msgstr "Haut"
msgid "Down" msgid "Down"
msgstr "Bas" msgstr "Bas"
msgid "Same rank"
msgstr ""
#: pysollib/wizardutil.py:200 pysollib/wizardutil.py:259 #: pysollib/wizardutil.py:200 pysollib/wizardutil.py:259
msgid "Direction:" msgid "Direction:"
msgstr "Direction:" msgstr "Direction:"
@ -1823,6 +1879,9 @@ msgstr "Croissant ou décroissant par valeur"
msgid "Up or down by same color" msgid "Up or down by same color"
msgstr "Croissant ou décroissant par couleur" msgstr "Croissant ou décroissant par couleur"
msgid "Up or down by any suit but the same"
msgstr ""
#: pysollib/wizardutil.py:238 #: pysollib/wizardutil.py:238
msgid "Yukon same suit" msgid "Yukon same suit"
msgstr "Yukon - Enseigne" msgstr "Yukon - Enseigne"
@ -1835,6 +1894,12 @@ msgstr "Yukon - Couleur alternée"
msgid "Yukon rank" msgid "Yukon rank"
msgstr "Yukon - Valeur" msgstr "Yukon - Valeur"
msgid "Yukon same color"
msgstr ""
msgid "Yukon any suit but the same"
msgstr ""
#: pysollib/wizardutil.py:263 pysollib/wizardutil.py:264 #: pysollib/wizardutil.py:263 pysollib/wizardutil.py:264
msgid "Sequence" msgid "Sequence"
msgstr "Suite de cartes" msgstr "Suite de cartes"
@ -1863,6 +1928,9 @@ msgstr "Triangle"
msgid "Rectangle" msgid "Rectangle"
msgstr "Rectangle" msgstr "Rectangle"
msgid "Pyramid"
msgstr ""
#: pysollib/wizardutil.py:308 #: pysollib/wizardutil.py:308
msgid "# of face-down cards dealt to the tableau pile:" msgid "# of face-down cards dealt to the tableau pile:"
msgstr "# de cartes retournées au tableau:" msgstr "# de cartes retournées au tableau:"

View file

@ -12,7 +12,7 @@ msgstr ""
"Project-Id-Version: it_pysol\n" "Project-Id-Version: it_pysol\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-12-10 10:19-0500\n" "POT-Creation-Date: 2021-12-10 10:19-0500\n"
"PO-Revision-Date: 2022-09-26 21:00-0400\n" "PO-Revision-Date: 2022-12-30 09:31-0500\n"
"Last-Translator: Giuliano Colla <giuliano.colla@gmail.com>\n" "Last-Translator: Giuliano Colla <giuliano.colla@gmail.com>\n"
"Language-Team: Italiano <it@li.org>\n" "Language-Team: Italiano <it@li.org>\n"
"Language: it\n" "Language: it\n"
@ -1261,6 +1261,12 @@ msgstr "Casa. Crescente per colore."
msgid "Foundation. Build down by color." msgid "Foundation. Build down by color."
msgstr "Casa. Decrescente per colore." msgstr "Casa. Decrescente per colore."
msgid "Foundation. Build up in any suit but the same."
msgstr ""
msgid "Foundation. Build down in any suit but the same."
msgstr ""
#: pysollib/stack.py:2459 pysollib/games/golf.py:126 pysollib/games/golf.py:322 #: pysollib/stack.py:2459 pysollib/games/golf.py:126 pysollib/games/golf.py:322
msgid "Tableau. No building." msgid "Tableau. No building."
msgstr "Tableau. Non accetta carte." msgstr "Tableau. Non accetta carte."
@ -1343,6 +1349,21 @@ msgstr ""
"Tableau. Decrescente indipendentemente dal seme. Sequenze di carte dello " "Tableau. Decrescente indipendentemente dal seme. Sequenze di carte dello "
"stesso seme si possono spostare in blocco." "stesso seme si possono spostare in blocco."
msgid ""
"Tableau. Build up regardless of suit. Sequences of cards in the same color "
"can be moved as a unit."
msgstr ""
msgid ""
"Tableau. Build up regardless of suit. Sequences of cards in any suit but the "
"same can be moved as a unit."
msgstr ""
msgid ""
"Tableau. Build down regardless of suit. Sequences of cards in any suit but "
"the same can be moved as a unit."
msgstr ""
#: pysollib/stack.py:2654 #: pysollib/stack.py:2654
msgid "" msgid ""
"Tableau. Build up by alternate color, can move any face-up cards regardless " "Tableau. Build up by alternate color, can move any face-up cards regardless "
@ -1382,6 +1403,26 @@ msgstr ""
"Tableau. Decrescente per seme, si possono spostare le carte a faccia in su " "Tableau. Decrescente per seme, si possono spostare le carte a faccia in su "
"indipendentemente dalla sequenza." "indipendentemente dalla sequenza."
msgid ""
"Tableau. Build up by color, can move any face-up cards regardless of "
"sequence."
msgstr ""
msgid ""
"Tableau. Build down by color, can move any face-up cards regardless of "
"sequence."
msgstr ""
msgid ""
"Tableau. Build up by any suit but the same, can move any face-up cards "
"regardless of sequence."
msgstr ""
msgid ""
"Tableau. Build down by any suit but the same, can move any face-up cards "
"regardless of sequence."
msgstr ""
#: pysollib/stack.py:2694 pysollib/stack.py:2697 #: pysollib/stack.py:2694 pysollib/stack.py:2697
msgid "" msgid ""
"Tableau. Build up regardless of suit, can move any face-up cards regardless " "Tableau. Build up regardless of suit, can move any face-up cards regardless "
@ -1406,6 +1447,9 @@ msgstr "Tableau. Crescente o decrescente per seme."
msgid "Tableau. Build up or down regardless of suit." msgid "Tableau. Build up or down regardless of suit."
msgstr "Tableau. Crescente o decrescente indipendentemente dal seme." msgstr "Tableau. Crescente o decrescente indipendentemente dal seme."
msgid "Tableau. Build up or down in any suit but the same."
msgstr ""
#: pysollib/stack.py:2874 #: pysollib/stack.py:2874
msgid "Waste." msgid "Waste."
msgstr "Pozzo." msgstr "Pozzo."
@ -1736,6 +1780,9 @@ msgstr "Numero di carte nel pozzo:"
msgid "Shuffle during redeal:" msgid "Shuffle during redeal:"
msgstr "Mescola nella ridistribuzione:" msgstr "Mescola nella ridistribuzione:"
msgid "No building"
msgstr ""
#: pysollib/wizardutil.py:176 pysollib/wizardutil.py:184 #: pysollib/wizardutil.py:176 pysollib/wizardutil.py:184
#: pysollib/wizardutil.py:224 #: pysollib/wizardutil.py:224
msgid "Same suit" msgid "Same suit"
@ -1766,6 +1813,12 @@ msgstr "Spider alternate color"
msgid "Spider rank" msgid "Spider rank"
msgstr "Spider rank" msgstr "Spider rank"
msgid "Spider same color"
msgstr ""
msgid "Spider any suit but the same"
msgstr ""
#: pysollib/wizardutil.py:191 pysollib/wizardutil.py:249 #: pysollib/wizardutil.py:191 pysollib/wizardutil.py:249
#: pysollib/wizardutil.py:252 #: pysollib/wizardutil.py:252
msgid "Any" msgid "Any"
@ -1785,6 +1838,9 @@ msgstr "Ascendente"
msgid "Down" msgid "Down"
msgstr "Discendente" msgstr "Discendente"
msgid "Same rank"
msgstr ""
#: pysollib/wizardutil.py:200 pysollib/wizardutil.py:259 #: pysollib/wizardutil.py:200 pysollib/wizardutil.py:259
msgid "Direction:" msgid "Direction:"
msgstr "Direzione:" msgstr "Direzione:"
@ -1831,6 +1887,9 @@ msgstr "Ascendente o discendente per valore"
msgid "Up or down by same color" msgid "Up or down by same color"
msgstr "Ascendente o discendente stesso colore" msgstr "Ascendente o discendente stesso colore"
msgid "Up or down by any suit but the same"
msgstr ""
#: pysollib/wizardutil.py:238 #: pysollib/wizardutil.py:238
msgid "Yukon same suit" msgid "Yukon same suit"
msgstr "Yuokon stesso seme" msgstr "Yuokon stesso seme"
@ -1843,6 +1902,12 @@ msgstr "Yukon colori alterni"
msgid "Yukon rank" msgid "Yukon rank"
msgstr "Yukon per valore" msgstr "Yukon per valore"
msgid "Yukon same color"
msgstr ""
msgid "Yukon any suit but the same"
msgstr ""
#: pysollib/wizardutil.py:263 pysollib/wizardutil.py:264 #: pysollib/wizardutil.py:263 pysollib/wizardutil.py:264
msgid "Sequence" msgid "Sequence"
msgstr "Sequenza" msgstr "Sequenza"
@ -1871,6 +1936,9 @@ msgstr "Triangolo"
msgid "Rectangle" msgid "Rectangle"
msgstr "Rettangolo" msgstr "Rettangolo"
msgid "Pyramid"
msgstr ""
#: pysollib/wizardutil.py:308 #: pysollib/wizardutil.py:308
msgid "# of face-down cards dealt to the tableau pile:" msgid "# of face-down cards dealt to the tableau pile:"
msgstr "Numero di carte coperte nel tableau:" msgstr "Numero di carte coperte nel tableau:"

View file

@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-12-10 10:19-0500\n" "POT-Creation-Date: 2021-12-10 10:19-0500\n"
"PO-Revision-Date: 2022-09-26 21:00-0400\n" "PO-Revision-Date: 2022-12-30 09:32-0500\n"
"Last-Translator: Jerzy Trzeciak <artusek@wp.pl>\n" "Last-Translator: Jerzy Trzeciak <artusek@wp.pl>\n"
"Language-Team: Polish <pl@li.org>\n" "Language-Team: Polish <pl@li.org>\n"
"Language: pl\n" "Language: pl\n"
@ -1257,6 +1257,12 @@ msgstr "Stos bazowy. Układaj w górę wg barwy."
msgid "Foundation. Build down by color." msgid "Foundation. Build down by color."
msgstr "Stos bazowy. Układaj w dół wg barwy." msgstr "Stos bazowy. Układaj w dół wg barwy."
msgid "Foundation. Build up in any suit but the same."
msgstr ""
msgid "Foundation. Build down in any suit but the same."
msgstr ""
#: pysollib/stack.py:2459 pysollib/games/golf.py:126 pysollib/games/golf.py:322 #: pysollib/stack.py:2459 pysollib/games/golf.py:126 pysollib/games/golf.py:322
msgid "Tableau. No building." msgid "Tableau. No building."
msgstr "Stół gry. Nie układaj." msgstr "Stół gry. Nie układaj."
@ -1339,6 +1345,21 @@ msgstr ""
"Stół gry. Układaj w dół niezależnie od koloru. Sekwens kart tego samego " "Stół gry. Układaj w dół niezależnie od koloru. Sekwens kart tego samego "
"koloru można przenieść jako całość." "koloru można przenieść jako całość."
msgid ""
"Tableau. Build up regardless of suit. Sequences of cards in the same color "
"can be moved as a unit."
msgstr ""
msgid ""
"Tableau. Build up regardless of suit. Sequences of cards in any suit but the "
"same can be moved as a unit."
msgstr ""
msgid ""
"Tableau. Build down regardless of suit. Sequences of cards in any suit but "
"the same can be moved as a unit."
msgstr ""
#: pysollib/stack.py:2654 #: pysollib/stack.py:2654
msgid "" msgid ""
"Tableau. Build up by alternate color, can move any face-up cards regardless " "Tableau. Build up by alternate color, can move any face-up cards regardless "
@ -1378,6 +1399,26 @@ msgstr ""
"Stół gry. Układaj w dół wg koloru. Można przenosić odkryte karty niezależnie " "Stół gry. Układaj w dół wg koloru. Można przenosić odkryte karty niezależnie "
"od sekwensu." "od sekwensu."
msgid ""
"Tableau. Build up by color, can move any face-up cards regardless of "
"sequence."
msgstr ""
msgid ""
"Tableau. Build down by color, can move any face-up cards regardless of "
"sequence."
msgstr ""
msgid ""
"Tableau. Build up by any suit but the same, can move any face-up cards "
"regardless of sequence."
msgstr ""
msgid ""
"Tableau. Build down by any suit but the same, can move any face-up cards "
"regardless of sequence."
msgstr ""
#: pysollib/stack.py:2694 pysollib/stack.py:2697 #: pysollib/stack.py:2694 pysollib/stack.py:2697
msgid "" msgid ""
"Tableau. Build up regardless of suit, can move any face-up cards regardless " "Tableau. Build up regardless of suit, can move any face-up cards regardless "
@ -1402,6 +1443,9 @@ msgstr "Stół gry. Układaj w górę lub w dół wg koloru."
msgid "Tableau. Build up or down regardless of suit." msgid "Tableau. Build up or down regardless of suit."
msgstr "Stół gry. Ukladaj w górę lub w dół niezależnie od koloru." msgstr "Stół gry. Ukladaj w górę lub w dół niezależnie od koloru."
msgid "Tableau. Build up or down in any suit but the same."
msgstr ""
#: pysollib/stack.py:2874 #: pysollib/stack.py:2874
msgid "Waste." msgid "Waste."
msgstr "Zrzut." msgstr "Zrzut."
@ -1732,6 +1776,9 @@ msgstr "Liczba kart przełożonych do zrzutu:"
msgid "Shuffle during redeal:" msgid "Shuffle during redeal:"
msgstr "Przetasuj przy ponownym rozdaniu:" msgstr "Przetasuj przy ponownym rozdaniu:"
msgid "No building"
msgstr ""
#: pysollib/wizardutil.py:176 pysollib/wizardutil.py:184 #: pysollib/wizardutil.py:176 pysollib/wizardutil.py:184
#: pysollib/wizardutil.py:224 #: pysollib/wizardutil.py:224
msgid "Same suit" msgid "Same suit"
@ -1763,6 +1810,12 @@ msgstr "Pająk kolory naprzemiennie"
msgid "Spider rank" msgid "Spider rank"
msgstr "Pająk wartość" msgstr "Pająk wartość"
msgid "Spider same color"
msgstr ""
msgid "Spider any suit but the same"
msgstr ""
#: pysollib/wizardutil.py:191 pysollib/wizardutil.py:249 #: pysollib/wizardutil.py:191 pysollib/wizardutil.py:249
#: pysollib/wizardutil.py:252 #: pysollib/wizardutil.py:252
msgid "Any" msgid "Any"
@ -1782,6 +1835,9 @@ msgstr "W górę"
msgid "Down" msgid "Down"
msgstr "W dół" msgstr "W dół"
msgid "Same rank"
msgstr ""
#: pysollib/wizardutil.py:200 pysollib/wizardutil.py:259 #: pysollib/wizardutil.py:200 pysollib/wizardutil.py:259
msgid "Direction:" msgid "Direction:"
msgstr "Kierunek:" msgstr "Kierunek:"
@ -1828,6 +1884,9 @@ msgstr "W górę lub w dół wg wartości"
msgid "Up or down by same color" msgid "Up or down by same color"
msgstr "W górę lub w dół ta sama barwa" msgstr "W górę lub w dół ta sama barwa"
msgid "Up or down by any suit but the same"
msgstr ""
#: pysollib/wizardutil.py:238 #: pysollib/wizardutil.py:238
msgid "Yukon same suit" msgid "Yukon same suit"
msgstr "Yukon jeden kolor" msgstr "Yukon jeden kolor"
@ -1841,6 +1900,12 @@ msgstr "Yukon barwy naprzemiennie"
msgid "Yukon rank" msgid "Yukon rank"
msgstr "Yukon rank" msgstr "Yukon rank"
msgid "Yukon same color"
msgstr ""
msgid "Yukon any suit but the same"
msgstr ""
#: pysollib/wizardutil.py:263 pysollib/wizardutil.py:264 #: pysollib/wizardutil.py:263 pysollib/wizardutil.py:264
msgid "Sequence" msgid "Sequence"
msgstr "Sekwens" msgstr "Sekwens"
@ -1869,6 +1934,9 @@ msgstr "Trójkąt"
msgid "Rectangle" msgid "Rectangle"
msgstr "Prostokąt" msgstr "Prostokąt"
msgid "Pyramid"
msgstr ""
#: pysollib/wizardutil.py:308 #: pysollib/wizardutil.py:308
msgid "# of face-down cards dealt to the tableau pile:" msgid "# of face-down cards dealt to the tableau pile:"
msgstr "Liczba kart zakrytych rozłożonych na stół gry:" msgstr "Liczba kart zakrytych rozłożonych na stół gry:"

View file

@ -1167,6 +1167,12 @@ msgstr ""
msgid "Foundation. Build down by color." msgid "Foundation. Build down by color."
msgstr "" msgstr ""
msgid "Foundation. Build up in any suit but the same."
msgstr ""
msgid "Foundation. Build down in any suit but the same."
msgstr ""
#: pysollib/stack.py:2459 pysollib/games/golf.py:126 pysollib/games/golf.py:322 #: pysollib/stack.py:2459 pysollib/games/golf.py:126 pysollib/games/golf.py:322
msgid "Tableau. No building." msgid "Tableau. No building."
msgstr "" msgstr ""
@ -1241,6 +1247,21 @@ msgid ""
"can be moved as a unit." "can be moved as a unit."
msgstr "" msgstr ""
msgid ""
"Tableau. Build up regardless of suit. Sequences of cards in the same color "
"can be moved as a unit."
msgstr ""
msgid ""
"Tableau. Build up regardless of suit. Sequences of cards in any suit but the same "
"can be moved as a unit."
msgstr ""
msgid ""
"Tableau. Build down regardless of suit. Sequences of cards in any suit but the same "
"can be moved as a unit."
msgstr ""
#: pysollib/stack.py:2654 #: pysollib/stack.py:2654
msgid "" msgid ""
"Tableau. Build up by alternate color, can move any face-up cards regardless " "Tableau. Build up by alternate color, can move any face-up cards regardless "
@ -1270,6 +1291,24 @@ msgid ""
"sequence." "sequence."
msgstr "" msgstr ""
msgid ""
"Tableau. Build up by color, can move any face-up cards regardless of sequence."
msgstr ""
msgid ""
"Tableau. Build down by color, can move any face-up cards regardless of "
"sequence."
msgstr ""
msgid ""
"Tableau. Build up by any suit but the same, can move any face-up cards regardless of sequence."
msgstr ""
msgid ""
"Tableau. Build down by any suit but the same, can move any face-up cards regardless of "
"sequence."
msgstr ""
#: pysollib/stack.py:2694 pysollib/stack.py:2697 #: pysollib/stack.py:2694 pysollib/stack.py:2697
msgid "" msgid ""
"Tableau. Build up regardless of suit, can move any face-up cards regardless " "Tableau. Build up regardless of suit, can move any face-up cards regardless "
@ -1292,6 +1331,9 @@ msgstr ""
msgid "Tableau. Build up or down regardless of suit." msgid "Tableau. Build up or down regardless of suit."
msgstr "" msgstr ""
msgid "Tableau. Build up or down in any suit but the same."
msgstr ""
#: pysollib/stack.py:2874 #: pysollib/stack.py:2874
msgid "Waste." msgid "Waste."
msgstr "" msgstr ""
@ -1622,6 +1664,9 @@ msgstr ""
msgid "Shuffle during redeal:" msgid "Shuffle during redeal:"
msgstr "" msgstr ""
msgid "No building"
msgstr ""
#: pysollib/wizardutil.py:176 pysollib/wizardutil.py:184 #: pysollib/wizardutil.py:176 pysollib/wizardutil.py:184
#: pysollib/wizardutil.py:224 #: pysollib/wizardutil.py:224
msgid "Same suit" msgid "Same suit"
@ -1652,6 +1697,12 @@ msgstr ""
msgid "Spider rank" msgid "Spider rank"
msgstr "" msgstr ""
msgid "Spider same color"
msgstr ""
msgid "Spider any suit but the same"
msgstr ""
#: pysollib/wizardutil.py:191 pysollib/wizardutil.py:249 #: pysollib/wizardutil.py:191 pysollib/wizardutil.py:249
#: pysollib/wizardutil.py:252 #: pysollib/wizardutil.py:252
msgid "Any" msgid "Any"
@ -1671,6 +1722,9 @@ msgstr ""
msgid "Down" msgid "Down"
msgstr "" msgstr ""
msgid "Same rank"
msgstr ""
#: pysollib/wizardutil.py:200 pysollib/wizardutil.py:259 #: pysollib/wizardutil.py:200 pysollib/wizardutil.py:259
msgid "Direction:" msgid "Direction:"
msgstr "" msgstr ""
@ -1717,6 +1771,9 @@ msgstr ""
msgid "Up or down by same color" msgid "Up or down by same color"
msgstr "" msgstr ""
msgid "Up or down by any suit but the same"
msgstr ""
#: pysollib/wizardutil.py:238 #: pysollib/wizardutil.py:238
msgid "Yukon same suit" msgid "Yukon same suit"
msgstr "" msgstr ""
@ -1729,6 +1786,12 @@ msgstr ""
msgid "Yukon rank" msgid "Yukon rank"
msgstr "" msgstr ""
msgid "Yukon same color"
msgstr ""
msgid "Yukon any suit but the same"
msgstr ""
#: pysollib/wizardutil.py:263 pysollib/wizardutil.py:264 #: pysollib/wizardutil.py:263 pysollib/wizardutil.py:264
msgid "Sequence" msgid "Sequence"
msgstr "" msgstr ""
@ -1757,6 +1820,9 @@ msgstr ""
msgid "Rectangle" msgid "Rectangle"
msgstr "" msgstr ""
msgid "Pyramid"
msgstr ""
#: pysollib/wizardutil.py:308 #: pysollib/wizardutil.py:308
msgid "# of face-down cards dealt to the tableau pile:" msgid "# of face-down cards dealt to the tableau pile:"
msgstr "" msgstr ""

View file

@ -7,7 +7,7 @@ msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-12-10 10:19-0500\n" "POT-Creation-Date: 2021-12-10 10:19-0500\n"
"PO-Revision-Date: 2022-09-26 21:00-0400\n" "PO-Revision-Date: 2022-12-30 09:32-0500\n"
"Last-Translator: Skomoroh <skomoroh@gmail.com>\n" "Last-Translator: Skomoroh <skomoroh@gmail.com>\n"
"Language-Team: Russian <ru@li.org>\n" "Language-Team: Russian <ru@li.org>\n"
"Language: ru\n" "Language: ru\n"
@ -1250,6 +1250,12 @@ msgstr "Базовая ячейка. Складывать по возраста
msgid "Foundation. Build down by color." msgid "Foundation. Build down by color."
msgstr "Базовая ячейка. Складывать по убыванию в соответствии с цветом." msgstr "Базовая ячейка. Складывать по убыванию в соответствии с цветом."
msgid "Foundation. Build up in any suit but the same."
msgstr ""
msgid "Foundation. Build down in any suit but the same."
msgstr ""
#: pysollib/stack.py:2459 pysollib/games/golf.py:126 pysollib/games/golf.py:322 #: pysollib/stack.py:2459 pysollib/games/golf.py:126 pysollib/games/golf.py:322
msgid "Tableau. No building." msgid "Tableau. No building."
msgstr "Игровой стол. Без выкладывания." msgstr "Игровой стол. Без выкладывания."
@ -1332,6 +1338,21 @@ msgstr ""
"Игровой стол. Складывать по убыванию не считаясь с мастью. Можно перемещать " "Игровой стол. Складывать по убыванию не считаясь с мастью. Можно перемещать "
"серии карт одинаковой масти." "серии карт одинаковой масти."
msgid ""
"Tableau. Build up regardless of suit. Sequences of cards in the same color "
"can be moved as a unit."
msgstr ""
msgid ""
"Tableau. Build up regardless of suit. Sequences of cards in any suit but the "
"same can be moved as a unit."
msgstr ""
msgid ""
"Tableau. Build down regardless of suit. Sequences of cards in any suit but "
"the same can be moved as a unit."
msgstr ""
#: pysollib/stack.py:2654 #: pysollib/stack.py:2654
msgid "" msgid ""
"Tableau. Build up by alternate color, can move any face-up cards regardless " "Tableau. Build up by alternate color, can move any face-up cards regardless "
@ -1371,6 +1392,26 @@ msgstr ""
"Игровой стол. Складывать по убыванию в соответствии с мастью, можно " "Игровой стол. Складывать по убыванию в соответствии с мастью, можно "
"перемещать любую серию открытых карт." "перемещать любую серию открытых карт."
msgid ""
"Tableau. Build up by color, can move any face-up cards regardless of "
"sequence."
msgstr ""
msgid ""
"Tableau. Build down by color, can move any face-up cards regardless of "
"sequence."
msgstr ""
msgid ""
"Tableau. Build up by any suit but the same, can move any face-up cards "
"regardless of sequence."
msgstr ""
msgid ""
"Tableau. Build down by any suit but the same, can move any face-up cards "
"regardless of sequence."
msgstr ""
#: pysollib/stack.py:2694 pysollib/stack.py:2697 #: pysollib/stack.py:2694 pysollib/stack.py:2697
msgid "" msgid ""
"Tableau. Build up regardless of suit, can move any face-up cards regardless " "Tableau. Build up regardless of suit, can move any face-up cards regardless "
@ -1398,6 +1439,9 @@ msgid "Tableau. Build up or down regardless of suit."
msgstr "" msgstr ""
"Игровой стол. Складывать по возрастанию или убыванию не считаясь с мастью." "Игровой стол. Складывать по возрастанию или убыванию не считаясь с мастью."
msgid "Tableau. Build up or down in any suit but the same."
msgstr ""
#: pysollib/stack.py:2874 #: pysollib/stack.py:2874
msgid "Waste." msgid "Waste."
msgstr "Сброс." msgstr "Сброс."
@ -1728,6 +1772,9 @@ msgstr "Кол-во карт сдающихся на сброс:"
msgid "Shuffle during redeal:" msgid "Shuffle during redeal:"
msgstr "Тасовать при пересдаче:" msgstr "Тасовать при пересдаче:"
msgid "No building"
msgstr ""
#: pysollib/wizardutil.py:176 pysollib/wizardutil.py:184 #: pysollib/wizardutil.py:176 pysollib/wizardutil.py:184
#: pysollib/wizardutil.py:224 #: pysollib/wizardutil.py:224
msgid "Same suit" msgid "Same suit"
@ -1758,6 +1805,12 @@ msgstr "Паук чередуя цвет"
msgid "Spider rank" msgid "Spider rank"
msgstr "Паук в соответствии с достоинством" msgstr "Паук в соответствии с достоинством"
msgid "Spider same color"
msgstr ""
msgid "Spider any suit but the same"
msgstr ""
#: pysollib/wizardutil.py:191 pysollib/wizardutil.py:249 #: pysollib/wizardutil.py:191 pysollib/wizardutil.py:249
#: pysollib/wizardutil.py:252 #: pysollib/wizardutil.py:252
msgid "Any" msgid "Any"
@ -1777,6 +1830,9 @@ msgstr "Вверх"
msgid "Down" msgid "Down"
msgstr "Вниз" msgstr "Вниз"
msgid "Same rank"
msgstr ""
#: pysollib/wizardutil.py:200 pysollib/wizardutil.py:259 #: pysollib/wizardutil.py:200 pysollib/wizardutil.py:259
msgid "Direction:" msgid "Direction:"
msgstr "Направление:" msgstr "Направление:"
@ -1823,6 +1879,9 @@ msgstr "По возрастанию или убыванию в соответс
msgid "Up or down by same color" msgid "Up or down by same color"
msgstr "По возрастанию или убыванию в соответствии с цветом" msgstr "По возрастанию или убыванию в соответствии с цветом"
msgid "Up or down by any suit but the same"
msgstr ""
#: pysollib/wizardutil.py:238 #: pysollib/wizardutil.py:238
msgid "Yukon same suit" msgid "Yukon same suit"
msgstr "Юкон в соответствии с мастью" msgstr "Юкон в соответствии с мастью"
@ -1835,6 +1894,12 @@ msgstr "Юкон чередуя цвет"
msgid "Yukon rank" msgid "Yukon rank"
msgstr "Юкон в соответствии с достоинством" msgstr "Юкон в соответствии с достоинством"
msgid "Yukon same color"
msgstr ""
msgid "Yukon any suit but the same"
msgstr ""
#: pysollib/wizardutil.py:263 pysollib/wizardutil.py:264 #: pysollib/wizardutil.py:263 pysollib/wizardutil.py:264
msgid "Sequence" msgid "Sequence"
msgstr "Последовательность" msgstr "Последовательность"
@ -1863,6 +1928,9 @@ msgstr "Треугольник"
msgid "Rectangle" msgid "Rectangle"
msgstr "Прямоугольник" msgstr "Прямоугольник"
msgid "Pyramid"
msgstr ""
#: pysollib/wizardutil.py:308 #: pysollib/wizardutil.py:308
msgid "# of face-down cards dealt to the tableau pile:" msgid "# of face-down cards dealt to the tableau pile:"
msgstr "Кол-во закрытых карт сдающихся на ячейку игрового стола:" msgstr "Кол-во закрытых карт сдающихся на ячейку игрового стола:"

View file

@ -40,7 +40,11 @@ from pysollib.stack import \
SpiderTalonStack, \ SpiderTalonStack, \
Spider_AC_Foundation, \ Spider_AC_Foundation, \
Spider_AC_RowStack, \ Spider_AC_RowStack, \
Spider_BO_Foundation, \
Spider_BO_RowStack, \
Spider_RK_Foundation, \ Spider_RK_Foundation, \
Spider_SC_Foundation, \
Spider_SC_RowStack, \
Spider_SS_Foundation, \ Spider_SS_Foundation, \
Spider_SS_RowStack, \ Spider_SS_RowStack, \
StackWrapper, \ StackWrapper, \
@ -50,13 +54,16 @@ from pysollib.stack import \
SuperMoveSC_RowStack, \ SuperMoveSC_RowStack, \
SuperMoveSS_RowStack, \ SuperMoveSS_RowStack, \
UD_AC_RowStack, \ UD_AC_RowStack, \
UD_BO_RowStack, \
UD_RK_RowStack, \ UD_RK_RowStack, \
UD_SC_RowStack, \ UD_SC_RowStack, \
UD_SS_RowStack, \ UD_SS_RowStack, \
WasteStack, \ WasteStack, \
WasteTalonStack, \ WasteTalonStack, \
Yukon_AC_RowStack, \ Yukon_AC_RowStack, \
Yukon_BO_RowStack, \
Yukon_RK_RowStack, \ Yukon_RK_RowStack, \
Yukon_SC_RowStack, \
Yukon_SS_RowStack Yukon_SS_RowStack
from pysollib.util import ACE, ANY_RANK, ANY_SUIT, \ from pysollib.util import ACE, ANY_RANK, ANY_SUIT, \
KING, \ KING, \
@ -101,17 +108,23 @@ class CustomGame(Game):
# max_move # max_move
if s['found_type'] not in (Spider_SS_Foundation, if s['found_type'] not in (Spider_SS_Foundation,
Spider_AC_Foundation, Spider_AC_Foundation,
Spider_RK_Foundation,): Spider_RK_Foundation,
Spider_SC_Foundation,
Spider_BO_Foundation,):
kw['max_move'] = s['found_max_move'] kw['max_move'] = s['found_max_move']
# suit # suit
if s['found_type'] in (Spider_SS_Foundation, if s['found_type'] in (Spider_SS_Foundation,
Spider_AC_Foundation, Spider_AC_Foundation,
Spider_RK_Foundation,): Spider_RK_Foundation,
Spider_SC_Foundation,
Spider_BO_Foundation,):
kw['suit'] = ANY_SUIT kw['suit'] = ANY_SUIT
# fix dir and base_rank for Spider foundations # fix dir and base_rank for Spider foundations
if s['found_type'] in (Spider_SS_Foundation, if s['found_type'] in (Spider_SS_Foundation,
Spider_AC_Foundation, Spider_AC_Foundation,
Spider_RK_Foundation,): Spider_RK_Foundation,
Spider_SC_Foundation,
Spider_BO_Foundation,):
kw['dir'] = -kw['dir'] kw['dir'] = -kw['dir']
if s['found_base_card'] == KING: if s['found_base_card'] == KING:
kw['base_rank'] = ACE kw['base_rank'] = ACE
@ -138,7 +151,8 @@ class CustomGame(Game):
if s['rows_wrap']: if s['rows_wrap']:
kw['mod'] = 13 kw['mod'] = 13
if s['rows_type'] in (UD_SS_RowStack, UD_AC_RowStack, if s['rows_type'] in (UD_SS_RowStack, UD_AC_RowStack,
UD_RK_RowStack, UD_SC_RowStack): UD_RK_RowStack, UD_SC_RowStack,
UD_BO_RowStack):
kw['max_move'] = 1 kw['max_move'] = 1
# Super Move # Super Move
if s['rows_super_move'] and kw['max_move'] == 1: if s['rows_super_move'] and kw['max_move'] == 1:
@ -205,7 +219,8 @@ class CustomGame(Game):
# shallHighlightMatch # shallHighlightMatch
for c, f in ( for c, f in (
((Spider_AC_RowStack, Spider_SS_RowStack), ((Spider_AC_RowStack, Spider_SS_RowStack,
Spider_SC_RowStack, Spider_BO_RowStack),
(self._shallHighlightMatch_RK, (self._shallHighlightMatch_RK,
self._shallHighlightMatch_RKW)), self._shallHighlightMatch_RKW)),
((AC_RowStack, UD_AC_RowStack, ((AC_RowStack, UD_AC_RowStack,
@ -220,10 +235,12 @@ class CustomGame(Game):
Yukon_RK_RowStack, SuperMoveRK_RowStack), Yukon_RK_RowStack, SuperMoveRK_RowStack),
(self._shallHighlightMatch_RK, (self._shallHighlightMatch_RK,
self._shallHighlightMatch_RKW)), self._shallHighlightMatch_RKW)),
((SC_RowStack, UD_SC_RowStack, SuperMoveSC_RowStack), ((SC_RowStack, UD_SC_RowStack,
Yukon_SC_RowStack, SuperMoveSC_RowStack),
(self._shallHighlightMatch_SC, (self._shallHighlightMatch_SC,
self._shallHighlightMatch_SCW)), self._shallHighlightMatch_SCW)),
((BO_RowStack, SuperMoveBO_RowStack), ((BO_RowStack, UD_BO_RowStack,
Yukon_SC_RowStack, SuperMoveBO_RowStack),
(self._shallHighlightMatch_BO, (self._shallHighlightMatch_BO,
self._shallHighlightMatch_BOW)), self._shallHighlightMatch_BOW)),
): ):
@ -236,13 +253,17 @@ class CustomGame(Game):
# getQuickPlayScore # getQuickPlayScore
if s['rows_type'] in (Spider_AC_RowStack, if s['rows_type'] in (Spider_AC_RowStack,
Spider_SS_RowStack,): Spider_SS_RowStack,
Spider_BO_RowStack,
Spider_SC_RowStack,):
self.getQuickPlayScore = self._getSpiderQuickPlayScore self.getQuickPlayScore = self._getSpiderQuickPlayScore
# canDropCards # canDropCards
if s['found_type'] in (Spider_SS_Foundation, if s['found_type'] in (Spider_SS_Foundation,
Spider_AC_Foundation, Spider_AC_Foundation,
Spider_RK_Foundation,): Spider_RK_Foundation,
Spider_SC_Foundation,
Spider_BO_Foundation,):
for stack in self.s.rows: for stack in self.s.rows:
stack.canDropCards = stack.spiderCanDropCards stack.canDropCards = stack.spiderCanDropCards
@ -261,7 +282,9 @@ class CustomGame(Game):
# TODO # TODO
if s['rows_type'] in (Yukon_SS_RowStack, if s['rows_type'] in (Yukon_SS_RowStack,
Yukon_AC_RowStack, Yukon_AC_RowStack,
Yukon_RK_RowStack): Yukon_RK_RowStack,
Yukon_SC_RowStack,
Yukon_BO_RowStack,):
self.Hint_Class = Yukon_Hint self.Hint_Class = Yukon_Hint
def _shuffleHook(self, cards): def _shuffleHook(self, cards):
@ -270,7 +293,9 @@ class CustomGame(Game):
return cards return cards
if s['found_type'] in (Spider_SS_Foundation, if s['found_type'] in (Spider_SS_Foundation,
Spider_AC_Foundation, Spider_AC_Foundation,
Spider_RK_Foundation,): Spider_RK_Foundation,
Spider_SC_Foundation,
Spider_BO_Foundation,):
return cards return cards
base_card = s['found_base_card'] base_card = s['found_base_card']
if base_card == ANY_RANK: if base_card == ANY_RANK:
@ -334,7 +359,17 @@ class CustomGame(Game):
flip, frames, max_cards) flip, frames, max_cards)
face_down -= 1 face_down -= 1
max_rows -= 1 max_rows -= 1
elif s['deal_type'] == 'pyramid':
# pyramid
for i in range(1, len(self.s.rows)):
if max_rows <= 1:
break
flip = (face_down <= 0)
mc = max_cards - len(self.s.rows)
frames, max_cards = deal(self.s.rows[i:min(i+mc, -i)],
flip, frames, max_cards)
face_down -= 1
max_rows -= 1
else: else:
# rectangle # rectangle
for i in range(max_rows-1): for i in range(max_rows-1):

View file

@ -29,7 +29,6 @@ from pysollib.hint import FreeCellSolverWrapper
from pysollib.hint import SpiderType_Hint, YukonType_Hint from pysollib.hint import SpiderType_Hint, YukonType_Hint
from pysollib.layout import Layout from pysollib.layout import Layout
from pysollib.mfxutil import kwdefault from pysollib.mfxutil import kwdefault
from pysollib.mygettext import _
from pysollib.stack import \ from pysollib.stack import \
AC_FoundationStack, \ AC_FoundationStack, \
AC_RowStack, \ AC_RowStack, \
@ -46,6 +45,7 @@ from pysollib.stack import \
SS_RowStack, \ SS_RowStack, \
Spider_AC_Foundation, \ Spider_AC_Foundation, \
Spider_AC_RowStack, \ Spider_AC_RowStack, \
Spider_SC_RowStack, \
Spider_SS_Foundation, \ Spider_SS_Foundation, \
Spider_SS_RowStack, \ Spider_SS_RowStack, \
StackWrapper, \ StackWrapper, \
@ -1141,20 +1141,8 @@ class ScorpionII(Scorpion):
# * Tarantula # * Tarantula
# ************************************************************************ # ************************************************************************
class Tarantula_RowStack(Spider_RowStack):
def _isSequence(self, cards):
return isSameColorSequence(cards, self.cap.mod, self.cap.dir)
def _isAcceptableSequence(self, cards):
return isRankSequence(cards, self.cap.mod, self.cap.dir)
def getHelp(self):
return _('Tableau. Build down regardless of suit. Sequences of cards '
'in the same color can be moved as a unit.')
class Tarantula(Spider): class Tarantula(Spider):
RowStack_Class = Tarantula_RowStack RowStack_Class = Spider_SC_RowStack
def getQuickPlayScore(self, ncards, from_stack, to_stack): def getQuickPlayScore(self, ncards, from_stack, to_stack):
if to_stack.cards: if to_stack.cards:

View file

@ -2411,6 +2411,31 @@ class SC_FoundationStack(SS_FoundationStack):
return _('Foundation. Build by same rank.') return _('Foundation. Build by same rank.')
# A ButOwn_FoundationStack builds up in rank and any suit but the same.
# It is used in only a few games.
class BO_FoundationStack(SS_FoundationStack):
def __init__(self, x, y, game, suit, **cap):
kwdefault(cap, base_suit=suit)
SS_FoundationStack.__init__(self, x, y, game, ANY_SUIT, **cap)
def acceptsCards(self, from_stack, cards):
if not SS_FoundationStack.acceptsCards(self, from_stack, cards):
return False
if self.cards:
# check the suit
if cards[0].suit == self.cards[-1].suit:
return False
return True
def getHelp(self):
if self.cap.dir > 0:
return _('Foundation. Build up in any suit but the same.')
elif self.cap.dir < 0:
return _('Foundation. Build down in any suit but the same.')
else:
return _('Foundation. Build by same rank.')
# Spider-type foundations # Spider-type foundations
class Spider_SS_Foundation(AbstractFoundationStack): class Spider_SS_Foundation(AbstractFoundationStack):
def __init__(self, x, y, game, suit=ANY_SUIT, **cap): def __init__(self, x, y, game, suit=ANY_SUIT, **cap):
@ -2433,6 +2458,14 @@ class Spider_AC_Foundation(Spider_SS_Foundation):
return isAlternateColorSequence(cards, self.cap.mod, self.cap.dir) return isAlternateColorSequence(cards, self.cap.mod, self.cap.dir)
class Spider_SC_Foundation(Spider_SS_Foundation):
def acceptsCards(self, from_stack, cards):
if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
return False
# now check the cards
return isSameColorSequence(cards, self.cap.mod, self.cap.dir)
class Spider_RK_Foundation(Spider_SS_Foundation): class Spider_RK_Foundation(Spider_SS_Foundation):
def acceptsCards(self, from_stack, cards): def acceptsCards(self, from_stack, cards):
if not AbstractFoundationStack.acceptsCards(self, from_stack, cards): if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
@ -2441,6 +2474,13 @@ class Spider_RK_Foundation(Spider_SS_Foundation):
return isRankSequence(cards, self.cap.mod, self.cap.dir) return isRankSequence(cards, self.cap.mod, self.cap.dir)
class Spider_BO_Foundation(Spider_SS_Foundation):
def acceptsCards(self, from_stack, cards):
if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
return False
# now check the cards
return isAnySuitButOwnSequence(cards, self.cap.mod, self.cap.dir)
# ************************************************************************ # ************************************************************************
# * Abstract classes for row stacks. # * Abstract classes for row stacks.
# ************************************************************************ # ************************************************************************
@ -2657,6 +2697,44 @@ class Spider_SS_RowStack(SS_RowStack):
return _('Tableau. Build by same rank.') return _('Tableau. Build by same rank.')
# A Spider_SameColor_RowStack builds down by rank and color,
# but accepts sequences that match by rank only.
class Spider_SC_RowStack(SC_RowStack):
def _isAcceptableSequence(self, cards):
return isRankSequence(cards, self.cap.mod, self.cap.dir)
def getHelp(self):
if self.cap.dir > 0:
return _('Tableau. Build up regardless of suit. '
'Sequences of cards in the same color can be moved '
'as a unit.')
elif self.cap.dir < 0:
return _('Tableau. Build down regardless of suit. '
'Sequences of cards in the same color can be moved '
'as a unit.')
else:
return _('Tableau. Build by same rank.')
# A Spider_ButOwn_RowStack builds down by rank and any suit but own,
# but accepts sequences that match by rank only.
class Spider_BO_RowStack(BO_RowStack):
def _isAcceptableSequence(self, cards):
return isRankSequence(cards, self.cap.mod, self.cap.dir)
def getHelp(self):
if self.cap.dir > 0:
return _('Tableau. Build up regardless of suit. '
'Sequences of cards in any suit but the same '
'can be moved as a unit.')
elif self.cap.dir < 0:
return _('Tableau. Build down regardless of suit. '
'Sequences of cards in any suit but the same '
'can be moved as a unit.')
else:
return _('Tableau. Build by same rank.')
# A Yukon_AlternateColor_RowStack builds down by rank and alternate color, # A Yukon_AlternateColor_RowStack builds down by rank and alternate color,
# but can move any face-up cards regardless of sequence. # but can move any face-up cards regardless of sequence.
class Yukon_AC_RowStack(BasicRowStack): class Yukon_AC_RowStack(BasicRowStack):
@ -2712,6 +2790,25 @@ class Yukon_SS_RowStack(Yukon_AC_RowStack):
'face-up cards regardless of sequence.') 'face-up cards regardless of sequence.')
# A Yukon_SameColor_RowStack builds down by rank and color,
# but can move any face-up cards regardless of sequence.
class Yukon_SC_RowStack(Yukon_AC_RowStack):
def _isYukonSequence(self, c1, c2):
return ((c1.rank + self.cap.dir) % self.cap.mod == c2.rank and
c1.color == c2.color)
def getHelp(self):
if self.cap.dir > 0:
return _('Tableau. Build up by color, can move any face-up cards '
'regardless of sequence.')
elif self.cap.dir < 0:
return _('Tableau. Build down by color, can move any '
'face-up cards regardless of sequence.')
else:
return _('Tableau. Build by same rank, can move any '
'face-up cards regardless of sequence.')
# A Yukon_Rank_RowStack builds down by rank # A Yukon_Rank_RowStack builds down by rank
# but can move any face-up cards regardless of sequence. # but can move any face-up cards regardless of sequence.
class Yukon_RK_RowStack(Yukon_AC_RowStack): class Yukon_RK_RowStack(Yukon_AC_RowStack):
@ -2729,6 +2826,25 @@ class Yukon_RK_RowStack(Yukon_AC_RowStack):
return _('Tableau. Build by same rank, can move any ' return _('Tableau. Build by same rank, can move any '
'face-up cards regardless of sequence.') 'face-up cards regardless of sequence.')
# A Yukon_ButOwn_RowStack builds down by rank and suit,
# but can move any face-up cards regardless of sequence.
class Yukon_BO_RowStack(Yukon_AC_RowStack):
def _isYukonSequence(self, c1, c2):
return ((c1.rank + self.cap.dir) % self.cap.mod == c2.rank and
c1.suit != c2.suit)
def getHelp(self):
if self.cap.dir > 0:
return _('Tableau. Build up by any suit but the same, '
'can move any face-up cards regardless of sequence.')
elif self.cap.dir < 0:
return _('Tableau. Build down by any suit but the same, '
'can move any face-up cards regardless of sequence.')
else:
return _('Tableau. Build by same rank, can move any '
'face-up cards regardless of sequence.')
# #
# King-versions of some of the above stacks: they accepts only Kings or # King-versions of some of the above stacks: they accepts only Kings or
# sequences starting with a King as base_rank cards (i.e. when empty). # sequences starting with a King as base_rank cards (i.e. when empty).
@ -2809,6 +2925,20 @@ class UD_RK_RowStack(SequenceRowStack):
return _('Tableau. Build up or down regardless of suit.') return _('Tableau. Build up or down regardless of suit.')
# up or down by rank ignoring suit
class UD_BO_RowStack(SequenceRowStack):
def __init__(self, x, y, game, **cap):
kwdefault(cap, max_move=1, max_accept=1)
SequenceRowStack.__init__(self, x, y, game, **cap)
def _isSequence(self, cards):
return (isAnySuitButOwnSequence(cards, self.cap.mod, 1) or
isAnySuitButOwnSequence(cards, self.cap.mod, -1))
def getHelp(self):
return _('Tableau. Build up or down in any suit but the same.')
# To simplify playing we also consider the number of free rows. # To simplify playing we also consider the number of free rows.
# See also the "SuperMove" section in the FreeCell FAQ. # See also the "SuperMove" section in the FreeCell FAQ.
class SuperMoveStack_StackMethods: class SuperMoveStack_StackMethods:

View file

@ -28,6 +28,8 @@ from pysollib.layout import Layout
from pysollib.mygettext import _, n_ from pysollib.mygettext import _, n_
from pysollib.stack import AC_FoundationStack, \ from pysollib.stack import AC_FoundationStack, \
AC_RowStack, \ AC_RowStack, \
BasicRowStack, \
BO_FoundationStack, \
BO_RowStack, \ BO_RowStack, \
DealReserveRedealTalonStack, \ DealReserveRedealTalonStack, \
DealRowRedealTalonStack, \ DealRowRedealTalonStack, \
@ -42,16 +44,23 @@ from pysollib.stack import AC_FoundationStack, \
SpiderTalonStack, \ SpiderTalonStack, \
Spider_AC_Foundation, \ Spider_AC_Foundation, \
Spider_AC_RowStack, \ Spider_AC_RowStack, \
Spider_BO_Foundation, \
Spider_BO_RowStack, \
Spider_RK_Foundation, \ Spider_RK_Foundation, \
Spider_SC_Foundation, \
Spider_SC_RowStack, \
Spider_SS_Foundation, \ Spider_SS_Foundation, \
Spider_SS_RowStack, \ Spider_SS_RowStack, \
UD_AC_RowStack, \ UD_AC_RowStack, \
UD_BO_RowStack, \
UD_RK_RowStack, \ UD_RK_RowStack, \
UD_SC_RowStack, \ UD_SC_RowStack, \
UD_SS_RowStack, \ UD_SS_RowStack, \
WasteTalonStack, \ WasteTalonStack, \
Yukon_AC_RowStack, \ Yukon_AC_RowStack, \
Yukon_BO_RowStack, \
Yukon_RK_RowStack, \ Yukon_RK_RowStack, \
Yukon_SC_RowStack, \
Yukon_SS_RowStack Yukon_SS_RowStack
from pysollib.util import ACE, ANY_RANK, KING, NO_RANK, UNLIMITED_MOVES from pysollib.util import ACE, ANY_RANK, KING, NO_RANK, UNLIMITED_MOVES
from pysollib.wizardpresets import presets from pysollib.wizardpresets import presets
@ -173,13 +182,16 @@ TalonShuffle = WizSetting(
widget='check', widget='check',
) )
FoundType = WizSetting( FoundType = WizSetting(
values_map=((n_('Same suit'), SS_FoundationStack), values_map=((n_('Same suit'), SS_FoundationStack),
(n_('Alternate color'), AC_FoundationStack), (n_('Alternate color'), AC_FoundationStack),
(n_('Same color'), SC_FoundationStack), (n_('Same color'), SC_FoundationStack),
(n_('Rank'), RK_FoundationStack), (n_('Rank'), RK_FoundationStack),
(n_('Spider same suit'), Spider_SS_Foundation), (n_('Any suit but the same'), BO_FoundationStack),
(n_('Spider alternate color'), Spider_AC_Foundation), (n_('Spider same suit'), Spider_SS_Foundation),
(n_('Spider rank'), Spider_RK_Foundation), (n_('Spider alternate color'), Spider_AC_Foundation),
(n_('Spider same color'), Spider_SC_Foundation),
(n_('Spider rank'), Spider_RK_Foundation),
(n_('Spider any suit but the same'), Spider_BO_Foundation),
), ),
default=n_('Same suit'), default=n_('Same suit'),
label=_('Type:'), label=_('Type:'),
@ -221,23 +233,30 @@ RowsNum = WizSetting(
var_name='rows_num', var_name='rows_num',
) )
RowsType = WizSetting( RowsType = WizSetting(
values_map=((n_('Same suit'), SS_RowStack), values_map=((n_('No building'), BasicRowStack),
(n_('Alternate color'), AC_RowStack),
(n_('Same color'), SC_RowStack),
(n_('Rank'), RK_RowStack),
(n_('Any suit but the same'), BO_RowStack),
(n_('Up or down by same suit'), UD_SS_RowStack), (n_('Same suit'), SS_RowStack),
(n_('Up or down by alternate color'), UD_AC_RowStack), (n_('Alternate color'), AC_RowStack),
(n_('Up or down by rank'), UD_RK_RowStack), (n_('Same color'), SC_RowStack),
(n_('Up or down by same color'), UD_SC_RowStack), (n_('Rank'), RK_RowStack),
(n_('Any suit but the same'), BO_RowStack),
(n_('Spider same suit'), Spider_SS_RowStack), (n_('Up or down by same suit'), UD_SS_RowStack),
(n_('Spider alternate color'), Spider_AC_RowStack), (n_('Up or down by alternate color'), UD_AC_RowStack),
(n_('Up or down by same color'), UD_SC_RowStack),
(n_('Up or down by rank'), UD_RK_RowStack),
(n_('Up or down by any suit but the same'), UD_BO_RowStack),
(n_('Yukon same suit'), Yukon_SS_RowStack), (n_('Spider same suit'), Spider_SS_RowStack),
(n_('Yukon alternate color'), Yukon_AC_RowStack), (n_('Spider alternate color'), Spider_AC_RowStack),
(n_('Yukon rank'), Yukon_RK_RowStack), (n_('Spider same color'), Spider_SC_RowStack),
(n_('Spider any suit but the same'), Spider_BO_RowStack),
(n_('Yukon same suit'), Yukon_SS_RowStack),
(n_('Yukon alternate color'), Yukon_AC_RowStack),
(n_('Yukon same color'), Yukon_SC_RowStack),
(n_('Yukon rank'), Yukon_RK_RowStack),
(n_('Yukon any suit but the same'), Yukon_BO_RowStack),
), ),
default=n_('Alternate color'), default=n_('Alternate color'),
label=_('Type:'), label=_('Type:'),
@ -254,7 +273,7 @@ RowsBaseCard = WizSetting(
var_name='rows_base_card', var_name='rows_base_card',
) )
RowsDir = WizSetting( RowsDir = WizSetting(
values_map=((n_('Up'), 1), (n_('Down'), -1)), values_map=((n_('Up'), 1), (n_('Down'), -1), (n_('Same rank'), 0)),
default=n_('Down'), default=n_('Down'),
label=_('Direction:'), label=_('Direction:'),
var_name='rows_dir', var_name='rows_dir',
@ -296,6 +315,7 @@ ReservesMaxAccept = WizSetting(
DealType = WizSetting( DealType = WizSetting(
values_map=((n_('Triangle'), 'triangle'), values_map=((n_('Triangle'), 'triangle'),
(n_('Rectangle'), 'rectangle'), (n_('Rectangle'), 'rectangle'),
(n_('Pyramid'), 'pyramid')
), ),
default=n_('Rectangle'), default=n_('Rectangle'),
label=_('Type:'), label=_('Type:'),