麻将手算

mahjong的Python项目详细描述


https://travis-ci.org/MahjongRepository/mahjong.svg?branch=master

支持Python2.7和3.5+。

我们只支持日文版的麻将。

日一麻将手计算

这个图书馆可以计算日式麻将(日文版)的手费(韩文,带细节的傅文,雅库文和分数)。

它支持可选功能,如:

FeatureKeyword parameterDefault value
Disable or enable open tanyao yakuhas_open_tanyaoFalse
Disable or enable aka dora in the handhas_aka_doraFalse
Disable or enable double yakuman (like suuanko tanki)has_double_yakumanTrue
Settings for different kazoe yakuman calculation (it сan be an yakuman or a sanbaiman)kazoe_limitHandConstants.KAZOE_LIMITED
Support kiriage mangankiriageFalse
Allow to disable additional +2 fu in open hand (you can make 1-20 hand with that setting)fu_for_open_pinfuTrue
Disable or enable pinfu tsumofu_for_pinfu_tsumoFalse
Counting renhou as 5 han or yakumanrenhou_as_yakumanFalse
Disable or enable Daisharin yakumanhas_daisharinFalse
Disable or enable Daisharin in other suits (Daisuurin, Daichikurin)has_daisharin_other_suitsFalse

该代码在Tenhou.net Phoenix上进行了验证,总共在11120125手上进行了回放。

所以,我们可以说我们的手动计算器的工作方式与tenhou.net的手动计算相同。

项目存储库:https://github.com/MahjongRepository/mahjong

如何安装

pip install mahjong

如何使用

你可以在这里找到更多的例子:https://github.com/MahjongRepository/mahjong/blob/master/doc/examples.py

我们来计算这只手要花多少钱:

https://user-images.githubusercontent.com/475367/30796350-3d30431a-a204-11e7-99e5-aab144c82f97.png

罗恩的坦瑶之手
frommahjong.hand_calculating.handimportHandCalculatorfrommahjong.tileimportTilesConverterfrommahjong.hand_calculating.hand_configimportHandConfigfrommahjong.meldimportMeldcalculator=HandCalculator()# we had to use all 14 tiles in that arraytiles=TilesConverter.string_to_136_array(man='22444',pin='333567',sou='444')win_tile=TilesConverter.string_to_136_array(sou='4')[0]result=calculator.estimate_hand_value(tiles,win_tile)print(result.han,result.fu)print(result.cost['main'])print(result.yaku)forfu_iteminresult.fu_details:print(fu_item)

输出:

1 40
1300
[Tanyao]
{'fu': 30, 'reason': 'base'}
{'fu': 4, 'reason': 'closed_pon'}
{'fu': 4, 'reason': 'closed_pon'}
{'fu': 2, 'reason': 'open_pon'}

Tsumo怎么样?
result=calculator.estimate_hand_value(tiles,win_tile,config=HandConfig(is_tsumo=True))print(result.han,result.fu)print(result.cost['main'],result.cost['additional'])print(result.yaku)forfu_iteminresult.fu_details:print(fu_item)

输出:

4 40
4000 2000
[Menzen Tsumo, Tanyao, San Ankou]
{'fu': 20, 'reason': 'base'}
{'fu': 4, 'reason': 'closed_pon'}
{'fu': 4, 'reason': 'closed_pon'}
{'fu': 4, 'reason': 'closed_pon'}
{'fu': 2, 'reason': 'tsumo'}

如果我们添加开放集呢?

melds=[Meld(meld_type=Meld.PON,tiles=TilesConverter.string_to_136_array(man='444'))]result=calculator.estimate_hand_value(tiles,win_tile,melds=melds,config=HandConfig(options=OptionalRules(has_open_tanyao=True)))print(result.han,result.fu)print(result.cost['main'])print(result.yaku)forfu_iteminresult.fu_details:print(fu_item)

输出:

1 30
1000
[Tanyao]
{'fu': 20, 'reason': 'base'}
{'fu': 4, 'reason': 'closed_pon'}
{'fu': 2, 'reason': 'open_pon'}
{'fu': 2, 'reason': 'open_pon'}

shanten计算

frommahjong.shantenimportShantenshanten=Shanten()tiles=TilesConverter.string_to_34_array(man='13569',pin='123459',sou='443')result=shanten.calculate_shanten(tiles)print(result)

发布历史记录

1.1.9(2019-07-29)

  • 添加tilesconverter.one_line_string_到_136_array()tilesconverter.one_line_string_到_34_array()方法

1.1.8(2019-07-25)

  • 解决daburu chuuren poutou计算不正确的问题
  • 允许将“0”作为红色的五到平铺转换器传递

1.1.7(2019-04-09)

  • 介绍可选规则手动配置

1.1.6(2019-02-10)

  • 在手上添加Hatsu Yaku而不是Chun时修复错误
  • 修复Kokushi未与tenhou/renhou/chihou组合的错误
  • 在所有Yaku中添加英文名称
  • 添加对Python2.7的支持
  • 添加将aka dora传递到tile converter的方法

1.1.5(2018-09-04)

  • 允许在尚腾计算器中禁用Chiitoitsu或Kokushi

1.1.4(2018-08-31)

  • 将is_terminal()和is_dora_indicator_for_terminal()函数添加到utils.py

1.1.3(2018-08-22)

  • 将is_tile_strilly_isolated()函数添加到utils.py中

1.1.2(2017-10-14)

  • 为不同的kazoe yakuman计算添加设置(可以是yakuman或sanbaiman)
  • 最多支持六倍Yakuman分数
  • 支持Kiriage Mangan
  • 允许在打开的手上禁用+2 fu
  • 允许禁用Tsumo Pinfu(为这样的手添加2个额外的fu)

1.1.1(2017-10-07)

  • 用不正确的Agari状态测定和手中的闭合Kan修复错误

1.1.0(2017-10-07)

中断更改:

  • 改变了手持计算器的界面。新的界面将允许轻松支持不同的游戏规则

其他修复:

  • 重构手动分隔器。允许传递MELD对象而不是数组
  • 添加包含用法示例的文件
  • 小型项目重构

1.0.5(2017-09-25)

  • 改进安装脚本

1.0.4(2017-09-25)

错误修复:

  • 用kan集和dora计算修正重构回归
  • 用sankantsusuuukantsu修复回归并调用chankan
  • 闭式菅直人不能用于chuuren poutou
  • 修复Yaku ID(其中一些ID的编号不正确)

功能:

  • 允许禁用双yakuman(如suuanko tanki)
  • 从分数和fu中删除浮点运算
  • 添加Travis生成状态
  • 向自述文件中添加用法示例
1.0.3(2017-09-23)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
MIME类型多部分/混合的java无对象DCH   Java Swing中单元格和列的间距   java为什么我不能使用For循环从集合中获取元素?   mysql Java餐厅计费系统   java MediaPlayer内存消耗   println Java添加的神秘输出:一些经过评估,一些经过打印   java我应该使用哪个对象?   PHP到Java论坛游戏集成   通过GeoNetwork上的java http post请求获取XML响应   java为什么类名与使用“==”的内部字符串比较冲突?   java反应。js如何定义自定义id,而不是在html中显示reactselect1value   java中的拼字数组   java如何使ScheduledExecutorService在其计划任务取消时自动终止   java查询未正确执行   IBatis+Java:检索HashMap   要读取的加密Java代码。txt文件并转换为二进制表示形式   Java Web Start应用程序自动加载   java Swing重写对象的paintComponent