#score #hand #calculator #fu #cli #riichi #yaku

bin+lib mahc

命令行里奇麻将计算器,可以针对给定的手牌输出役和符

8 个稳定版本

1.5.1 2024 年 8 月 3 日
1.4.1 2024 年 7 月 31 日

110数学 中排名

Download history 134/week @ 2024-07-22 426/week @ 2024-07-29 35/week @ 2024-08-05

595 每月下载量

MIT 许可证

1MB
3.5K SLoC

通过终端使用里奇麻将计算器

CLI 工具,用于计算里奇麻将的手牌得分。

  • 手动模式:给定番和符,计算得分
  • 普通模式:给定手牌,计算包含役和符的得分

demo gif

示例

计算器模式

~/$ mahc -m 4 30 --ba 3
> Dealer:    12500 (4200) 
  non-dealer: 8600 (2300/ 4200)

普通模式

注意:赢家的组必须最后出(这是为了正确计算符)

~/$ mahc --tiles rrrd EEEw 234p 234p 11p -w 1p -p Ew -s Ew
> 7 Han/ 50 Fu
  Dealer: 18000 (6000)
  Non-dealer: 12000 (3000/6000)
  Yaku:
    Iipeikou: 1
    Honitsu: 3
    Yakuhai: 1
    Yakuhai: 1
    Yakuhai: 1
  
  Fu:
    BasePoints: 20
    ClosedRon: 10
    NonSimpleClosedTriplet: 8
    NonSimpleClosedTriplet: 8
    SingleWait: 2

使用文件输入

# hands.txt
--tiles EEw NNw SSw WWw rrd wwd ggd -w gd -p Ew -s Ew -d 2
--tiles 123p 456p 789p rrrdo 99p -w 9p -p Ew -s Ew -d 2'
-m 4 30 --ba 3
~/$ mahc -f hands.txt
> Dealer: 144000 (48000)
  Non-dealer: 96000 (24000/48000)
  Yaku:
    Tsuuiisou Yakuman
    Daichiishin Yakuman
    Shousuushii Yakuman
  
  4 Han/ 30 Fu/ 3 Honba
  Dealer: 12500 (4200)
  non-dealer: 8600 (2300/4200)
  
  6 Han/ 30 Fu
  Dealer: 18000 (6000)
  Non-dealer: 12000 (3000/6000)
  Dora: 2
  Yaku:
    Honitsu: 2
    Ittsuu: 1
    Yakuhai: 1
  Fu:
    BasePoints: 20
    NonSimpleOpenTriplet: 4
    SingleWait: 2

符号

花色

花色
万(字符) 1m, 2m, 3m, 4m, 5m, 6m, 7m, 8m, 9m
饼(圆形) 1p, 2p, 3p, 4p, 5p, 6p, 7p, 8p, 9p
筒(竹子) 1s, 2s, 3s, 4s, 5s, 6s, 7s, 8s, 9s

字牌

类型 符号
风牌 Ew, Sw, Ww, Nw
龙牌 rd, gd, wd

特殊符号

描述 示例
开放序列 234po(饼色2、3、4的开放序列)
  • 例如:EEEw(东风的三张牌)
  • 例如:234m(2、3、4的万牌序列)
  • 例如:rrrrdo(红色龙牌的四张牌)
  • 例如:11s(一张一的筒牌)
  • 例如:8m(一张八的万牌)

安装

使用 cargo

cargo install mahc
mahc --version

从源码构建

git clone https://github.com/DrCheeseFace/rusty-riichi-mahjong-calculator
cd rusty-riichi-mahjong-calculator
cargo build
./target/debug/mahc --version

从最新版本

curl -s https://api.github.com/repos/DrCheeseFace/rusty-riichi-mahjong-calculator/releases/latest | grep "browser_download_url" | cut -d '"' -f 4 | wget -i -
unzip mahc-v1.1.0-x86_64-unknown-linux-gnu.zip -d mahc
cd mahc/x86_64-unknown-linux-gnu/release
./mahc --version

至今已实现的牌型验证

一个役
  • 天元牌
  • 一杯口
  • 花牌
  • 门前清自摸和
  • 平和
  • 立直
  • 海底捞月
  • 河底托
  • 立直海象
  • 七对
两个役
  • 双立直
  • 对对和
  • 一色刻子
  • 三色双刻子
  • 三色双顺
  • 三色三顺
  • 三色三刻子
  • 三色三顺
  • 花牌
  • 三杠
  • 七对子
三个役
  • 顺子
  • 门前清大三元
  • 连立直
六个役
  • 纯顺
役满
  • 国士无双
  • 地租无双
  • 地租无双13面待
  • 十三幺
  • 十三幺单等
  • 大四喜
  • 小四喜
  • 大五番
  • 役满
  • 连立直
  • 花牌
  • 役满
  • 十三幺
  • 十三幺九门待
  • 十三幺
  • 天凤
  • 地鳳

待办事项

  • 验证一手牌是可能的(例如没有20张东风牌 :)
  • 添加所有大役已完成
  • 验证是否存在大役已完成
  • 验证获胜牌已完成
  • 将错误传播以获得良好的打印输出已完成
  • 验证像不能立直和双立直这样的东西。所有那些花牌,刻子,顺子等等已完成
  • 文件stdIn已完成?
  • JSON输出标志

贡献

  • 如果您发现了一个错误(可能有很多),请提交一个如何复现它的issue。
  • 请注意,我们目前离完成还差很远。所以暂时先不管验证

this.jpg

依赖项

~4–6MB
~105K SLoC