作者superlubu (叔叔你人真好)
看板java
标题Re: [问题] 以Java做麻将判别胡牌或听牌的程式
时间Wed Jun 11 23:42:53 2008
※ 引述《ChonPiggy (崇小猪)》之铭言:
: 12344456777999 123 这样..
: 一开始把444 777 999 拿掉..
: 剩下123 56 123 这样也不能胡了呀@@
: 我到底该怎麽判断才好..
: 或者应该是其他方式?
我会用第二个方法,不过修改一点...
11223344456777999 先抽出三张的
([444][777][999]) 剩 11223356
然後抽出顺子
([444][777][999]) ([123][123]) 剩 [56]
若剩下的牌多过两张,则不能胡
若剩下的两张为将眼 -> 胡牌
看看剩下两张牌 (i, j) 的 j-i 值
j-i > 2,不能胡
j-i == 2,查看三张组里有没有在中间的牌,有的话即可凑回顺子和将眼,胡牌
例: 如剩下的是 3, 5.... 在三张中有 [444],可凑成 [345][44]
j-i == 1,查看三张组中有没有 (i-1) 或 (j+1) 的牌,有即胡...
大概像这样,不过不知道能否应付所有的牌型 :P
==== 加按 ====
哈哈,睡到床上後想到一个不能应付的例子: 444 777 XXX XXX 35678
XXX 为不同花色的三张或顺子 (麻将嘛....)
依上面的情况一排... 啊 444 777 XXX XXX 567 (3,8) 不能胡? 坏了...
这个情况,就要从抽完三张後重新再来,把剩下的牌
由大至小排序 :
([444] [777]) (87653) (XXX XXX) <-- 这一堆永远不用理会
然後也是抽顺子... ([444] [777]) ([876]) 剩 (5,3)
这样就能胡了...
所以抽顺子那边要先顺序抽一次看看能不能胡,不能的话倒转顺序抽一次看看
==== 加按完毕,睡觉去 XD 不知道会否又想到一些侦测不到的牌型 XD ====
--
劲过吕布的劲过相簿...
http://www.pixnet.net/superlubu
乱七八糟的,不好意思 m(_ _)m
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.218.38.49
※ 编辑: superlubu 来自: 203.218.38.49 (06/12 00:08)
1F:推 ChonPiggy:这方法感觉也不错 不过我後面就有点乱了@@我先试试T大的 06/12 00:10