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

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-0.3.0.tar.gz (50.9 kB view details)

Uploaded Source

File details

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

File metadata

  • Download URL: PyMahjongGB-0.3.0.tar.gz
  • Upload date:
  • Size: 50.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.22.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.7.9

File hashes

Hashes for PyMahjongGB-0.3.0.tar.gz
Algorithm Hash digest
SHA256 f343e78aeb0a83700d621ac3ca268f0520a1c2c28944735761c29d9d41257819
MD5 13666dee3ff227c85fdad6579231ca7d
BLAKE2b-256 2228b2b1a09f7be494779164a6da2b3a36889aeba7310dd5d4399de110f6c0a0

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