棋牌游戏开发之斗地主算法点选牌

这是转载一位博有的....依稀记得.....

斗地主算法之点选牌

                           -------

                                    有棋牌游戏开发经验的可以来互相交流 QQ:325131039

                   棋牌游戏开发技术交流群: 490287966

              PS:最近找了几个个朋友主准备把斗地主游戏重写,由于种种原因今天还没有开始,所以先把基本的算法写一写,为以后写项目做准备。如果你对斗地主游戏比较感兴趣可以关注此博文,以后将在博客中写一些关于斗地主方面的东西!!

在地主点选牌的算法中,我们只要点击每张牌的可见区域,它的状态就会随之变化。我们通过上图可以发现,每张牌选中之后它会遮盖前面3张牌的可见区域,而后面3张牌会影响自身的可见区域,所以每张牌点选之后与前面3张和后面3张牌有关系(一共就是6张)。第一张牌除外,第一张牌选中之后只有它自己的可见区域会发生变化,因为第一张牌前面没有任何牌。这样我们就可以定义下面几个变量来记录每次点选牌之后的可见区域。

CRECT NormalRect; //正常情况下的可见矩形区域

CRECT TopOrDown; //自己选中或者邻居选中的可见区域

int           CardWidth;//牌的宽度

int           CardHigh;//牌的高度

int          CheckHigh;//选中之后的向上高度

int         CardSpacing;//牌之间的间距

在最开始什么牌也没有点选的时候每张牌有个正常的可见区域,我们用NormalRect来记录,它的值就是NormalRect.setRect(牌的X坐标,牌的Y坐标,牌的X坐标+CardSpacing(牌之间的间距),牌的Y坐标+CardHigh)。下面我们可以分几种情况来讨论可见区域的变化。

第一种:在牌的队列中只有自己被选中,会响应自己的可见区域,和前面一张牌的下部分可见区域(图中蓝色框选出来的部分)。

这种是最简单的,自己被选中的时候,首先改变的正常的可见区域然后+选中之后的可见区域。

选中之后我们改变的就是牌的Y坐标:牌的Y坐标=牌的Y坐标-CheckHigh(选中之后的向上高度)

然后代入下面

NormalRect.setRect(牌的X坐标,牌的Y坐标,牌的X坐标+CardWidth,牌的Y坐标+CardHigh);//这个就是改变之后的正常可见区域。

下面是具体的4个点的坐标计算

X1=牌的X坐标- CardSpacing(牌之间的间距)

Y1=牌的Y坐标

X2=牌的X坐标+CardWidth

Y2=Y1+CheckHigh(选中之后的向上高度)

选中之后的可见区域:TopOrDown.setRect(x1,y1,x2,y2);

然后改变前面一张牌下部分的可见区域。

X1=牌的X坐标+ CardSpacing(牌之间的间距)

Y1=牌的Y坐标+CheckHigh-CheckHigh(选中之后的向上高度)

X2=牌的X坐标+ CardSpacing(牌之间的间距)*2

Y2=牌的Y坐标+CheckHigh;

TopOrDown.setRect(x1,y1,x2,y2);

前面一张牌的正常可见区域不变。

第二种:在牌的队列中会影响其他牌的可见区域

这个可以分二种情况来讨论

1 前面三张牌有被选中的(选中之后前面牌的可见区域会被影响)

当前面3张牌中有选中状态的牌,它们的可见区域会被影响,正常的可见区域不会被影响。而影响的可见区域也只是X2被改变了,影响的可见区域我们可以用一个公式来表示

X2=((checkCardIndex(选中牌的索引) - forntCardindex(前面选中牌的索引))-1)*CardSpacing(牌之间的间距)。

2后面3张牌有被选中的(会影响自身得可见区域)

当我们选中牌的时候,后面三张牌有有被选中的时候。我们首先用第一种:在牌的队列中只有自己被选中的方法来计算出正常的可见区域和可见区域。而选中之后被后面影响的也只有X2,我们同样用一个公式来表示。

X2=( BackCardindex(后面选中牌的索引)-(checkCardIndex(选中牌的索引) )-1)*CardSpacing(牌之间的间距)。

这样当我们选中牌的时候既要改变自身得可见区域也要改变前面3张被选牌的可见区域。

这样在你点选牌的时候根据鼠标坐标,来判断和牌队列中的哪张牌的可见区域碰撞,然后确定牌的索引更改与之对应牌的可见区域就能实现选牌操作。

我们第二种讨论的可见区域只是上面部分的可见区域(图中用红色标框出来的部分),只要你看懂了上面的方法,下面部分的可见区域(图中用蓝色框出来的可见区域)的方法也跟上面的是一样的只是x坐标不一样而已。

时间: 2024-12-23 23:25:28

棋牌游戏开发之斗地主算法点选牌的相关文章

棋牌游戏开发之地主算法判断牌型

棋牌游戏开发疑问交流 QQ:325131039(勿发广告) 棋牌游戏开发技术交流群: 490287966(勿发广告) ps: 本文转载自博主 wojiushi3344 每个游戏都有属于自己的规则,当然地主也不例外,常斗地主的朋友可能知道在斗地主里面一共有13种牌型,你所出的牌必须符合13种的一种才能够出得了牌,这个就叫地主的规则.那么我们下面可以通过一个枚举结构来表示每一种的牌型,在这里我们把错误的牌型也当成是一种牌型. [cpp] view plaincopy enum  CARD_TYPE

