13张麻将技巧口诀

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

13张麻将技巧口诀
先大致介绍一下麻将规则:
各地的麻将有各自的特色,规则上有许多差异。

麻将牌有条子、筒子、万子,分别从1到9各4张。

一条、二条、...九条
一筒、二筒、...九筒
一万、二万、...九万
"东南西北中发白"字牌各4张
有的麻将还有花牌"春夏秋冬梅兰竹菊"各1张
共计144张牌。

玩家有一手牌3n+1张(n为0,1,2...)。

根据13张麻将和16张麻将的玩法n的上限不同,分别为4和5。

一手牌再加上别家打出的一张牌或者自己摸进的一张牌,组成3n+2张牌可以判断是否胡牌。

基本牌型分为刻、顺、杠、将。

刻是3张同样的牌。

顺是3张同一花色连号的条子、筒子或万子。

将是2张同样的牌。

杠是4张同样的牌(由于杠牌时会补一张牌,所以玩家手牌数量仍然是3n+1张)
吃牌、碰牌、杠牌
吃牌是取上家打出的牌和自己的牌组成顺。

碰牌是取别家打出的牌和自己的牌组成刻。

杠牌是取别家打出的牌或者自己摸到的牌和自己的牌组成杠。

吃碰的玩家不摸牌,但仍然需要打出一张。

杠牌的玩家需要补一张牌,并仍然需要打出一张。

麻将一般4人围成一桌,分为东南西北四家,轮流做庄。

游戏开始各自初始拿到一样数目的牌(13张麻将拿13张,16张麻将拿16张)。

从上局赢家开始摸牌,摸一张牌打一张牌。

只有下家可以吃上家打出的牌,任何玩家都可以碰(或者杠)其他玩家打出的牌。

在游戏中,玩家需要想办法使得牌型成为某一种胡牌的类型。

要胡牌,一般需要配成一将搭配若干个刻或者顺。

(也有其他特殊类型的胡牌,不同类型胡牌有翻(或者台)的累积。

翻数越高,赢得越多)
百搭麻将是一种有趣的变种。

许多麻将玩法中都有百搭牌的玩法。

游戏开始时一般通过骰子确定某张牌是百搭牌。

百搭牌可以根据需要替代任何牌参与组合。

但百搭牌不允许被打出。

现在需要大家写一个函数判断玩家否满足胡牌条件。

为了简化判断,牌只出现条子、筒子、万子和字牌。

并且牌数保证是3n+2张(手牌+1张牌),其中0<=n<=5。

预先吃、碰、杠的牌均不需要考虑。

胡牌只判断3n+2张牌是否满足一将搭配若干个刻或者顺。

不需要计算翻(或者台数)。

当有3张或4张百搭牌时,也直接算胡。

并且规定:
条子是 0x01到0x09
筒子是 0x11到0x19
万子是 0x21到0x29
东南西北分别是0x30,0x40,0x50,0x60
中发白分别是0x70,0x80,0x90
百搭牌是0x00
当牌A被选择为百搭牌时,白板(0x90)就转为代替A牌。

可以参与刻、顺、将的组合。

注意白板本身也可能会被选中为百搭牌。

调用时,白板已经被转为百搭牌本身的牌,所以除非白板本身是百搭,否则参数中不会出现0x90。

bool TestHu(const char pai[], int count, char baida);
pai数组内保存了count个牌(已经按编码由小到大排序)
TestHu函数需要返回true表示牌型可以胡牌。

否则返回false
baida是被选中的百搭牌。

下面举几个例子:
0x00, 0x01, 0x02, 0x03, 0x30, baida = 0x40,胡牌,顺+将,百
搭配将
0x00, 0x11, baida = 0x11,胡牌,将,百搭归位(它配为它本身的牌,注意这里的0x10其实本来是白板)
0x01, 0x02, 0x03, 0x04, 0x05, baida = 0x50, 不胡,无百搭
0x01, 0x02, 0x03, 0x04, 0x04, baida = 0x50, 胡,无百搭,顺+将
0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x03,baida = 0x50, 胡,刻+顺+将(其实此时有许多种搭配都可以)
0x00, 0x00, 0x00, 0x00, 0x01, 0x12, 0x23, 0x60, baida = 0x50, 胡,4百搭。

相关文档
最新文档