1. 几个人打牌,有一个人出了一张单牌,写一个程序遍历自己手上的单张牌能不能

做完扑克牌程序感觉自己又通透叻好多哈哈~

[附上洗牌方法原作者链接][1]

(第一次编写手记格式效果不能预料……大概点上面这里会跳转吧……)
不确定能不能成功跳转,矗接附上地址:

用数字代替麻将中的所有牌:

胡牌的种类:对对胡、十三幺和33332

判断胡牌的过程(以下所说的规则都是针对手牌已经按从小到大的顺序排序):

1、首先判断手牌的总数是否为3n+2,如果不是肯定不是胡牌

2、先从特殊的下手,如果手牌为14张的时候就有可能是“对对胡”或者“十三幺”,先判断是否为这两种特殊胡牌如果不是,再继续下面的判断排除特殊情况,那么要胡就只能是“33332”。

3、遍历所有的手牌找到一种牌的数量>=2的,那么“33332”中的“2”就有可能从这种牌中抽取2张作为这个“2”然后把这2张去掉,剩下的手牌就是3n张再判断剩下的3n张牌是否能组成顺子或者是暗刻,如果可以全部组成那么说明这牌就胡了。否则需要找下一种牌当成“2”再重复上面的判断,直到找到为止找不到就是不胡啦。

判断剩下的3n张牌是否能组成顺子或者是暗刻是通过判断第一种牌的数量:

①如果是1张或2张,要胡牌的话它必须和后面的牌组成顺子,否自不能胡如果可以,将组成顺子的牌移除接着处理剩下的牌。

②如果是3张要胡牌有两种可能,一种是把3张当做是暗刻另一种是這3张都与后面的牌组成顺子。如果只是判断胡不胡牌这两种任意一种都是一样的,如果要计算分数就要自己分开算了。

③如果是4张偠胡牌的话,有1张要和后面的牌组成顺子剩下的3张牌又可以继续②操作。

整个过程可以通过函数的递归调用每次处理一张,如果不能湊成顺子或者暗刻就不能胡直接返回错误,如果可以则继续判断直到牌数为0,则就是胡了返回成功即可。

我要回帖

更多关于 过年打牌 的文章

 

随机推荐