棋牌平台开发教程之斗地主常用算法

首先,要弄清楚斗地主的牌型有哪些。可以参考QQ游戏给出的介绍,如下:

火箭:即双王(大王和小王),最大的牌。

炸弹:四张同数值牌(如四个 7 )。

单牌:单个牌(如红桃 5 )。

对牌:数值相同的两张牌(如梅花 4+ 方块 4 )。

三张牌:数值相同的三张牌(如三个 J )。

三带一:数值相同的三张牌 + 一张单牌或一对牌。例如: 333+6 或 444+99

单顺:五张或更多的连续单牌(如: 45678 或 78910JQK )。不包括 2 点和双王。

双顺:三对或更多的连续对牌(如: 334455 、 7788991010JJ )。不包括 2 点和双王。

三顺:二个或更多的连续三张牌(如: 333444 、 555666777888 )。不包括 2 点和双王。

飞机带翅膀:三顺+同数量的单牌(或同数量的对牌)。

如: 444555+79 或 333444555+7799JJ

四带二:四张牌+两手牌。(注意:四带二不是炸弹)。

如: 5555 + 3 + 8 或 4444 + 55 + 77 。

其次,设计CRobot类。

属性包括:原始牌(数) ,当前牌(数) ,前一轮出牌(数) ,当前出牌(数) ,当前分数 ,是否Pass ,等待时间。

方法包括:获得原始牌(数),牌面类型函数 ,排序函数 ,按牌面类型排序函数,出牌函数。

 最后,分牌算法。怎样模拟人工洗牌,这是一个难题。不过这难不倒我。

先将54张牌分成6 * 9的矩阵。

(1) 交换相邻的两行,1和2,3和4,5和6 交换。

(2) 交换相邻的两列,1和2,3和4,5和6,7和8 交换。

(3) 随即选择两行两列进行交换。

以上步骤重复50~100次。然后依次取第一个17张为玩家1的牌,第二个17张为玩家2的牌,第三个17张为玩家3的牌,剩余的3张为底    牌。OK!

具体的细节可以去这里棋牌源码架设 www.yasewl.com

时间: 2024-07-30 14:16:25

棋牌平台开发教程之斗地主常用算法的相关文章

棋牌平台架设教程之斗地主核心算法

首先,要弄清楚斗地主的牌型有哪些.可以参考QQ游戏给出的介绍,如下: 火箭:即双王(大王和小王),最大的牌. 炸弹:四张同数值牌(如四个 7 ). 单牌:单个牌(如红桃 5 ). 对牌:数值相同的两张牌(如梅花 4+ 方块 4 ). 三张牌:数值相同的三张牌(如三个 J ). 三带一:数值相同的三张牌 + 一张单牌或一对牌.例如: 333+6 或 444+99 单顺:五张或更多的连续单牌(如: 45678 或 78910JQK ).不包括 2 点和双王. 双顺:三对或更多的连续对牌(如: 334

棋牌平台开发教程之扎金花大小比较算法在php中的实现

PHP中扎金花比大小如何实现 在棋牌游戏中,不管是现实的还是线上的,扎金花无疑是最热门棋牌游戏之一,鄙人从小就酷爱扎金花,机缘巧合后面从事了IT行业,话不多说,直接进去正题吧. 扎金花两副牌的比较规则就不说了,注明一下是顺子的时候 : JQK < A23 < QKA 下面是个人一点建议,供大家参考!(有哪里不对的欢迎指教 棋牌平台开发: www.yasewl.com) 思路:扎金花 1. 随机生成两幅牌,每副牌结构为 复制代码 代码如下:array( array('Spade','K'), a

棋牌平台制作教程之斗地主选牌算法

第一种:在牌的队列中只有自己被选中,会响应自己的可见区域,和前面一张牌的下部分可见区域. 这种是最简单的,自己被选中的时候,首先改变的正常的可见区域然后+选中之后的可见区域. 选中之后我们改变的就是牌的Y坐标:牌的Y坐标=牌的Y坐标-CheckHigh(选中之后的向上高度) 然后代入下面 NormalRect.setRect(牌的X坐标,牌的Y坐标,牌的X坐标+CardWidth,牌的Y坐标+CardHigh);//这个就是改变之后的正常可见区域. 下面是具体的4个点的坐标计算 (算法仅供参考!

微信公众平台开发教程(八)Session处理

微信公众平台开发教程(八)Session处理 在微信窗口,输入的信息有限,我们需要将一些信息分多次请求. 比如:在进行用户绑定时,我们需要输入用户的相关信息,比如:用户名.密码,或者姓名.电话号码,服务端验证通过,即可将系统用户与微信用户绑定. 然后,此微信账户就有一定的功能权限了,可以查积分,消费记录等.服务号:招商银行信用卡,就有很多功能. 微信客户端无法缓存信息,而且输入信息有限,需要进行多次请求,在服务端保存当前会话状态.这就需要Session. 本文以用户认证,绑定账号为例,来说明具体

微信公众平台开发教程(三) 基础框架搭建

微信公众平台开发教程(三) 基础框架搭建 上一章,我们已经初步讲解了微信公众账号开发的基本原理,今天我们来探索设计实现. 首先我们设计了模块层次图,当然图中只是给出一种实现方式,不局限于此.具体见下图. 主要功能介绍如下: 1)请求接口层.处理HTTP请求,及响应 2)分发层.由接口层传入请求,然后具体分析请求类型,分发至不同的处理器 3)业务逻辑层.这里是我们的具体业务逻辑了,根据请求,实现具体的业务逻辑. 4)数据层.我们在实现某个应用时可能需要访问数据,可以是数据库或者是文件.如果是简单应

