客服热线:13252029265

福建体彩3i选7走势图:房卡麻将配牌器的开发原理和设计方法

2019-04-09 10:39:51浏览:437评论:0 来源:棋牌之家   
核心摘要:”配牌器“就是一套能够对所有操作需求生成出给玩家相应牌型的算法。房卡麻将配牌器的算法基于现有的麻将牌逻辑类扩展出一些函数即可,
   房卡麻将开发系列之”配牌器”算法设计??⒐?,我深深的体会到,一个有多年摸牌经验的服务器主程是有多么重要!记得年前帮一家公司做房卡麻将项目,对方从上到下,基本没人会玩麻将,诸事都需要请教麻友,这样的情况我觉得上线的产品应该也不太会好吧,没爱的设计~!不过我可是8岁就上牌桌,八十年代家里就有了一幅竹制麻将。而童年时每年最开心的事情,莫过于过年时和小伙伴们”搓麻“赌压岁钱了。上大学离家之前的十几年里,时常家里”叮叮咣咣“的”呼啦“声是我人生最重要的记忆了。现在的我,虽然一年也打不上两圈牌了,但是仍然可以不看牌面的情况下用手摸出每一张牌。
房卡麻将配牌器的开发原理和设计方法
  在这种情况下,写麻将算法似乎是得心应手的事情。而在碰到胡牌算法调试时,快速理解并写出对应的发牌器算法,也是很有意思并且实用的事情。
  ”配牌器“就是一套能够对所有操作需求生成出给玩家相应牌型的算法。对于福建31选7走势图体彩者来说,这是必不可少的,他可以快速的帮助开发者调试出吃,碰,杠,听,胡等各个操作的正确性。节省调试的时间和成本。试想下,如果你让测试员自已打出”天胡“,这似乎是比登天还难的事情罢~。
  今天,我们就来讲一下房卡麻将的配牌器开发原理和设计方法。
  ”配牌器“的算法基于现有的麻将牌逻辑类扩展出一些函数即可。比如这样:
  在原本随机发牌函数的基础上增加各个牌型的发牌函数即可。然后就是为每个函数完成相应的牌型安排。
  比如,房卡麻将配牌器开发之“七小对”
  //牌型发牌 – 七对子
  void CGameLogic::SetCardData_QiDuiZi(BYTE cbLeftCardCount, BYTE cbCardData[], BYTE cbMaxCount)
  {
  //座位
  BYTE cbChar = 0;
  //玩家的牌
  //玩家1: 四饼对,八饼对,四万对,五万对,二条对,四条对,还有一个九饼待配对
  BYTE cbP1PaiData[13] = { 0x04, 0x04, 0x08, 0x08, 0x09, 0x14, 0x14, 0x15, 0x15, 0x22, 0x22, 0x24, 0x24 };
  BYTE cbP2PaiData[13] = { 0x11, 0x11, 0x11, 0x11, 0x13, 0x13, 0x15, 0x15, 0x27, 0x27, 0x28, 0x28, 0x19 };
  BYTE cbP3PaiData[13] = { 0x22, 0x22, 0x22, 0x22, 0x23, 0x23, 0x23, 0x23, 0x27, 0x27, 0x29, 0x29, 0x33 };
  BYTE cbP4PaiData[13] = { 0x31, 0x31, 0x31, 0x32, 0x33, 0x34, 0x34, 0x35, 0x35, 0x37, 0x37, 0x44, 0x44 };
  //发给玩家的牌
  BYTE cbP1QiPai = 0x09; //玩家起牌自摸。
  BYTE cbP2QiPai = 0x09 ;//玩家起牌打出去吃胡。
  BYTE cbP3QiPai = 0x23;
  BYTE cbP4QiPai = 0x04;
  BYTE cbP5QiPai = 0x19;
  BYTE cbP6QiPai = 0x26;
  BYTE cbP7QiPai = 0x33;
  BYTE cbP8QiPai = 0x28;
  //填充到发牌的手牌数据里。
  CopyMemory(&cbCardData[cbLeftCardCount – (MAX_COUNT – 1)], cbP1PaiData, sizeof(cbP1PaiData));
  CopyMemory(&cbCardData[cbLeftCardCount – 2 * (MAX_COUNT – 1)], cbP2PaiData, sizeof(cbP2PaiData));
  CopyMemory(&cbCardData[cbLeftCardCount – 3 * (MAX_COUNT – 1)], cbP3PaiData, sizeof(cbP3PaiData));
  CopyMemory(&cbCardData[cbLeftCardCount – 4 * (MAX_COUNT – 1)], cbP4PaiData, sizeof(cbP4PaiData));
  //填充到起牌的数据前八个牌里面。
  cbCardData[cbLeftCardCount – 4 * (MAX_COUNT – 1) – 1] = cbP1QiPai;
  cbCardData[cbLeftCardCount – 4 * (MAX_COUNT – 1) – 2] = cbP2QiPai;
  cbCardData[cbLeftCardCount – 4 * (MAX_COUNT – 1) – 3] = cbP3QiPai;
  cbCardData[cbLeftCardCount – 4 * (MAX_COUNT – 1) – 4] = cbP4QiPai;
  cbCardData[cbLeftCardCount – 4 * (MAX_COUNT – 1) – 5] = cbP5QiPai;
  cbCardData[cbLeftCardCount – 4 * (MAX_COUNT – 1) – 6] = cbP6QiPai;
  cbCardData[cbLeftCardCount – 4 * (MAX_COUNT – 1) – 7] = cbP6QiPai;
  cbCardData[cbLeftCardCount – 4 * (MAX_COUNT – 1) – 8] = cbP6QiPai;
  }
  这样在牌局开始时,四个玩家即按如上牌型得到手牌牌墙,并按设定的起牌摸牌。这样即可快速进行七小对的测试。
  房卡麻将配牌器开发之“杠底开花”
  //牌型发牌 – 杠上开花
  void CGameLogic::SetCardData_GangShangKaiHua(BYTE cbLeftCardCount, BYTE cbCardData[], BYTE cbMaxCount)
  {
  //座位
  BYTE cbChar = 0;
  //玩家的牌
  //玩家1:一饼三个待杠
  BYTE cbP1PaiData[13] = { 0x01, 0x01, 0x01, 0x02, 0x02, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x31, 0x31 };
  BYTE cbP2PaiData[13] = { 0x11, 0x11, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x31, 0x32 };
  BYTE cbP3PaiData[13] = { 0x21, 0x21, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x33, 0x33 };
  BYTE cbP4PaiData[13] = { 0x31, 0x31, 0x31, 0x32, 0x33, 0x34, 0x34, 0x35, 0x35, 0x37, 0x37, 0x34, 0x34 };
  //发给玩家的牌
  BYTE cbP1QiPai = 0x01;//起手暗杠
  BYTE cbP2QiPai = 0x31;//杠后起牌东风胡
  BYTE cbP3QiPai = 0x23;
  BYTE cbP4QiPai = 0x24;
  BYTE cbP5QiPai = 0x25;
  BYTE cbP6QiPai = 0x26;
  BYTE cbP7QiPai = 0x27;
  BYTE cbP8QiPai = 0x28;
  CopyMemory(&cbCardData[cbLeftCardCount – (MAX_COUNT – 1)], cbP1PaiData, sizeof(cbP1PaiData));
  CopyMemory(&cbCardData[cbLeftCardCount – 2 * (MAX_COUNT – 1)], cbP2PaiData, sizeof(cbP2PaiData));
  CopyMemory(&cbCardData[cbLeftCardCount – 3 * (MAX_COUNT – 1)], cbP3PaiData, sizeof(cbP3PaiData));
  CopyMemory(&cbCardData[cbLeftCardCount – 4 * (MAX_COUNT – 1)], cbP4PaiData, sizeof(cbP4PaiData));
  cbCardData[cbLeftCardCount – 4 * (MAX_COUNT – 1) – 1] = cbP1QiPai;
  cbCardData[cbLeftCardCount – 4 * (MAX_COUNT – 1) – 2] = cbP2QiPai;
  cbCardData[cbLeftCardCount – 4 * (MAX_COUNT – 1) – 3] = cbP3QiPai;
  cbCardData[cbLeftCardCount – 4 * (MAX_COUNT – 1) – 4] = cbP4QiPai;
  cbCardData[cbLeftCardCount – 4 * (MAX_COUNT – 1) – 5] = cbP5QiPai;
  cbCardData[cbLeftCardCount – 4 * (MAX_COUNT – 1) – 6] = cbP6QiPai;
  cbCardData[cbLeftCardCount – 4 * (MAX_COUNT – 1) – 7] = cbP6QiPai;
  cbCardData[cbLeftCardCount – 4 * (MAX_COUNT – 1) – 8] = cbP6QiPai;
  }
  玩家在拿到一饼后即可暗杠,摸出东风后胡。
  其它的算法也都可以按同样的路子改出来,注意好牌型和玩家对应关系就可以了。