Cocos2d-x游戏开发_战斗算法

我的战斗算法的核心代码 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 private void aHitb(HeroBean a,HeroBean b){         ///*自身状态(已经移到aHitBTeam那里)         //判断A能否出招或者受到伤害什么的

选择手机棋牌游戏开发公司需要考虑哪些因素?

直至今日,在众多投资商的参与和操作下,棋牌游戏市场得到了饱和,现目前令人困扰的并不是商机难寻,而是如何挑选手游开发?只有找到适合自己的开发商才能让自己在市场中稳住脚步,有机会发掘棋牌行业新的市场和商机. 那么选择棋牌游戏开发公司需要考虑哪些因素? 第一步:深入了解开发商 在做任何一个项目之前都必须得找到一个优秀靠谱的合作伙伴,所以棋牌开发商是否正规.是否专业.是否可靠很重要.我们可以先选择几家开发商进行对比,然后实地考察公司的规模.团队实力.技术等,只有经过认真筛选和对比才能找到最适合的. 第二

傲翼科技:正确选择棋牌游戏开发公司,打造专业一流品牌

棋牌游戏本来就是群众喜欢的文娱项目,互联网时期,棋牌游戏开发商将线下棋牌移植到互联网络上,有效填补当今快节拍生活形式下老.中.青.少年人的等车.排队 等碎片或闲暇时间,满足棋牌游戏喜好者随时随地过把瘾的心愿.玩家越来越多,棋牌运营商数量日积月累,相应的,棋牌游戏开发商也在短短几年遍地开花.济南傲翼科技,国内老牌棋牌游戏开发商.傲翼棋牌产品涵盖PC棋牌游戏系列.手机棋牌游戏系列和街机游戏系列,三大棋牌平台逾两百款精品游戏,为广阔运营商提供 棋牌游戏定制+棋牌游戏开发+棋牌架设+售后技术支持+运营培

HTML5游戏开发-扫雷及其算法研究

吕蒙曰:士隔三月[1],当刮目相看.所以,在下在这三月中发奋图强,花了约莫8节信息课的时间研究扫雷.呜呼,由于在下才能尚且不足,所以也就只能勉强打过中级难度的吧.不过,一边玩的同时,我还一边对扫雷这个游戏的制做方法构思了一下.所以说,本文中的算法完全是凭借自己对扫雷游戏规则的总结而自行研发出来的,倘若和MS的扫雷玩法有些出入,还望各位看官见谅. [1]出自<孙权劝学>,原文为"士别三日",由于在下这三个月来都不曾发表博客,所以引申到"士隔三月",各位看官

微信房卡模式棋牌游戏开发的关键环节

房卡棋牌游戏近来非常火爆,房卡棋牌运营商大获其利,开发房卡棋牌游戏的开发商也赚盆满. 但是,同行不同利:有些房卡棋牌运营商亏损,有些开发商也是举步维艰. 这是什么原因造成的呢? 究其原因,不在于棋牌本身的产品功能,而是在于这些房卡棋牌没有抓到房卡游戏的关键点,即房卡游戏与其运营平台微信未能无缝整合,造成了其在微信中"拉人"的效率低下,用户发展效率低,市场推广就无可置疑地困难. 要想解决这个问题,应当要让自己的棋牌App在微信中如鱼得水才可以.这个如鱼得水包括两个方面,一是拉未安装App

棋牌游戏开发 QQ:296863766

原文地址:https://www.cnblogs.com/linhongquan/p/9740310.html

Android手机棋牌类游戏开发

在多数外行人的眼中,开发手机游戏是很难的一件事情,其实,真实的情况是开发游戏其实比开发一些应用更简单.由于游戏的本身是根据程序逻辑来控制,而不是在屏幕上不断地胡乱显示和更新图片,只需要将主角绘制上去,再将编辑好的地图先绘制到屏幕上去,当我们按下了鼠标或其他键时,主角绘制的位置向变动动就可以实现我们的目的了.所以从某中程度来说,手机类棋牌游戏的开发并不复杂. 随着安卓智能手机的普及,手机棋牌类游戏由于玩法基本固定.规则相对明确,研发门槛更低,android类棋牌游戏开发,被业内人士称为继短信之后的

公正公平的游戏专家 傲翼手机棋牌游戏平台

手机棋牌游戏已经深入民心,但是手机棋牌游戏平台的公平安全性却成为了众多游戏玩家的重大心病.记者在游戏玩家的访谈中了解到一则新消息,由2010年成立的傲翼棋牌游戏开发公司推出的手机棋牌游戏平台,是很多玩家对于游戏安全问题增加信心的必要原因. 通过多重渠道了解到,傲翼手机棋牌游戏平台,是由一群有着国内大型棋牌游戏开发平台中多款游戏的研发经验的精英组成,积累了丰富的经验,坚持着‘以人为本.勇于创新,致力专精.以高致胜,诚信为本.以诚待人’发展理念,通过‘研发-销售-运营’的循环改进,走上一条产营销一体