微信公众平台开发教程(九)微信公众平台通用开发框架

微信公众平台开发教程(九)微信公众平台通用开发框架 一.思考 开发了几个微信项目,一直在思考:如何将微信相关的处理与业务系统联系在一起?如何做到彼此分离,且易于扩展?能否开发一套独立的微信服务框架,支持各种业务应用? 二.现有常用的服务框架 支持多种业务应用,我们通过分层的方式来实现.将复杂的系统进行分层,将一些功能或者特有的逻辑进行封装,封装为不同的基础服务或中间件.业务层无需关心底层具体实现,只需进行简单调用.组装,即可支撑强大的业务应用.这样保证了层级独立,也使得系统易于维护和扩展.在一个

Senparc.Weixin.MP SDK 微信公众平台开发教程(十五):消息加密

原文:Senparc.Weixin.MP SDK 微信公众平台开发教程(十五):消息加密 前不久,微信的企业号使用了强制的消息加密方式,随后公众号也加入了可选的消息加密选项.目前企业号和公众号的加密方式是一致的(格式会有少许差别). 加密设置 进入公众号后台的“开发者中心”,我们可以看到Url对接的设置: 点击[修改设置],可以进入到修改页面: 加密的方式一共有3种: 明文模式,即原始的消息格式 兼容模式,明文.密文将共存,正式发布的产品不建议使用(因为仍然包含了明文,达不到加密的效果) 安全模

微信平台开发教程

转自:http://www.cnblogs.com/txw1958/p/wechat-tutorial.html 关键字:微信公众平台开发作者:方倍工作室 在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/JS等基础. 我们将使用微信公众账号方倍工作室作为讲解的例子,二维码见底部. 本系列教程将引导你完成如下任务: 创建新浪云计算平台应用 启用微信公众平台开发模式 了解数据收发原理及消息格式 开发实现微信天气预报功能 第

公众号第三方平台开发 教程四 代公众号处理消息和事件

公众号第三方平台开发 教程一 创建公众号第三方平台 公众号第三方平台开发 教程二 component_verify_ticket和accessToken的获取 公众号第三方平台开发 教程三 微信公众号授权第三方平台 公众号第三方平台开发 教程四 代公众号发起网页授权说明 公众号第三方平台开发 教程五 代公众号处理消息和事件 公众号第三方平台开发 教程六 代公众号使用JS SDK说明 另,感谢一下这个大虾的博客,这几篇东西都是在他的博文基础上完成的,他的博客里也有一些接口代码可以下载 微信开发系列