diff --git a/html-src/rules/sevastopol.html b/html-src/rules/sevastopol.html new file mode 100644 index 000000000..df53ca819 --- /dev/null +++ b/html-src/rules/sevastopol.html @@ -0,0 +1,18 @@ +
+Spider type. 1 deck. No redeal. + +
+Group all the cards in sets of 13 cards in descending sequence +by suit from King to Ace and move such sets to the foundations. + +
+Like Kiev, but four of the tableau piles +are only dealt three cards. + +
+Sevastopol was invented by Jan Wolter, and first appeared in his +app Politaire. diff --git a/pysollib/gamedb.py b/pysollib/gamedb.py index c3604d1d9..820ad2cf9 100644 --- a/pysollib/gamedb.py +++ b/pysollib/gamedb.py @@ -516,7 +516,7 @@ def _callback(gi, gt=game_type): 800, 814, 820, 825, 889, 911, 926, 941)), ("Mary Whitmore Jones", (421, 624,)), - ("Jan Wolter", (917, 939, 946,)), + ("Jan Wolter", (917, 939, 946, 963,)), ) GAMES_BY_PYSOL_VERSION = ( @@ -604,7 +604,7 @@ def _callback(gi, gt=game_type): tuple(range(13168, 13170)) + tuple(range(18000, 18005)) + tuple(range(19000, 19012)) + tuple(range(22303, 22311)) + tuple(range(22353, 22361))), - ('dev', tuple(range(961, 963))), + ('dev', tuple(range(961, 964))), ) # deprecated - the correct way is to or a GI.GT_XXX flag diff --git a/pysollib/games/yukon.py b/pysollib/games/yukon.py index 0d4278cd2..75087260e 100644 --- a/pysollib/games/yukon.py +++ b/pysollib/games/yukon.py @@ -570,8 +570,6 @@ def startGame(self): # ************************************************************************ # * Russian Spider # * Double Russian Spider -# * Kiev -# * Dnieper # ************************************************************************ class RussianSpider_RowStack(Yukon_SS_RowStack): # Spider_SS_RowStack @@ -600,6 +598,12 @@ def startGame(self): DoubleRussianSolitaire.startGame(self) +# ************************************************************************ +# * Kiev +# * Dnieper +# * Sevastopol +# ************************************************************************ + class Kiev(RussianSpider): RowStack_Class = RussianSpider_RowStack Layout_Method = staticmethod(Layout.klondikeLayout) @@ -618,6 +622,17 @@ class Dnieper(Kiev): RowStack_Class = StackWrapper(RussianSpider_RowStack, mod=13) +class Sevastopol(Kiev): + + def startGame(self): + for i in range(2): + self.s.talon.dealRow(flip=0, frames=0) + r = self.s.rows + rows = (r[1], r[3], r[5]) + self.s.talon.dealRow(rows=rows, flip=0, frames=0) + self._startAndDealRow() + + # ************************************************************************ # * Brisbane # ************************************************************************ @@ -916,3 +931,5 @@ def startGame(self): GI.GT_YUKON, 1, 0, GI.SL_BALANCED)) registerGame(GameInfo(942, QuadrupleYukon, "Quadruple Yukon", GI.GT_YUKON, 4, 0, GI.SL_BALANCED)) +registerGame(GameInfo(963, Sevastopol, "Sevastopol", + GI.GT_SPIDER, 1, 0, GI.SL_BALANCED))