关于java 麻将听牌算法法应该怎么写

下次自动登录
现在的位置:
& 综合 & 正文
麻将听牌的算法(java)
近来正在做麻将游戏,写了个判断听牌的(暂且称其为算法),和大家分享一下,算法还没通过全面的验证,可能会遗漏某些情况。(我不太会打麻将阿)其中判断和牌算法的是网上找的,是听牌算法的基石。在这感谢这位仁兄了。1、在介绍算法之前,先说说我的牌值顺序: 0-8
: 1-9万 9-17 : 1-9筒 18-26: 1-9条 27-30: 东南西北风 31-33: 中发白 无花2、MaJiang3.java 是判断可否听牌的程序 (1)、判断点:当玩家抓进一张牌后(14张),系统判断出这时候打出某些牌后就听牌了 (2)、思想:检查将某个牌替换成另一个牌后能不能和(不考虑番种),能和就表示能听3、MaJiang2.java 是判断某一手牌是否能和的程序
还是看代码吧,我在程序里加了些注释:
import java.util.*;public class MaJiang3...{
先拿掉一个,然后再检测缺少什么,补上,这里不行,就补别的地方
public ArrayList entryList = new ArrayList();
//替换对子
private int fmaj = -<span style="COLOR: #;
//可以打掉的牌
private int tmaj = -<span style="COLOR: #;
//可以补上的牌
int[] w=...{<span style="COLOR: #,<span style="COLOR: #,<span style="COLOR: #,<span style="COLOR: #,<span style="COLOR: #,<span style="COLOR: #,<span style="COLOR: #,<span style="COLOR: #,<span style="COLOR: #};
//<span style="COLOR: #-9万各个牌的个数
int[] to=...{<span style="COLOR: #,<span style="COLOR: #,<span style="COLOR: #,<span style="COLOR: #,<span style="COLOR: #,<span style="COLOR: #,<span style="COLOR: #,<span style="COLOR: #,<span style="COLOR: #};
int[] ti=...{<span style="COLOR: #,<span style="COLOR: #,<span style="COLOR: #,<span style="COLOR: #,<span style="COLOR: #,<span style="COLOR: #,<span style="COLOR: #,<span style="COLOR: #,<span style="COLOR: #};
int[] z=...{<span style="COLOR: #,<span style="COLOR: #,<span style="COLOR: #,<span style="COLOR: #,<span style="COLOR: #,<span style="COLOR: #,<span style="COLOR: #};
public MaJiang3(int[] w, int[] to, int[] ti, int[] z)
private void ting()
for(int i = <span style="COLOR: #; i & <span style="COLOR: #; i++)
boolean exeIT = false;
if((i & <span style="COLOR: # && w[i] &<span style="COLOR: #) )
if(!check())
...{ w[i]++;continue;}
else if(i &=<span style="COLOR: # && i & <span style="COLOR: # && to[i-<span style="COLOR: #] &<span style="COLOR: #)
to[i-<span style="COLOR: #]--;
if(!check())
...{ to[i-<span style="COLOR: #]++;continue;}
to[i-<span style="COLOR: #]++;
else if(i &=<span style="COLOR: # && i &<span style="COLOR: # && ti[i-<span style="COLOR: #] &<span style="COLOR: #)
ti[i-<span style="COLOR: #]--;
if(!check())
...{ ti[i-<span style="COLOR: #]++;continue;}
ti[i-<span style="COLOR: #]++;
else if((i &= <span style="COLOR: # && z[i-<span style="COLOR: #] &<span style="COLOR: #))
z[i-<span style="COLOR: #] = z[i-<span style="COLOR: #] -<span style="COLOR: #;
if(!check())
...{ z[i-<span style="COLOR: #]++;continue;}
z[i-<span style="COLOR: #]++;
private boolean check()
boolean res = true;
res = checkZi(z, <span style="COLOR: #);
//如果字牌不符合条件,就不用检查序数牌了
checkNum(w, <span style="COLOR: #);
checkNum(to, <span style="COLOR: #);
checkNum(ti, <span style="COLOR: #);
//检查字:因为字和序数牌不同,单独拿出来
private boolean checkZi(int[] hua, int beginLoc)
boolean checkjiang = false;
for(int i = <span style="COLOR: #; i & hua. i++)
if(beginLoc + i == fmaj) continue;
if(hua[i] == <span style="COLOR: #)
if(hu(w,to,ti,z))
tmaj = beginLoc+i;
entryList.add(new Entry(fmaj, tmaj));
if(!checkjiang)
checkjiang = true;
return false;//不用往下匹对了,
else if(hua[i] == <span style="COLOR: #)
if(hu(w,to,ti,z))
tmaj = beginLoc+i;
entryList.add(new Entry(fmaj, tmaj));
return false;//不用往下匹对了
&&&&推荐文章:
【上篇】【下篇】京 东 价:
[定价:¥]
PLUS会员专享价
支&#x3000;&#x3000;持:
重&#x3000;&#x3000;量:
搭配赠品:
服务支持:
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
麻将全部听牌类型讲解
商品介绍加载中...
扫一扫,精彩好书免费看
京东商城向您保证所售商品均为正品行货,京东自营商品开具机打发票或电子发票。
凭质保证书及京东商城发票,可享受全国联保服务(奢侈品、钟表除外;奢侈品、钟表由京东联系保修,享受法定三包售后服务),与您亲临商场选购的商品享受相同的质量保证。京东商城还为您提供具有竞争力的商品价格和,请您放心购买!
注:因厂家会在没有任何提前通知的情况下更改产品包装、产地或者一些附件,本司不能确保客户收到的货物与商城图片、产地、附件说明完全一致。只能确保为原厂正货!并且保证与当时市场上同样主流新品一致。若本商城没有及时更新,请大家谅解!
权利声明:京东上的所有商品信息、客户评价、商品咨询、网友讨论等内容,是京东重要的经营资源,未经许可,禁止非法转载使用。
注:本站商品信息均来自于合作方,其真实性、准确性和合法性由信息拥有者(合作方)负责。本站不提供任何保证,并不承担任何法律责任。
印刷版次不同,印刷时间和版次以实物为准。
价格说明:
京东价:京东价为商品的销售价,是您最终决定是否购买商品的依据。
划线价:商品展示的划横线价格为参考价,该价格可能是品牌专柜标价、商品吊牌价或由品牌供应商提供的正品零售价(如厂商指导价、建议零售价等)或该商品在京东平台上曾经展示过的销售价;由于地区、时间的差异性和市场行情波动,品牌专柜标价、商品吊牌价等可能会与您购物时展示的不一致,该价格仅供您参考。
折扣:如无特殊说明,折扣指销售商在原价、或划线价(如品牌专柜标价、商品吊牌价、厂商指导价、厂商建议零售价)等某一价格基础上计算出的优惠比例或优惠金额;如有疑问,您可在购买前联系销售商进行咨询。
异常问题:商品促销信息以商品详情页“促销”栏中的信息为准;商品的具体售价以订单结算页价格为准;如您发现活动商品售价或促销信息有异常,建议购买前先联系销售商咨询。
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
浏览了该商品的用户还浏览了
加载中,请稍候...
联系供应商
七日畅销榜
新书热卖榜
iframe(src='///ns.html?id=GTM-T947SH', height='0', width='0', style='display: visibility:')扫码下载APP
随时选购服务
需求发布后1小时内收到服务商响应每个需求平均有10个服务商参与95%以上的需求得到了圆满解决所有需求不向雇主收取任何佣金一站式解决企业建站需求
温州麻将听牌胡牌算法程序编写
温州麻将听牌胡牌算法程序编写
雇主预算:¥900.00
已收到 6 个服务商的文案稿件
, 最终中标
有相似问题想解决?专业顾问来帮助您
01发布需求, 托管赏金02服务商交稿03雇主选稿04中标公示05验收并付款06评价
通过猪八戒网实名认证,保证身份真实可靠
完成手机认证,保证能随时联系到服务商
参与需求,开始赚钱
第1步:提交您的稿件
第2步:中标后交付作品
第3步:获得赏金
该需求下的优秀交稿
TA的交稿:
我熟悉四川麻将,写过四川麻将的听牌算法。温州麻将的规则网上有,我修改一下就可以了。扣:四五零八一四六八八
交易成功的需求
其它工具软件相关需求
&!&在线客服的工作时间为周一至周五 9:00-18:00&&您现在的位置: >
打麻将听牌的禁忌
& & & & 打麻将听牌是和牌的前奏,多面听又有利于和牌,并且往往能和出大番。在麻将实战中,使手牌尽快牌是许多牌手希望的一件事。但又往往事与愿违。为什么呢?下例的几种情况都是牌友们最容易犯的大错:
& & & &1、遇到零星之牌,自认无望,索性扣起全部门风番子,供下家食和;
& & & &2、6张落地,手牌还剩7张,呈一人听牌姿,碰听后却是鸡和。如若不碰,摸人上张牌便可获得干和。由于时间尚早,有碰也不碰,决计不愿鸡和,但待平和。
& & & &3、因为做碰碰和只差一张完成,有听不叫;有两对客风的混一色想做成清一色而拆掉两对客风舍出。
& & & &4、直到摸荒,决意扣住生张不打,也不求叫和;因所叫的牌是绝张,断然拆舍而不叫。
& & & &由于上面四种情况一般都会阻碍我们的手牌向前进一步发展,必须要改进,不然就可能导致失败。我们这么是有理由的。
& & & & &三分运气,七分技巧&。打麻将既有技巧又有运气因素。即使起手牌很烂,也不能放弃,应该努力争取:比方说,有局牌是这样的,A做的是对对和,B做的是混一色,刚好他们手上每人有一对七条和一对白板(刚好两人对死)。而C则做的是干和牌,手里只有八、九条等着边七条成和。这样看,他们三个肯定这样永远都不会开和的。假如你在这时候偏偏有和而不叫,岂不亏死?
& & & & 欲话说:莫谓君行早,更有早行人。不管叫牌怎么早,有小和不和反而会因小失大。不管是什么时候,能碰就要碰下来,马上叫和不能犹豫不决。
& & & & 如果手上的牌真的是只差一张牌就可做成对对和的,这个时候叫和与不叫和,就要慎重区别分析。如果所叫的对子恰好系番子,比如三、七等尖张或者连场风等,还不如不叫;如果所叫的牌刚好是幺九对子,那就应该以叫和为主。
& & & & 如果是要拆一对客风去做清一色,除非上张的一色牌太多了,不然就不要轻易尝试。因为你如果舍一对客风对子,你的牌路就相当于暴露给其他玩家了。
& & & & 快到流局的时候扣生张的做法,好像没有什么不对的。但是,别家没有大牌,或者离摸牌尚远,当然仍以叫和为主。有时候,你所扣的那张生张,不一定是要点炮的牌,如果是这样牺牲自己的牌姿就非常不值。
& & & & 绝张不叫牌是战术上的失误。所谓绝张是他人已碰刻,尚有一张待牌的机会,万一自摸或者抢杠,都是有可能的;其次如遇将头开张,即可改变原来自叫绝张牌,成为单钓听张。同理,倘若摸进一张与绝张搭子可以成对的牌时,便可改为对倒叫听。概括上述,打牌以食和为原则。

我要回帖

更多关于 麻将听牌算法 的文章

 

随机推荐