清一色二人麻将(BAMBOO麻雀)Python 复刻备忘录

一个经典的 Flash 麻将游戏 “Bamboo 麻雀” 的复刻计划。

目前使用 Python 对游戏全流程进行演示。

Bamboo 麻雀 (Flash 版HTML5 版

Bamboo 麻将游戏规则

参考资料:二人麻将#清一色麻将 – 萌娘百科

游戏以日本麻将(立直麻将)的规则衍生而来。

  • 麻将牌:仅使用 1s-9s 共 9 种麻将牌,每种各 4 张。即共有 36 张麻将牌。(为了方便,下文直接表示为数字 1-9
  • 玩家:仅两人。一人为庄家(东),和牌或流局听牌则连庄,否则将庄家转移至另一人。不计算本场数。
  • 特殊规则:
    • 鸣牌:无吃、碰、明杠,但有暗杠(不破坏门清)。
    • 立直:有立直,即听牌时可宣布听牌,此后不可换听,只能摸切(但并不像常规日麻那样扣除 1000 点供托,是 bug 吗?
    • 宝牌:无宝牌、无王牌,所有牌均摸完时流局。无赤宝牌。
    • 振听:有振听,即当听牌中含有自己打出过的牌时,只能自摸和牌,不可荣和。
    • 击飞:有击飞,且为唯一的结束游戏方式。当一方点数小于 0 时,游戏结束。(但游戏中电脑方点数无限……
    • 暗杠:若立直,暗杠不得改变听牌形式。暗杠补牌方法与常规摸牌相同,即摸取牌山按顺序的下一张。
    • 诈和:游戏为了增大难度,不进行听牌及和牌提示。若在未和牌时宣布和牌,则为诈和,罚役满点数。
  • 采用役种:
    • 1 番:断幺九、平和、立直、一发、门前清自摸和、一杯口、海底捞月、河底捞鱼、岭上开花
    • 2 番:一气通贯、七对子、对对和、三暗刻、三杠子、双立直
    • 3 番:二杯口、纯全带幺九
    • 6 番:清一色
    • 役满:四暗刻、绿一色、九莲宝灯、四杠子、天和、地和、人和
    • 不计单个役种的两倍役满。但允许多个役种进行复合多倍役满
    • 当无役满役种但番数至少有 13 番时,记为累计役满。
    • 有流局满贯,记为 4 番。
  • 点数计算:
    • 4 番(流局满贯):8000 点
    • 6-7 番(跳满):12000 点
    • 8-10 番(倍满):16000 点
    • 11-12 番(三倍满):24000 点
    • 13 番(累计役满)/役满:32000 点
    • 庄家和牌时,获得点数为 1.5 倍。
    • 无自摸损,自摸与荣和没有区别。

游戏流程

  • 游戏开局:将 36 张牌随机排列,庄家拿取 14 张,闲家拿取 13 张,然后从庄家开始进行。
  • 游戏进行:双方轮流进行回合:
    • 第一回合(起庄)
    • 判断和牌:若和牌,则宣布自摸
    • 判断立直:若打出某张牌可听牌,则宣布立直
    • 打牌:打出一张牌至牌河
    • 循环进行:
    • 判断荣和:若对方打出的牌加入自己的手牌内可和牌,则宣布和牌
    • 摸牌:从牌山中获得一张牌
    • 判断和牌:若和牌,则宣布自摸
    • 判断立直(未立直时):若打出某张牌可听牌,则宣布立直
    • 打牌(未立直时):打出一张牌至牌河
    • 打牌(已立直时):打出摸进的牌至牌河
  • 游戏结算:
    • 若宣布自摸,则计算点数
    • 若宣布荣和,则检查振听
    • 若无振听,则计算点数
    • 若有振听,则直接判定为诈和
    • 若无人听牌(牌山摸完),则宣布流局
  • 游戏终局:
    • 双方交换点数
    • 若一方点数 < 0,则结束游戏
    • 否则,将庄家交由和牌方继续。若流局,则判断庄家是否听牌。若听牌则庄家不变,不听则交换庄家。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

WC Captcha eight × one =