5713人阅读
c++基础(14)
棋牌游戏算法(7)
斗地主算法之点选牌
& & & & & & & & & & & & & &-------BY wojiushi3344
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& QQ:
&&&&&&&&&&&&&&&&&& 棋牌游戏交流群:
& & & & & & & PS:最近找了2个朋友主准备把斗地主游戏重写,由于种种原因今天还没有开始,所以先把基本的算法写一写,为以后写项目做准备。如果你对斗地主游戏比较感兴趣可以关注此博文,以后将在博客中写一些关于斗地主方面的东西!!
& & & & & & 博客地址:
& & & & & & & & 在地主点选牌的算法中,我们只要点击每张牌的可见区域,它的状态就会随之变化。我们通过上图可以发现,每张牌选中之后它会遮盖前面3张牌的可见区域,而后面3张牌会影响自身的可见区域,所以每张牌点选之后与前面3张和后面3张牌有关系(一共就是6张)。第一张牌除外,第一张牌选中之后只有它自己的可见区域会发生变化,因为第一张牌前面没有任何牌。这样我们就可以定义下面几个变量来记录每次点选牌之后的可见区域。
CRECT NormalR //正常情况下的可见矩形区域
CRECT TopOrD //自己选中或者邻居选中的可见区域
int & & & & & CardW//牌的宽度
int & & & & & CardH//牌的高度
int & & & & &CheckH//选中之后的向上高度
int & & & & CardS//牌之间的间距
在最开始什么牌也没有点选的时候每张牌有个正常的可见区域,我们用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坐标+CheckH
TopOrDown.setRect(x1,y1,x2,y2);
前面一张牌的正常可见区域不变。
第二种:在牌的队列中会影响其他牌的可见区域
这个可以分二种情况来讨论
1 前面三张牌有被选中的(选中之后前面牌的可见区域会被影响)
当前面3张牌中有选中状态的牌,它们的可见区域会被影响,正常的可见区域不会被影响。而影响的可见区域也只是X2被改变了,影响的可见区域我们可以用一个公式来表示
X2=((checkCardIndex(选中牌的索引) - forntCardindex(前面选中牌的索引))-1)*CardSpacing(牌之间的间距)。
2后面3张牌有被选中的(会影响自身得可见区域)
当我们选中牌的时候,后面三张牌有有被选中的时候。我们首先用第一种:在牌的队列中只有自己被选中的方法来计算出正常的可见区域和可见区域。而选中之后被后面影响的也只有X2,我们同样用一个公式来表示。
X2=(&BackCardindex(后面选中牌的索引)-(checkCardIndex(选中牌的索引) )-1)*CardSpacing(牌之间的间距)。
这样当我们选中牌的时候既要改变自身得可见区域也要改变前面3张被选牌的可见区域。
这样在你点选牌的时候根据鼠标坐标,来判断和牌队列中的哪张牌的可见区域碰撞,然后确定牌的索引更改与之对应牌的可见区域就能实现选牌操作。
我们第二种讨论的可见区域只是上面部分的可见区域(图中用红色标框出来的部分),只要你看懂了上面的方法,下面部分的可见区域(图中用蓝色框出来的可见区域)的方法也跟上面的是一样的只是x坐标不一样而已。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:142675次
积分:1860
积分:1860
排名:第17754名
原创:26篇
转载:12篇
评论:115条
棋牌游戏开发公司 QQ: ***:
&&大话设计模式&&
阅读:57215
(1)(2)(2)(1)(3)(1)(1)(1)(1)(1)(4)(1)(2)(5)(13)斗地主游戏规则_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
斗地主游戏规则
上传于|0|0|文档简介
&&斗地主游戏规则
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩7页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