癞子麻将胡牌算法实现游戏插牌动画如何实现?

2374人阅读
游戏开发技术闲谈(1)
& & & &测试测试!!~~~~这两周都是在测试各种BUG,没事情的时候自己在网上学学新知识,也为下个月的游戏改版预热。最近呢我也开始了我的shader之旅,估计也是这充满神秘和艰辛的旅途吧,哈哈哈! & & & &今天写的这篇文章是为下次项目添加的一个功能,也就是麻将的听牌功能。不打麻将的童靴一定不知道什么叫听牌,可是我打麻将最初也不知道什么是听牌,霍霍,好丢人啊,估计是以前有东南西北中发白的时候这种功能多一些,现在都是血战麻将了。我自己说不清就请度娘吧,听牌:麻将游戏术语,牌局之中,到达了「只要再凑一张即可成功胡牌」的阶段,就叫「听牌」,也就是说你目前的手牌有叫,然后听牌就可以快速知道你可以胡什么牌。
& & & &好了,那么我们就说一说具体的实现方式吧!要知道麻将是由108张牌组成,其中花色分为了万、筒、条三种,每种花色有1~9的数值。麻将的胡牌方式我在这里就不再解释了,有兴趣的可以百度一下。我们使用一个数组来存储一副牌:
int[] midList = new int[30] {
0,0,0,0,0,0,0,0,0,
1万~9万的个数
0,0,0,0,0,0,0,0,0,
1筒~9筒的个数
0,0,0,0,0,0,0,0,0
1条~9条的个数
& & & &这里就是建立了一个长度为30的数组,从下标1开始存储麻将的个数,其中下标1~9代表的就是1万~9万,下标11~19代表的就是1筒~9筒,下标21~29代表的就是1条~9条。这样,一副手牌的就能完整的很直观的反应出来。除去金勾掉和小七对的牌型,我们的胡牌基本就可以定为:XX XXX XXX XXX XXX 其中XX代表的将牌,XXX则是代表三张相同牌或者顺子。明白了胡牌方式以后,我们就可以开始我们的听牌。如果要听牌,就要算出所有的可能胡的牌,那牌有108张,我们不可能都听完吧?!那效率得多低。当然是不用了啦,首先我们要知道自己缺什么牌,比如我们缺筒,那么我们就不需要考虑筒的情况,也不需要考虑10,20,30的情况,因为这里不存数据默认为0的。经过剔除以后,我们的查找就减少了很多。接下来看看代码:
&span style=&font-size:18&&public bool mayHu(int[] pai)
if (remainPai(pai))
jiangPai = 0;
for (int i = 1; i & 30; i++)
if (pai[i] &= 0 || (i & playerService[0].player.queZhang && i & playerService[0].player.queZhang + 10)|| (i%10==0))
if (pai[i] == 4)
pai[i] = 0;
if (mayHu(pai))
pai[i] = 4;
if (pai[i] &= 3)
pai[i] -= 3;
if (mayHu(pai))
pai[i] += 3;
if (jiangPai == 0 && pai[i] &= 2)
jiangPai = 1;
pai[i] -= 2;
if (mayHu(pai))
jiangPai = 0;
pai[i] += 2;
if (i % 10 != 8 && i % 10 != 9 && pai[i + 1] & 0 && pai[i + 2] & 0)
pai[i + 1]--;
pai[i + 2]--;
if (mayHu(pai))
pai[i + 1]++;
pai[i + 2]++;
public bool remainPai(int[] pai)
int sum = 0;
for (int i = 0; i & pai.L i++)
sum += pai[i];
if (sum == 0)
}&/span&& & & & & & 上面的代码就是听牌的主要代码。使用了递归算法来处理这个问题代码看起来也简单了很多。上面主要的思路我简单解释一下:首先我们要从判断14张手牌是否有叫,需要分别剔除4张相同牌,3张相同牌,然后就是对子,最后就是顺子。我们利用递归来分别处理每一种可能的情况,如果此次递归结束后剩余牌为0,则代表这张是我们的胡牌了。
& & & & & 这里给出的只是主要算法,需要的童鞋可以下载自行更改测试一下。有什么问题或者错误欢迎提出来或者给我留言哦。谢谢大家!!!!
& & & & & &&
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:5785次
排名:千里之外
(1)(1)(1)(2)(1)(2)棋牌室麻将游戏规则_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
棋牌室麻将游戏规则
上传于|0|0|文档简介
&&ghkyuiuyi
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩41页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
麻将游戏软件的听牌牌型分析
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
麻将游戏平台服务器系统的设计与实现
下载积分:1998
内容提示:麻将游戏平台服务器系统的设计与实现
文档格式:PDF|
浏览次数:243|
上传日期: 05:36:22|
文档星级:
该用户还上传了这些文档
麻将游戏平台服务器系统的设计与实现
官方公共微信藏式麻将游戏的设计与实现_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
藏式麻将游戏的设计与实现
|0|0|暂无简介
中国规模最大的中文学术期刊荐稿网络|
总评分0.0|
试读已结束,如果需要继续阅读或下载,敬请购买
定制HR最喜欢的简历
你可能喜欢
您可以上传图片描述问题
联系电话:
请填写真实有效的信息,以便工作人员联系您,我们为您严格保密。}

我要回帖

更多关于 麻将动画片 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信