(责任编辑:棋牌之家)
下一篇:

棋牌游戏运营想要盈利 有哪些突破口

上一篇:

联众2018年游戏业务营收2.66亿元 占比总营收77.55%

打赏
免责声明
本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们
 
0相关评论
  • 愿赌服输!炒股赚了没见你们给大家分点? 2019-10-11
  • 特朗普不容小觑,而我们中下层的群众也买不了什么美帝高端奢侈品 2019-10-10
  • 我喜欢论坛,它不仅让我学到了许多知识及传播知识,同时让我看到了许多不能自圆其说的帖子,让我开心 2019-10-10
  • 所有的理论基础都是围绕自己的利益开展的,不要自己的利益,别人干嘛跟你抬杠?你让别人放弃利益,别人有跟你说什么呢?难道吃饱了撑得慌? 2019-10-10
  • 险!年近八旬老人就医晕倒 赞!医生不顾腰伤抱起抢救(图) 2019-10-05
  • 女排小鬼当家大逆转德国队 安家杰带队三人发挥惊艳 2019-10-05
  • 银行卡被盗刷怎么办?这样做可避免损失进一步扩大 2019-10-04
  • 证监会:打击市场“黑嘴” 打好专项执法攻坚战 2019-10-04
  • 叙利亚防空导弹先进,雷达却极为陈旧,俄罗斯有意“忘记”了吗? 2019-09-30
  • 广州举行端午龙舟胜景活动 2019-09-30
  • 鄱阳湖上的江豚“保镖” 2019-09-28
  • 紫光阁中共中央国家机关工作委员会 2019-09-25
  • 吉安石桥镇有人填塘建房影响灌溉 已被叫停 6月底前完成清理 2019-09-25
  • 交通部:7月1日起禁止不合规车辆运输车通行 2019-09-22
  • 骆惠宁主持召开十一届省委全面深化改革领导小组第十五次会议 2019-09-19
  • 半全场玩法 捕鱼打鱼机有什么赢钱技巧 长期跟踪 稳赚 双色球复式投注模式 新疆风采18选7开奖 福彩3d开奖号码 澳洲幸运5最快开奖结果 吉林快三今天最大遗漏 安卓赛车游戏 足彩竞彩最新开奖结果查询 环亚电游平台 世俱杯 穷疯了快速赚钱的法子 p3开机号今天晚上 怎样下载广西快三现场开奖直播