Pykoikoi is an implementation of the Koi-Koi hanafuda card game in Python.


The objective of the game is to match cards to complete various scoring combinations (called yaku) to earn points.

On each turn, the player attempts to match the suit of a card in the hand with a card of the same suit on the table.  If two cards match suits, then those two cards go into the players scoring pile.  Next, the player draws a card from the draw stack.  If that card’s suit matches the suit of a card on the table, then those two cards go into the player’s scoring pile.

There are twelve suits in the deck, one for each month of the year.  There is an option to display numbers for the month of the card, since the image on each card is different, sometimes making it difficult to determine the month of the card.  Each suit has four cards, for a total of 48 cards.  Some cards have special properties such as lights, ribbons, and specials.  There are three types of ribbons, which are red ribbons, poetry ribbons, and blue ribbons (which look more purplish).  The difference between a regular red ribbon and a poetry ribbon (which is also red), is that the poetry ribbon has Japanese kana (letters) on it.  The special cards typically have an animal or creature on it.

Once a player has a scoring combination, the player can chose to either keep playing (“koi”) or stop.  If the player chooses to continue, then the opponent scores double points if they make a valid scoring combination.

There are multiple scoring combination, which involve getting a certain number of lights, ribbons, specials, or normal cards.  The sake cup can be paired with the curtain or moon cards to form a score.  The rain man card acts as a light, only in combinations of three other lights.  The deer, boar, and butterfly as a special combination.