一个经典的 Flash 麻将游戏 “Bamboo 麻雀” 的复刻计划。
目前使用 Python 对游戏全流程进行演示。
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,则结束游戏
- 否则,将庄家交由和牌方继续。若流局,则判断庄家是否听牌。若听牌则庄家不变,不听则交换庄家。