diff --git a/contrib/customize_cardset.asciidoc b/contrib/customize_cardset.asciidoc index cc1d5108..b85d5023 100644 --- a/contrib/customize_cardset.asciidoc +++ b/contrib/customize_cardset.asciidoc @@ -43,6 +43,7 @@ Cardsets Types: * Trumps Only = 9 * Matching = 10 * Puzzle = 11 +* Ishido = 12 *$C:* The number of cards in the cardset, generally 42, 48, 52, 68, 78, 96 or 120 @@ -66,6 +67,7 @@ Cardsets Styles: * Hanafuda = 12 * Hex A Deck = 29 * Holiday = 13 +* Ishido = 34 * Mahjongg = 28 * Matching = 32 * Movies = 14 diff --git a/data/images/cards/bottoms/ishido/bottom02-n.png b/data/images/cards/bottoms/ishido/bottom02-n.png new file mode 100644 index 00000000..732d7676 Binary files /dev/null and b/data/images/cards/bottoms/ishido/bottom02-n.png differ diff --git a/data/images/cards/bottoms/ishido/bottom02.png b/data/images/cards/bottoms/ishido/bottom02.png new file mode 100644 index 00000000..732d7676 Binary files /dev/null and b/data/images/cards/bottoms/ishido/bottom02.png differ diff --git a/data/images/cards/finder/ishido/01a.gif b/data/images/cards/finder/ishido/01a.gif new file mode 100644 index 00000000..93c1d926 Binary files /dev/null and b/data/images/cards/finder/ishido/01a.gif differ diff --git a/data/images/cards/finder/ishido/01a.png b/data/images/cards/finder/ishido/01a.png new file mode 100644 index 00000000..732a6d09 Binary files /dev/null and b/data/images/cards/finder/ishido/01a.png differ diff --git a/data/images/cards/finder/ishido/01b.gif b/data/images/cards/finder/ishido/01b.gif new file mode 100644 index 00000000..8d5c48fc Binary files /dev/null and b/data/images/cards/finder/ishido/01b.gif differ diff --git a/data/images/cards/finder/ishido/01b.png b/data/images/cards/finder/ishido/01b.png new file mode 100644 index 00000000..dc8c6c39 Binary files /dev/null and b/data/images/cards/finder/ishido/01b.png differ diff --git a/data/images/cards/finder/ishido/01c.gif b/data/images/cards/finder/ishido/01c.gif new file mode 100644 index 00000000..ba52617e Binary files /dev/null and b/data/images/cards/finder/ishido/01c.gif differ diff --git a/data/images/cards/finder/ishido/01c.png b/data/images/cards/finder/ishido/01c.png new file mode 100644 index 00000000..33803d38 Binary files /dev/null and b/data/images/cards/finder/ishido/01c.png differ diff --git a/data/images/cards/finder/ishido/01d.gif b/data/images/cards/finder/ishido/01d.gif new file mode 100644 index 00000000..79cd668f Binary files /dev/null and b/data/images/cards/finder/ishido/01d.gif differ diff --git a/data/images/cards/finder/ishido/01d.png b/data/images/cards/finder/ishido/01d.png new file mode 100644 index 00000000..a2ae552e Binary files /dev/null and b/data/images/cards/finder/ishido/01d.png differ diff --git a/data/images/cards/finder/ishido/01e.gif b/data/images/cards/finder/ishido/01e.gif new file mode 100644 index 00000000..530acede Binary files /dev/null and b/data/images/cards/finder/ishido/01e.gif differ diff --git a/data/images/cards/finder/ishido/01e.png b/data/images/cards/finder/ishido/01e.png new file mode 100644 index 00000000..a5c62a5f Binary files /dev/null and b/data/images/cards/finder/ishido/01e.png differ diff --git a/data/images/cards/finder/ishido/01f.gif b/data/images/cards/finder/ishido/01f.gif new file mode 100644 index 00000000..1fdb003c Binary files /dev/null and b/data/images/cards/finder/ishido/01f.gif differ diff --git a/data/images/cards/finder/ishido/01f.png b/data/images/cards/finder/ishido/01f.png new file mode 100644 index 00000000..0f5dc64c Binary files /dev/null and b/data/images/cards/finder/ishido/01f.png differ diff --git a/data/images/cards/finder/ishido/02a.gif b/data/images/cards/finder/ishido/02a.gif new file mode 100644 index 00000000..75f09e71 Binary files /dev/null and b/data/images/cards/finder/ishido/02a.gif differ diff --git a/data/images/cards/finder/ishido/02a.png b/data/images/cards/finder/ishido/02a.png new file mode 100644 index 00000000..851b107e Binary files /dev/null and b/data/images/cards/finder/ishido/02a.png differ diff --git a/data/images/cards/finder/ishido/02b.gif b/data/images/cards/finder/ishido/02b.gif new file mode 100644 index 00000000..ecc804a0 Binary files /dev/null and b/data/images/cards/finder/ishido/02b.gif differ diff --git a/data/images/cards/finder/ishido/02b.png b/data/images/cards/finder/ishido/02b.png new file mode 100644 index 00000000..5ac589b6 Binary files /dev/null and b/data/images/cards/finder/ishido/02b.png differ diff --git a/data/images/cards/finder/ishido/02c.gif b/data/images/cards/finder/ishido/02c.gif new file mode 100644 index 00000000..24fd15d2 Binary files /dev/null and b/data/images/cards/finder/ishido/02c.gif differ diff --git a/data/images/cards/finder/ishido/02c.png b/data/images/cards/finder/ishido/02c.png new file mode 100644 index 00000000..4ddd87c3 Binary files /dev/null and b/data/images/cards/finder/ishido/02c.png differ diff --git a/data/images/cards/finder/ishido/02d.gif b/data/images/cards/finder/ishido/02d.gif new file mode 100644 index 00000000..37e01b10 Binary files /dev/null and b/data/images/cards/finder/ishido/02d.gif differ diff --git a/data/images/cards/finder/ishido/02d.png b/data/images/cards/finder/ishido/02d.png new file mode 100644 index 00000000..a091494c Binary files /dev/null and b/data/images/cards/finder/ishido/02d.png differ diff --git a/data/images/cards/finder/ishido/02e.gif b/data/images/cards/finder/ishido/02e.gif new file mode 100644 index 00000000..62ca8eba Binary files /dev/null and b/data/images/cards/finder/ishido/02e.gif differ diff --git a/data/images/cards/finder/ishido/02e.png b/data/images/cards/finder/ishido/02e.png new file mode 100644 index 00000000..d8661465 Binary files /dev/null and b/data/images/cards/finder/ishido/02e.png differ diff --git a/data/images/cards/finder/ishido/02f.gif b/data/images/cards/finder/ishido/02f.gif new file mode 100644 index 00000000..5e059223 Binary files /dev/null and b/data/images/cards/finder/ishido/02f.gif differ diff --git a/data/images/cards/finder/ishido/02f.png b/data/images/cards/finder/ishido/02f.png new file mode 100644 index 00000000..86a55cf3 Binary files /dev/null and b/data/images/cards/finder/ishido/02f.png differ diff --git a/data/images/cards/finder/ishido/03a.gif b/data/images/cards/finder/ishido/03a.gif new file mode 100644 index 00000000..e91f9d9e Binary files /dev/null and b/data/images/cards/finder/ishido/03a.gif differ diff --git a/data/images/cards/finder/ishido/03a.png b/data/images/cards/finder/ishido/03a.png new file mode 100644 index 00000000..bfc60551 Binary files /dev/null and b/data/images/cards/finder/ishido/03a.png differ diff --git a/data/images/cards/finder/ishido/03b.gif b/data/images/cards/finder/ishido/03b.gif new file mode 100644 index 00000000..05c6bc32 Binary files /dev/null and b/data/images/cards/finder/ishido/03b.gif differ diff --git a/data/images/cards/finder/ishido/03b.png b/data/images/cards/finder/ishido/03b.png new file mode 100644 index 00000000..445a90bd Binary files /dev/null and b/data/images/cards/finder/ishido/03b.png differ diff --git a/data/images/cards/finder/ishido/03c.gif b/data/images/cards/finder/ishido/03c.gif new file mode 100644 index 00000000..1a8cef12 Binary files /dev/null and b/data/images/cards/finder/ishido/03c.gif differ diff --git a/data/images/cards/finder/ishido/03c.png b/data/images/cards/finder/ishido/03c.png new file mode 100644 index 00000000..5f9725d8 Binary files /dev/null and b/data/images/cards/finder/ishido/03c.png differ diff --git a/data/images/cards/finder/ishido/03d.gif b/data/images/cards/finder/ishido/03d.gif new file mode 100644 index 00000000..2c3dc53b Binary files /dev/null and b/data/images/cards/finder/ishido/03d.gif differ diff --git a/data/images/cards/finder/ishido/03d.png b/data/images/cards/finder/ishido/03d.png new file mode 100644 index 00000000..b0351a87 Binary files /dev/null and b/data/images/cards/finder/ishido/03d.png differ diff --git a/data/images/cards/finder/ishido/03e.gif b/data/images/cards/finder/ishido/03e.gif new file mode 100644 index 00000000..184f163a Binary files /dev/null and b/data/images/cards/finder/ishido/03e.gif differ diff --git a/data/images/cards/finder/ishido/03e.png b/data/images/cards/finder/ishido/03e.png new file mode 100644 index 00000000..36cc5554 Binary files /dev/null and b/data/images/cards/finder/ishido/03e.png differ diff --git a/data/images/cards/finder/ishido/03f.gif b/data/images/cards/finder/ishido/03f.gif new file mode 100644 index 00000000..b0b9b939 Binary files /dev/null and b/data/images/cards/finder/ishido/03f.gif differ diff --git a/data/images/cards/finder/ishido/03f.png b/data/images/cards/finder/ishido/03f.png new file mode 100644 index 00000000..39be97ff Binary files /dev/null and b/data/images/cards/finder/ishido/03f.png differ diff --git a/data/images/cards/finder/ishido/04a.gif b/data/images/cards/finder/ishido/04a.gif new file mode 100644 index 00000000..969a38aa Binary files /dev/null and b/data/images/cards/finder/ishido/04a.gif differ diff --git a/data/images/cards/finder/ishido/04a.png b/data/images/cards/finder/ishido/04a.png new file mode 100644 index 00000000..a77534d4 Binary files /dev/null and b/data/images/cards/finder/ishido/04a.png differ diff --git a/data/images/cards/finder/ishido/04b.gif b/data/images/cards/finder/ishido/04b.gif new file mode 100644 index 00000000..9ccbc30e Binary files /dev/null and b/data/images/cards/finder/ishido/04b.gif differ diff --git a/data/images/cards/finder/ishido/04b.png b/data/images/cards/finder/ishido/04b.png new file mode 100644 index 00000000..1368af22 Binary files /dev/null and b/data/images/cards/finder/ishido/04b.png differ diff --git a/data/images/cards/finder/ishido/04c.gif b/data/images/cards/finder/ishido/04c.gif new file mode 100644 index 00000000..b22719bc Binary files /dev/null and b/data/images/cards/finder/ishido/04c.gif differ diff --git a/data/images/cards/finder/ishido/04c.png b/data/images/cards/finder/ishido/04c.png new file mode 100644 index 00000000..01956347 Binary files /dev/null and b/data/images/cards/finder/ishido/04c.png differ diff --git a/data/images/cards/finder/ishido/04d.gif b/data/images/cards/finder/ishido/04d.gif new file mode 100644 index 00000000..b2e60303 Binary files /dev/null and b/data/images/cards/finder/ishido/04d.gif differ diff --git a/data/images/cards/finder/ishido/04d.png b/data/images/cards/finder/ishido/04d.png new file mode 100644 index 00000000..bc4c93de Binary files /dev/null and b/data/images/cards/finder/ishido/04d.png differ diff --git a/data/images/cards/finder/ishido/04e.gif b/data/images/cards/finder/ishido/04e.gif new file mode 100644 index 00000000..b2a299ca Binary files /dev/null and b/data/images/cards/finder/ishido/04e.gif differ diff --git a/data/images/cards/finder/ishido/04e.png b/data/images/cards/finder/ishido/04e.png new file mode 100644 index 00000000..9cde5a16 Binary files /dev/null and b/data/images/cards/finder/ishido/04e.png differ diff --git a/data/images/cards/finder/ishido/04f.gif b/data/images/cards/finder/ishido/04f.gif new file mode 100644 index 00000000..0715c844 Binary files /dev/null and b/data/images/cards/finder/ishido/04f.gif differ diff --git a/data/images/cards/finder/ishido/04f.png b/data/images/cards/finder/ishido/04f.png new file mode 100644 index 00000000..2881007b Binary files /dev/null and b/data/images/cards/finder/ishido/04f.png differ diff --git a/data/images/cards/finder/ishido/05a.gif b/data/images/cards/finder/ishido/05a.gif new file mode 100644 index 00000000..9ae188b5 Binary files /dev/null and b/data/images/cards/finder/ishido/05a.gif differ diff --git a/data/images/cards/finder/ishido/05a.png b/data/images/cards/finder/ishido/05a.png new file mode 100644 index 00000000..5d50a4d1 Binary files /dev/null and b/data/images/cards/finder/ishido/05a.png differ diff --git a/data/images/cards/finder/ishido/05b.gif b/data/images/cards/finder/ishido/05b.gif new file mode 100644 index 00000000..6209cd9d Binary files /dev/null and b/data/images/cards/finder/ishido/05b.gif differ diff --git a/data/images/cards/finder/ishido/05b.png b/data/images/cards/finder/ishido/05b.png new file mode 100644 index 00000000..558c7bd9 Binary files /dev/null and b/data/images/cards/finder/ishido/05b.png differ diff --git a/data/images/cards/finder/ishido/05c.gif b/data/images/cards/finder/ishido/05c.gif new file mode 100644 index 00000000..4da27c88 Binary files /dev/null and b/data/images/cards/finder/ishido/05c.gif differ diff --git a/data/images/cards/finder/ishido/05c.png b/data/images/cards/finder/ishido/05c.png new file mode 100644 index 00000000..65e81e0b Binary files /dev/null and b/data/images/cards/finder/ishido/05c.png differ diff --git a/data/images/cards/finder/ishido/05d.gif b/data/images/cards/finder/ishido/05d.gif new file mode 100644 index 00000000..1138fa8f Binary files /dev/null and b/data/images/cards/finder/ishido/05d.gif differ diff --git a/data/images/cards/finder/ishido/05d.png b/data/images/cards/finder/ishido/05d.png new file mode 100644 index 00000000..2ea20076 Binary files /dev/null and b/data/images/cards/finder/ishido/05d.png differ diff --git a/data/images/cards/finder/ishido/05e.gif b/data/images/cards/finder/ishido/05e.gif new file mode 100644 index 00000000..b65ac246 Binary files /dev/null and b/data/images/cards/finder/ishido/05e.gif differ diff --git a/data/images/cards/finder/ishido/05e.png b/data/images/cards/finder/ishido/05e.png new file mode 100644 index 00000000..c4597fe7 Binary files /dev/null and b/data/images/cards/finder/ishido/05e.png differ diff --git a/data/images/cards/finder/ishido/05f.gif b/data/images/cards/finder/ishido/05f.gif new file mode 100644 index 00000000..77f1c89b Binary files /dev/null and b/data/images/cards/finder/ishido/05f.gif differ diff --git a/data/images/cards/finder/ishido/05f.png b/data/images/cards/finder/ishido/05f.png new file mode 100644 index 00000000..88fd0171 Binary files /dev/null and b/data/images/cards/finder/ishido/05f.png differ diff --git a/data/images/cards/finder/ishido/06a.gif b/data/images/cards/finder/ishido/06a.gif new file mode 100644 index 00000000..7b73785a Binary files /dev/null and b/data/images/cards/finder/ishido/06a.gif differ diff --git a/data/images/cards/finder/ishido/06a.png b/data/images/cards/finder/ishido/06a.png new file mode 100644 index 00000000..e3bb43ba Binary files /dev/null and b/data/images/cards/finder/ishido/06a.png differ diff --git a/data/images/cards/finder/ishido/06b.gif b/data/images/cards/finder/ishido/06b.gif new file mode 100644 index 00000000..d30cd4ed Binary files /dev/null and b/data/images/cards/finder/ishido/06b.gif differ diff --git a/data/images/cards/finder/ishido/06b.png b/data/images/cards/finder/ishido/06b.png new file mode 100644 index 00000000..687c5a50 Binary files /dev/null and b/data/images/cards/finder/ishido/06b.png differ diff --git a/data/images/cards/finder/ishido/06c.gif b/data/images/cards/finder/ishido/06c.gif new file mode 100644 index 00000000..c7dacc90 Binary files /dev/null and b/data/images/cards/finder/ishido/06c.gif differ diff --git a/data/images/cards/finder/ishido/06c.png b/data/images/cards/finder/ishido/06c.png new file mode 100644 index 00000000..b2be4795 Binary files /dev/null and b/data/images/cards/finder/ishido/06c.png differ diff --git a/data/images/cards/finder/ishido/06d.gif b/data/images/cards/finder/ishido/06d.gif new file mode 100644 index 00000000..b2d6e1cc Binary files /dev/null and b/data/images/cards/finder/ishido/06d.gif differ diff --git a/data/images/cards/finder/ishido/06d.png b/data/images/cards/finder/ishido/06d.png new file mode 100644 index 00000000..4b009f54 Binary files /dev/null and b/data/images/cards/finder/ishido/06d.png differ diff --git a/data/images/cards/finder/ishido/06e.gif b/data/images/cards/finder/ishido/06e.gif new file mode 100644 index 00000000..c13d5b8f Binary files /dev/null and b/data/images/cards/finder/ishido/06e.gif differ diff --git a/data/images/cards/finder/ishido/06e.png b/data/images/cards/finder/ishido/06e.png new file mode 100644 index 00000000..3895cdda Binary files /dev/null and b/data/images/cards/finder/ishido/06e.png differ diff --git a/data/images/cards/finder/ishido/06f.gif b/data/images/cards/finder/ishido/06f.gif new file mode 100644 index 00000000..d168d32a Binary files /dev/null and b/data/images/cards/finder/ishido/06f.gif differ diff --git a/data/images/cards/finder/ishido/06f.png b/data/images/cards/finder/ishido/06f.png new file mode 100644 index 00000000..2613b7c2 Binary files /dev/null and b/data/images/cards/finder/ishido/06f.png differ diff --git a/html-src/cardset_customization.html b/html-src/cardset_customization.html index 19a361f6..0bc0ac1d 100644 --- a/html-src/cardset_customization.html +++ b/html-src/cardset_customization.html @@ -50,6 +50,9 @@ back01.ext;back02.ext;back03.ext
  • Puzzle = 11

  • +
  • +

    Ishido = 12

    +
  • $C: The number of cards in the cardset, generally 42, 48, 52, 68, 78, 96 or 120

    @@ -102,6 +105,9 @@ back01.ext;back02.ext;back03.ext
  • Holiday = 13

  • +
  • +

    Ishido = 34

    +
  • Mahjongg = 28

  • diff --git a/html-src/glossary.html b/html-src/glossary.html index 78a1459e..7fcc5a27 100644 --- a/html-src/glossary.html +++ b/html-src/glossary.html @@ -178,6 +178,14 @@ function similar to JOKERS (see Hex A Deck for more info).

    +
    ISHIDO DECK
    + +
    +

    An Ishido set consists of 36 tiles, containing six different colors +and six symbols. Ishido games usually involve matching the colors and +symbols of adjacent tiles.

    +
    +
    JOKER
    diff --git a/html-src/rules/freeishido.html b/html-src/rules/freeishido.html new file mode 100644 index 00000000..ddeecd8a --- /dev/null +++ b/html-src/rules/freeishido.html @@ -0,0 +1,12 @@ +

    Free Ishido

    +

    +Ishido game type. 2 decks. No redeal. + +

    Object

    +

    +Move all tiles to the playing area. + +

    Quick Description

    +

    +Like Ishido, but tiles do not need to be +placed adjacent to other tiles. diff --git a/html-src/rules/freeishidorelaxed.html b/html-src/rules/freeishidorelaxed.html new file mode 100644 index 00000000..3698e505 --- /dev/null +++ b/html-src/rules/freeishidorelaxed.html @@ -0,0 +1,14 @@ +

    Free Ishido Relaxed

    +

    +Ishido game type. 2 decks. No redeal. + +

    Object

    +

    +Move all tiles to the playing area. + +

    Quick Description

    +

    +Like Ishido, but tiles do not need to be +placed adjacent to other tiles, and there are no restrictions +when placing a tile next to two or more other tiles - they just have +to match the color or symbol of each. diff --git a/html-src/rules/ishido.html b/html-src/rules/ishido.html new file mode 100644 index 00000000..ce76bd0f --- /dev/null +++ b/html-src/rules/ishido.html @@ -0,0 +1,29 @@ +

    Ishido

    +

    +Ishido game type. 2 decks. No redeal. + +

    Object

    +

    +Move all tiles to the playing area. + +

    Rules

    +

    +The tiles are played to an grid of eight rows of twelve columns each. +At the start of the game, a tile is placed in each corner, and two are +placed in two diagonally adjacent spaces in the center. +

    +Tiles are drawn from the talon one at a time, and can be played to the +main playing area. A tile can only be played if it is adjacent to +another tile, either horizontally or vertically, and if it matches the +adjacent tile's color or symbol. If a tile is placed next to at least +two other tiles, one must match by color and another by symbol. If it +is played next to four other tiles, it must match two by color and two +by symbol. +

    +The game is played if all tiles from the talon can be played to the +playing area. + +

    History

    +

    +Ishido was originally published as a video game "Ishido: The Way of Stones" +in 1990. It has since been recreated many times. diff --git a/html-src/rules/ishidorelaxed.html b/html-src/rules/ishidorelaxed.html new file mode 100644 index 00000000..152e7007 --- /dev/null +++ b/html-src/rules/ishidorelaxed.html @@ -0,0 +1,13 @@ +

    Ishido Relaxed

    +

    +Ishido game type. 2 decks. No redeal. + +

    Object

    +

    +Move all tiles to the playing area. + +

    Quick Description

    +

    +Like Ishido, but there are no restrictions +when placing a tile next to two or more other tiles - they just have +to match the color or symbol of each. diff --git a/po/de_pysol.po b/po/de_pysol.po index 962266ab..59bb5399 100644 --- a/po/de_pysol.po +++ b/po/de_pysol.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: PySol 0.0.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-12-10 10:19-0500\n" -"PO-Revision-Date: 2023-09-27 20:03-0400\n" +"PO-Revision-Date: 2023-11-05 12:49-0500\n" "Last-Translator: H. Schaekel \n" "Language-Team: German\n" "Language: de\n" @@ -453,6 +453,9 @@ msgstr "4 Deck Spiele" msgid "Cribbage" msgstr "" +msgid "Ishido" +msgstr "" + msgid "Lights Out" msgstr "" @@ -615,6 +618,9 @@ msgstr "" msgid "Tower of Hanoi type" msgstr "" +msgid "Ishido type" +msgstr "" + #: pysollib/help.py:43 msgid "A Python Solitaire Game Collection" msgstr "Eine Python Spielesammlung" @@ -886,6 +892,9 @@ msgstr "" msgid "Puzzle type (variable pieces)" msgstr "" +msgid "Ishido type (36 tiles)" +msgstr "" + #: pysollib/resource.py:194 msgid "French" msgstr "Französisch" diff --git a/po/fr_pysol.po b/po/fr_pysol.po index 9011e016..14f5d673 100644 --- a/po/fr_pysol.po +++ b/po/fr_pysol.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: 1.02\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-12-10 10:19-0500\n" -"PO-Revision-Date: 2023-09-27 20:02-0400\n" +"PO-Revision-Date: 2023-11-05 12:49-0500\n" "Last-Translator: Eric Rausch \n" "Language-Team: French\n" "Language: fr\n" @@ -459,6 +459,9 @@ msgstr "Jeux à 4 jeux de cartes" msgid "Cribbage" msgstr "" +msgid "Ishido" +msgstr "" + msgid "Lights Out" msgstr "" @@ -621,6 +624,9 @@ msgstr "" msgid "Tower of Hanoi type" msgstr "" +msgid "Ishido type" +msgstr "" + #: pysollib/help.py:43 msgid "A Python Solitaire Game Collection" msgstr "Une collection de jeux de solitaire en Python" @@ -916,6 +922,9 @@ msgstr "" msgid "Puzzle type (variable pieces)" msgstr "" +msgid "Ishido type (36 tiles)" +msgstr "" + #: pysollib/resource.py:194 msgid "French" msgstr "Français" diff --git a/po/it_pysol.po b/po/it_pysol.po index 75212f69..d6703585 100644 --- a/po/it_pysol.po +++ b/po/it_pysol.po @@ -12,7 +12,7 @@ msgstr "" "Project-Id-Version: it_pysol\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-12-10 10:19-0500\n" -"PO-Revision-Date: 2023-09-27 20:02-0400\n" +"PO-Revision-Date: 2023-11-05 12:49-0500\n" "Last-Translator: Giuliano Colla \n" "Language-Team: Italiano \n" "Language: it\n" @@ -465,6 +465,9 @@ msgstr "Giochi con quattro mazzi" msgid "Cribbage" msgstr "" +msgid "Ishido" +msgstr "" + msgid "Lights Out" msgstr "" @@ -627,6 +630,9 @@ msgstr "" msgid "Tower of Hanoi type" msgstr "" +msgid "Ishido type" +msgstr "" + #: pysollib/help.py:43 msgid "A Python Solitaire Game Collection" msgstr "Una raccolta di solitari in Python" @@ -924,6 +930,9 @@ msgstr "" msgid "Puzzle type (variable pieces)" msgstr "" +msgid "Ishido type (36 tiles)" +msgstr "" + #: pysollib/resource.py:194 msgid "French" msgstr "Francesi" diff --git a/po/pl_pysol.po b/po/pl_pysol.po index 0d0b9d06..6d959e07 100644 --- a/po/pl_pysol.po +++ b/po/pl_pysol.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PySolFC\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-12-10 10:19-0500\n" -"PO-Revision-Date: 2023-09-27 20:01-0400\n" +"PO-Revision-Date: 2023-11-05 12:49-0500\n" "Last-Translator: Jerzy Trzeciak \n" "Language-Team: Polish \n" "Language: pl\n" @@ -459,6 +459,9 @@ msgstr "Gry czterotaliowe" msgid "Cribbage" msgstr "Szopka" +msgid "Ishido" +msgstr "" + msgid "Lights Out" msgstr "" @@ -619,6 +622,9 @@ msgstr "Gry typu Samotnik" msgid "Tower of Hanoi type" msgstr "Gra typu Wieża Hanoi" +msgid "Ishido type" +msgstr "" + #: pysollib/help.py:43 msgid "A Python Solitaire Game Collection" msgstr "Kolekcja gier Python Solitaire" @@ -921,6 +927,9 @@ msgstr "" msgid "Puzzle type (variable pieces)" msgstr "" +msgid "Ishido type (36 tiles)" +msgstr "" + #: pysollib/resource.py:194 msgid "French" msgstr "Francuski" diff --git a/po/pt_BR_pysol.po b/po/pt_BR_pysol.po index 6d070329..ad4f05c4 100644 --- a/po/pt_BR_pysol.po +++ b/po/pt_BR_pysol.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-12-10 10:19-0500\n" -"PO-Revision-Date: 2023-09-27 20:02-0400\n" +"PO-Revision-Date: 2023-11-05 12:50-0500\n" "Last-Translator: Matheus Knack \n" "Language-Team: \n" "Language: pt_BR\n" @@ -458,6 +458,9 @@ msgstr "Jogos de quatro baralhos" msgid "Cribbage" msgstr "Cribbage" +msgid "Ishido" +msgstr "" + msgid "Lights Out" msgstr "Sem luz" @@ -618,6 +621,9 @@ msgstr "estilo Resta um" msgid "Tower of Hanoi type" msgstr "estilo Torre de Lucas" +msgid "Ishido type" +msgstr "" + #: pysollib/help.py:43 msgid "A Python Solitaire Game Collection" msgstr "Coleção de Jogos de Paciência Python" @@ -915,6 +921,9 @@ msgstr "Estilos Combinados (cartas variáveis)" msgid "Puzzle type (variable pieces)" msgstr "" +msgid "Ishido type (36 tiles)" +msgstr "" + #: pysollib/resource.py:194 msgid "French" msgstr "Francês" diff --git a/po/pysol.pot b/po/pysol.pot index 3ae6fd24..619d2ae9 100644 --- a/po/pysol.pot +++ b/po/pysol.pot @@ -433,6 +433,9 @@ msgstr "" msgid "Cribbage" msgstr "" +msgid "Ishido" +msgstr "" + msgid "Lights Out" msgstr "" @@ -593,6 +596,9 @@ msgstr "" msgid "Tower of Hanoi type" msgstr "" +msgid "Ishido type" +msgstr "" + #: pysollib/help.py:43 msgid "A Python Solitaire Game Collection" msgstr "" @@ -832,6 +838,9 @@ msgstr "" msgid "Puzzle type (variable pieces)" msgstr "" +msgid "Ishido type (36 tiles)" +msgstr "" + #: pysollib/resource.py:194 msgid "French" msgstr "" diff --git a/po/ru_pysol.po b/po/ru_pysol.po index c94d5495..829b0514 100644 --- a/po/ru_pysol.po +++ b/po/ru_pysol.po @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-12-10 10:19-0500\n" -"PO-Revision-Date: 2023-09-27 20:02-0400\n" +"PO-Revision-Date: 2023-11-05 12:50-0500\n" "Last-Translator: Skomoroh \n" "Language-Team: Russian \n" "Language: ru\n" @@ -462,6 +462,9 @@ msgstr "Игры с четырьмя колодами" msgid "Cribbage" msgstr "" +msgid "Ishido" +msgstr "" + msgid "Lights Out" msgstr "" @@ -624,6 +627,9 @@ msgstr "" msgid "Tower of Hanoi type" msgstr "" +msgid "Ishido type" +msgstr "" + #: pysollib/help.py:43 msgid "A Python Solitaire Game Collection" msgstr "Коллекция питоновских пасьянсов" @@ -911,6 +917,9 @@ msgstr "" msgid "Puzzle type (variable pieces)" msgstr "" +msgid "Ishido type (36 tiles)" +msgstr "" + #: pysollib/resource.py:194 msgid "French" msgstr "Классические" diff --git a/pysollib/app.py b/pysollib/app.py index ea49a84a..060982a9 100644 --- a/pysollib/app.py +++ b/pysollib/app.py @@ -824,6 +824,10 @@ class Application: t0 = "Puzzle" if cs_type not in (CSI.TYPE_PUZZLE,) or cs_subtype != gs: t1 = t0 + elif gc == GI.GC_ISHIDO: + t0 = "Ishido" + if cs_type not in (CSI.TYPE_ISHIDO,): + t1 = t0 else: # we should not come here t0 = t1 = "Unknown" diff --git a/pysollib/gamedb.py b/pysollib/gamedb.py index 71eb7a74..991d5592 100644 --- a/pysollib/gamedb.py +++ b/pysollib/gamedb.py @@ -57,8 +57,9 @@ class GI: GC_TRUMP_ONLY = CSI.TYPE_TRUMP_ONLY GC_MATCHING = CSI.TYPE_MATCHING GC_PUZZLE = CSI.TYPE_PUZZLE + GC_ISHIDO = CSI.TYPE_ISHIDO - NUM_CATEGORIES = CSI.TYPE_PUZZLE + NUM_CATEGORIES = CSI.TYPE_ISHIDO # game subcategory GS_NONE = CSI.SUBTYPE_NONE @@ -90,6 +91,7 @@ class GI: GT_HANAFUDA = 13 GT_HANOI = 35 GT_HEXADECK = 14 + GT_ISHIDO = 39 GT_KLONDIKE = 15 GT_LIGHTS_OUT = 38 GT_MAHJONGG = 16 @@ -166,6 +168,7 @@ class GI: GT_CRIBBAGE_TYPE: n_("Cribbage"), GT_HEXADECK: n_("Hex A Deck"), + GT_ISHIDO: n_("Ishido"), GT_LIGHTS_OUT: n_("Lights Out"), GT_MATRIX: n_("Matrix"), GT_MEMORY: n_("Memory"), @@ -283,6 +286,7 @@ class GI: lambda gi, gt=GT_CRIBBAGE_TYPE: gi.si.game_type == gt), (n_("Hex A Deck type"), lambda gi, gt=GT_HEXADECK: gi.si.game_type == gt), + (n_("Ishido type"), lambda gi, gt=GT_ISHIDO: gi.si.game_type == gt), (n_("Lights Out type"), lambda gi, gt=GT_LIGHTS_OUT: gi.si.game_type == gt), (n_("Matrix type"), lambda gi, gt=GT_MATRIX: gi.si.game_type == gt), @@ -577,7 +581,8 @@ class GI: ('fc-2.21', tuple(range(897, 900)) + tuple(range(11014, 11017)) + tuple(range(13160, 13163)) + (16682,)), ('dev', tuple(range(906, 927)) + tuple(range(11017, 11020)) + - tuple(range(22303, 22311)) + tuple(range(22353, 22361))), + tuple(range(18000, 18004)) + tuple(range(22303, 22311)) + + tuple(range(22353, 22361))), ) # deprecated - the correct way is to or a GI.GT_XXX flag diff --git a/pysollib/games/special/__init__.py b/pysollib/games/special/__init__.py index ab0d54f8..aa07c5dc 100644 --- a/pysollib/games/special/__init__.py +++ b/pysollib/games/special/__init__.py @@ -22,6 +22,7 @@ # ---------------------------------------------------------------------------## from . import cribbage # noqa: F401 from . import hanoi # noqa: F401 +from . import ishido # noqa: F401 from . import lightsout # noqa: F401 from . import memory # noqa: F401 from . import pegged # noqa: F401 diff --git a/pysollib/games/special/ishido.py b/pysollib/games/special/ishido.py new file mode 100644 index 00000000..782c72f3 --- /dev/null +++ b/pysollib/games/special/ishido.py @@ -0,0 +1,185 @@ +#!/usr/bin/env python +# -*- mode: python; coding: utf-8; -*- +# --------------------------------------------------------------------------- +# +# Copyright (C) 1998-2003 Markus Franz Xaver Johannes Oberhumer +# Copyright (C) 2003 Mt. Hood Playing Card Co. +# Copyright (C) 2005-2009 Skomoroh +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# --------------------------------------------------------------------------- + +from pysollib.game import Game +from pysollib.gamedb import GI, GameInfo, registerGame +from pysollib.layout import Layout +from pysollib.stack import \ + OpenTalonStack, \ + ReserveStack, \ + StackWrapper + +# ************************************************************************ +# * Ishido +# ************************************************************************ + + +class Ishido_RowStack(ReserveStack): + def clickHandler(self, event): + if (not self.cards and self.game.s.talon.cards and + self.game.isValidPlay(self.id, + self.game.s.talon.getCard().rank, + self.game.s.talon.getCard().suit)): + self.game.s.talon.playMoveMove(1, self) + return 1 + return ReserveStack.clickHandler(self, event) + + rightclickHandler = clickHandler + + def acceptsCards(self, from_stack, cards): + return not self.cards and self.game.isValidPlay(self.id, + cards[0].rank, + cards[0].suit) + + def canFlipCard(self): + return False + + +class Ishido(Game): + Talon_Class = OpenTalonStack + RowStack_Class = StackWrapper(Ishido_RowStack, max_move=0) + Hint_Class = None + + REQUIRE_ADJACENT = True + STRICT_FOUR_WAYS = True + + # + # game layout + # + + def createGame(self): + # create layout + l, s = Layout(self), self.s + + ta = "ss" + x, y = l.XM, l.YM + 2 * l.YS + + w2 = max(2 * l.XS, x) + # set window + w, h = w2 + l.XM * 2 + l.CW * 12, l.YM * 2 + l.CH * 8 + self.setSize(w, h) + + # Create rows + for j in range(8): + x, y = w2 + l.XM, l.YM + l.CH * j + for i in range(12): + s.rows.append(self.RowStack_Class(x, y, self)) + x = x + l.CW + + s.talon = self.Talon_Class(l.XM, l.YM, self) + l.createText(s.talon, anchor=ta) + + # define stack-groups + l.defaultStackGroups() + return l + + def startGame(self): + self.moveMove(1, self.s.talon, self.s.rows[0], frames=0) + self.s.rows[0].flipMove() + self.moveMove(1, self.s.talon, self.s.rows[11], frames=0) + self.s.rows[11].flipMove() + self.moveMove(1, self.s.talon, self.s.rows[41], frames=0) + self.s.rows[41].flipMove() + self.moveMove(1, self.s.talon, self.s.rows[54], frames=0) + self.s.rows[54].flipMove() + self.moveMove(1, self.s.talon, self.s.rows[84], frames=0) + self.s.rows[84].flipMove() + self.moveMove(1, self.s.talon, self.s.rows[95], frames=0) + self.s.rows[95].flipMove() + self.s.talon.fillStack() + + def isGameWon(self): + return len(self.s.talon.cards) == 0 + + def isValidPlay(self, playSpace, playRank, playSuit): + # check that there's an adjacent card + adjacent = self.getAdjacent(playSpace) + rankMatches = 0 + suitMatches = 0 + totalMatches = 0 + for i in adjacent: + if len(i.cards) > 0: + totalMatches += 1 + if i.cards[-1].rank == playRank: + rankMatches += 1 + if i.cards[-1].suit == playSuit: + suitMatches += 1 + + if i.cards[-1].suit != playSuit and \ + i.cards[-1].rank != playRank: + return False + + if self.REQUIRE_ADJACENT and totalMatches == 0: + return False + + if self.STRICT_FOUR_WAYS: + if totalMatches > 1 and (rankMatches == 0 or suitMatches == 0): + return False + if totalMatches == 4 and (rankMatches < 2 or suitMatches < 2): + return False + + return True + + def getAdjacent(self, playSpace): + adjacentRows = [] + if playSpace % 12 != 11: + adjacentRows.append(self.s.rows[playSpace + 1]) + + if playSpace % 12 != 0: + adjacentRows.append(self.s.rows[playSpace - 1]) + + if playSpace + 12 < 96: + adjacentRows.append(self.s.rows[playSpace + 12]) + + if playSpace - 12 > -1: + adjacentRows.append(self.s.rows[playSpace - 12]) + + return adjacentRows + + +class IshidoRelaxed(Ishido): + STRICT_FOUR_WAYS = False + + +class FreeIshido(Ishido): + REQUIRE_ADJACENT = False + + +class FreeIshidoRelaxed(Ishido): + STRICT_FOUR_WAYS = False + REQUIRE_ADJACENT = False + + +def r(id, gameclass, name, decks, redeals, skill_level): + game_type = GI.GT_ISHIDO + gi = GameInfo(id, gameclass, name, game_type, decks, redeals, skill_level, + ranks=list(range(6)), suits=list(range(6)), + category=GI.GC_ISHIDO) + registerGame(gi) + return gi + + +r(18000, Ishido, 'Ishido', 2, 0, GI.SL_MOSTLY_SKILL) +r(18001, IshidoRelaxed, 'Ishido Relaxed', 2, 0, GI.SL_MOSTLY_SKILL) +r(18002, FreeIshido, 'Free Ishido', 2, 0, GI.SL_MOSTLY_SKILL) +r(18003, FreeIshidoRelaxed, 'Free Ishido Relaxed', 2, 0, GI.SL_MOSTLY_SKILL) diff --git a/pysollib/options.py b/pysollib/options.py index e66e1f21..b8eaad29 100644 --- a/pysollib/options.py +++ b/pysollib/options.py @@ -210,6 +210,7 @@ highlight_piles = float(0.2, 9.9) 11_8 = string_list(min=2, max=2) 11_9 = string_list(min=2, max=2) 11_10 = string_list(min=2, max=2) +12 = string_list(min=2, max=2) scale_cards = boolean scale_x = float scale_y = float @@ -577,6 +578,7 @@ class Options: 8: ("Mid Winter's Eve (8x8)", ""), 9: ("Hofamterspiel (9x9)", ""), 10: ("Eternal Dragon (10x10)", "")}, + CSI.TYPE_ISHIDO: {0: ("Simple Ishido XL", "")}, } else: self.cardset = { @@ -601,6 +603,7 @@ class Options: 8: ("Mid Winter's Eve (8x8)", ""), 9: ("Hofamterspiel (9x9)", ""), 10: ("Eternal Dragon (10x10)", "")}, + CSI.TYPE_ISHIDO: {0: ("Simple Ishido", "")}, } # not changeable options diff --git a/pysollib/resource.py b/pysollib/resource.py index c6eae13f..a2c5c31b 100644 --- a/pysollib/resource.py +++ b/pysollib/resource.py @@ -182,6 +182,7 @@ class CSI: TYPE_TRUMP_ONLY = 9 TYPE_MATCHING = 10 TYPE_PUZZLE = 11 + TYPE_ISHIDO = 12 # cardset subtypes SUBTYPE_NONE = 0 @@ -206,7 +207,8 @@ class CSI: 8: _("Dashavatara Ganjifa type (120 cards)"), 9: _("Trumps only type (variable cards)"), 10: _("Matching type (variable cards)"), - 11: _("Puzzle type (variable pieces)") + 11: _("Puzzle type (variable pieces)"), + 12: _("Ishido type (36 tiles)") } TYPE_NAME = { @@ -220,7 +222,8 @@ class CSI: 8: _("Dashavatara Ganjifa"), 9: _("Trumps only"), 10: _("Matching"), - 11: _("Puzzle") + 11: _("Puzzle"), + 12: _("Ishido") } SUBTYPE_NAME = { @@ -246,7 +249,8 @@ class CSI: 8: "dashavatara-ganjifa", 9: "trumps-only", 10: "matching", - 11: "puzzle" + 11: "puzzle", + 12: "ishido" } TYPE_SUITS = { @@ -260,7 +264,8 @@ class CSI: 8: "abcdefghij", 9: "", 10: "", - 11: "" + 11: "", + 12: "abcdef" } TYPE_RANKS = { @@ -275,6 +280,7 @@ class CSI: 9: list(range(0)), 10: list(range(0)), 11: list(range(0)), + 12: list(range(6)) } TYPE_TRUMPS = { @@ -289,6 +295,7 @@ class CSI: 9: (), 10: (), 11: (), + 12: () } # cardset styles @@ -308,6 +315,7 @@ class CSI: 12: _("Hanafuda"), # 29: _("Hex A Deck"), # 13: _("Holiday"), # + 34: _("Ishido"), # 28: _("Mahjongg"), # 32: _("Matching"), # 14: _("Movies"), # @@ -548,7 +556,10 @@ class CardsetManager(ResourceManager): cs.nletters = 0 cs.nshadows = 0 cs.trumps = list(range(cs.ncards)) - + elif s == CSI.TYPE_ISHIDO: + cs.nbottoms = 0 + cs.nletters = 0 + cs.nshadows = 0 else: return 0 return 1 diff --git a/scripts/cardset_viewer.py b/scripts/cardset_viewer.py index d6a17244..ae5fd596 100755 --- a/scripts/cardset_viewer.py +++ b/scripts/cardset_viewer.py @@ -27,7 +27,8 @@ cardset_type = { '8': 'Dashavatara Ganjifa', '9': 'Trump only', '10': 'Matching', - '11': 'Puzzle' + '11': 'Puzzle', + '12': 'Ishido' } ALL_IMGS = False