Skip to main content

A library for Fan Calculation of Mahjong in Chinese Standard Rule.

Project description

Mahjong Fan Calculator Python

README:English|中文

Install

pip install PyMahjongGB

Usage

MahjongFanCalculator

from MahjongGB import MahjongFanCalculator

# 算番函数
((fanCount, fanName), ...) MahjongFanCalculator(
    pack = ((packType, tileCode, offer), ...),
    hand = (tileCode, ...),
    winTile = tileCode,
    flowerCount = int 0..8,
    isSelfDrawn = bool,
    is4thTile = bool,
    isAboutKong = bool,
    isWallLast = bool,
    seatWind = int 0..3,
    prevalentWind = int 0..3,
	[optional, default = False]verbose = bool)
  • pack: The declared tiles. A tuple of tuples of three elements each: packType of "PENG"/"GANG"/"CHI" for PUNG, KONG and CHOW, tileCode (see details below), middle tile in case of CHOW, offer, 1, 2, 3 for player on left/opposite/right who offers this tile in case of PUNG and KONG, 1, 2, 3 for which tile is offered in case of CHOW.
  • hand: The concealed tiles in hand. A tuple of tileCodes.
  • winTile: The winning tile to make Mahjong.
  • flowerCount: The number of the Flower and Season tiles.
  • isSelfDrawn: Whether the winning tile is self-drawn.
  • is4thTile: Whether the winning tile is the 4th tile.
  • isAboutKong: Whether the winning is about Kong. If the player wins by other's discard, it is Robbing the Kong. Otherwise, if the player wins by self-drawn, it is Out with Replacement Tile.
  • isWallLast: Whether the winning tile is the last one in tile wall. If self-drawn, it is Last Tile Draw. Otherwise, it is Last Tile Claim.
  • seatWind: Seat wind. The number 0, 1, 2, 3 represent East, South, West, and North respectively.
  • prevalentWind: Prevalent wind. The number 0, 1, 2, 3 represent East, South, West, and North respectively.
  • verbose: Default to False. If set to True, return format is (fan_point, cnt, fan_name, fan_name_en) instead of (fan_count, fan_name).
  • return: This function returns a tuple of tuples of two elements each: the fan count and fan name of each fan.

TileCode Table:

  • W1 ~ W9 for CHARACTERS,
  • T1 ~ T9 for BAMBOOS,
  • B1 ~ B9 for DOTS,
  • F1 ~ F4 for WINDS,
  • J1 ~ J3 for DRAGONS,
  • H1 ~ H8 for FLOWERS and SEASONS.

MahjongShanten

from MahjongGB import MahjongShanten

# 计算向听数
shanten MahjongShanten(
    pack = ((packType, tileCode, offer), ...),
    hand = (tileCode, ...))
  • pack: The declared tiles. A tuple of tuples of three elements each: packType of "PENG"/"GANG"/"CHI" for PUNG, KONG and CHOW, tileCode (see details below), middle tile in case of CHOW, offer, 1, 2, 3 for player on left/opposite/right who offers this tile in case of PUNG and KONG, 1, 2, 3 for which tile is offered in case of CHOW.
  • hand: The concealed tiles in hand. A tuple of tileCodes.
  • return: This function returns an integer: shanten.

ThirteenOrphansShanten

from MahjongGB import ThirteenOrphansShanten

# 计算十三幺向听数,手牌必须13张
(shanten, useful) = ThirteenOrphansShanten(
    hand = (tileCode, ...))
  • hand: The concealed tiles in hand. A tuple of tileCodes.
  • return: This function returns a tuple: an integer shanten and a tuple consisting of tilecodes of useful tiles.

SevenPairsShanten

from MahjongGB import SevenPairsShanten

# 计算七对向听数,手牌必须13张
(shanten, useful) = SevenPairsShanten(
    hand = (tileCode, ...))
  • hand: The concealed tiles in hand. A tuple of tileCodes.
  • return: This function returns a tuple: an integer shanten and a tuple consisting of tilecodes of useful tiles.

HonorsAndKnittedTilesShanten

from MahjongGB import HonorsAndKnittedTilesShanten

# 计算全不靠向听数,手牌必须13张
(shanten, useful) = HonorsAndKnittedTilesShanten(
    hand = (tileCode, ...))
  • hand: The concealed tiles in hand. A tuple of tileCodes.
  • return: This function returns a tuple: an integer shanten and a tuple consisting of tilecodes of useful tiles.

KnittedStraightShanten

from MahjongGB import KnittedStraightShanten

# 计算组合龙向听数,手牌必须10张或者13张
(shanten, useful) = KnittedStraightShanten(
    hand = (tileCode, ...))
  • hand: The concealed tiles in hand. A tuple of tileCodes.
  • return: This function returns a tuple: an integer shanten and a tuple consisting of tilecodes of useful tiles.

RegularShanten

from MahjongGB import RegularShanten

# 计算基本胡型的向听数,手牌可以是1, 4, 7, 10, 13张
(shanten, useful) = RegularShanten(
    hand = (tileCode, ...))
  • hand: The concealed tiles in hand. A tuple of tileCodes.
  • return: This function returns a tuple: an integer shanten and a tuple consisting of tilecodes of useful tiles.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

PyMahjongGB-1.3.0.tar.gz (53.0 kB view details)

Uploaded Source

File details

Details for the file PyMahjongGB-1.3.0.tar.gz.

File metadata

  • Download URL: PyMahjongGB-1.3.0.tar.gz
  • Upload date:
  • Size: 53.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.7.9

File hashes

Hashes for PyMahjongGB-1.3.0.tar.gz
Algorithm Hash digest
SHA256 3a40e1af4cacd6fa77322c24a6ae4f3533b8b679712eced2b8a9f76f5f5f3053
MD5 ef3ffc7d7360c1478f6c3158ae57a81e
BLAKE2b-256 d593150d34417655dfaf0d0ce02f85c3c31ed42cb8a6d97d25d2e155afa17f62

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page