欢迎光临散文网 会员登陆 & 注册

简要分析牌面大小的比较

2021-10-12 12:35 作者:SPC编程爱好者  | 我要投稿

在本游戏的制作过程中,遇到最大的技术挑战就在于牌面大小的比较上,因为程序根本不认识什么是豹子、同花顺或对子等牌面,因此必须先“教会”程序识别牌面信息,才能进一步比较大小,进入判定输赢。根据牌面大小的顺序:豹子>同花顺>同花>顺子>对子>单张,我先让程序认识豹子,由于豹子具有三张牌点数相同的特点,于是就先用循环把222 ~ 999的数字加入到“豹子”列表(如下图),然后继续将101010 ~ AAA手动加入到“豹子”列表,因为999+111不等于101010,所以循环只到999,从101010开始都是手动添加。当然也可以手动把222、333、444、555、666~ AAA依次添加到列表中。

三张牌点数相同即为豹子

接下来,豹子大小的判断就相对容易实现,双方若均为豹子,只需要比较双方数字的大小即可,如果一方是豹子,而另一方不是,则豹子胜,因为豹子是最大的。但有一种特殊情况,若对方拿的是最小的单张235,则235赢最大的豹子AAA,这点需特别判断。

豹子牌面的大小判断


第二大的是同花顺,这里涉及到顺子,因此要先让程序识别花色和顺子。顺子的特点是三个数相连续,根据此特点,从234 ~ 789可以照样用循环方式添加到“顺子”列表中(当然也可手动添加),接着再把91011 ~ 1213A手动依次添加进去,特别注意的是由于A23(或23A)最小,所以它最先添加。之所以要按下图的顺序添加,目的是为了之后的大小比较。

顺子的列表

在花色相同的情况下,就得判断顺子的大小,所以判断顺子可以先做,判断的依据就是该顺子在列表中的顺序,序号大的赢序号小的,之前要按顺序添加“顺子”列表的用意就在于此。

判断顺子的大小

花色判断出来,顺子大小也判断出来,就可以判断同花顺,同时也可顺带判断同花,因为同花顺其实就是同花(即花色相同)的一种特殊形式。先判断双方是否都为同花,如果是再判断是不是顺子,再根据顺子判断大小。否则同花的一方胜过非同花的一方

可判断同花顺及同花

再往下就是对子和最小的单张。先分析对子,对子的特点是其中两张牌的点数相同,所以先通过“两牌数字”找出点数相同的两张牌,并记录剩余一张牌的点数大小,接着先直接数字比较点数相同的两张牌的大小,分出胜负。若大小相等,则比较剩余那张牌的大小,其中A最大,2最小,如此一来即可判断双方均为对子时的牌面大小。

先判断数字再判断单牌

最后就是单张牌(也就是散牌)的比较,思路也比较简单,将三张牌的点数相加后比较大小即可,其中A为14,其他牌则按牌面点数计算。相信大家都可算出235是相加后,点数最小的单张牌(不是234哦,234可是顺子),但是它能赢最大的豹子AAA呢!

根据点数和判断单张牌的大小

这不正是以弱胜强,反败为胜,绝处逢生的注解吗?呵呵

简要分析牌面大小的比较的评论 (共 条)

分享到微博请遵守国家法律