斗地主AI算法的简单分析

先讲一下 在编写斗地主中 验证牌型的算法吧

在验证牌型的算法中 我的JS斗地主已经实现了!
{用伪代码简述}

基本上 验证一个牌型主要是要得到所选择牌型的两个重要的参数!

1   所选牌型的 长度
2   所选牌型的最大相同数的牌面 如 21333444 我们就要想办法去获得 4这个值
A型排序 = 按大到小排序 如 WW21KQJ109876543
B型排序 = 按重复出现次数最多的 并且按大到小排序 如 22221111KKKQQ55W987
从斗地主的规则上来分析
除了 Len 是 2 和 4 以为 其余的牌型 如果要比较大小 必须是一样的!
斗地主的细牌型一共有 15 种

1火箭    L=2 大小王
2炸弹    L=4 四张一样
3单牌    L=1
4对牌    L=2 两张一样
5三张牌 L=3 三张一样
6三带一 L=4 其中3张一样
7三带对 L=5 这里 我们先用B型排序函数排一次顺序 如 23323 ->33322 然后判断前面3张一样 后两张一样
8单顺    L>=5 这里用A型排序 然后依次 判断前一张比后一张大1 去掉2和王 1+13=14 可以排AKQJ10
9双顺   L>=6 L%2=0 用B型排序 依次判断 奇数=偶数 间隔的 奇数-间隔的奇数=1
10三顺 道理同上 L>=6 L%3=0 用B型排序 依次判断   1=2=3    间隔的 1-1=1

11飞机带翅膀(单) L>=8 L%4=0   S=L/4 S为飞行三张相同数    先用 B型排序 判断 前 S*3张是否是三顺
12飞机带翅膀(对) L>=10 L%5=0   S=L/5      先用 B型排序 判断 前 S*3张是否是三顺 后S*2 张 是否奇偶相同

13四带二(单)L=6 前4张一样
14四带二(对)L=8 前4张一样 后两张奇偶相同
15空牌型 L=0

然后我们来一一分析他们的特征

那么 排序已经可以验证了 怎么样比较牌型的大小呢

K=B型排序后 取第一张牌

{比较前 如果 K=1 K要加上13}
{比较前 如果 K=2 K要加上13}

C 为客牌牌型
D 为主牌牌型

F=FALSE
T=TRUE
R=比较结果

 

D =15 R =T 这里是如果主客牌选择不出牌 是可以允许通过的
C =1 即 C 的牌型为火箭 R =F
D =1  R =T
C =2   D =2   C .K>D .K R =F 否则 R =T
C =2   D >2   R =F
D =2   C >2   R =T
D >2   C >2   C .L<>D .L   R =F
D >2   C >2   C .L=D .L
{  
C .K >=D .K   R =F 否则 R =T
}

你可能感兴趣的:(算法,c)