德州扑克输赢判断-C#

首先讲一下思路吧。

德州扑克一把有7张牌,可能组成10种牌型,所以,在网络游戏中,不可能是两两比较,然后排序,最简单的做法就是对每个玩家的手牌计算一个权值,然后对最终玩家的权值进行排序即可得到最终的输赢顺序。

其实这个是我的毕业设计,在大三的时候,我曾在一位学长王总的带领下做过一个德州扑克的记录软件,那个软件比较简单,只是有记录员记录现实世界中正在进行的游戏,然后把玩家的牌,叫牌操作和游戏结果记录下来,以供将来重放时做教学使用。当时的项目并没有输赢判断的功能,而是由记录员自己输入输赢的玩家顺序。大四时的毕业设计,我就想可以在这个基础上实现一个在线的网络游戏,不再需要记录员这个角色,虽然并没有实现,但过程中的各种问题也都想到了解决方案,包括本文要讲的输赢算法的实现,当时就是太懒了,毕业论文就用了一个星期就写完了,下下周就是初版的截止时间,这周末我才开始写毕设,到下周日的时候检查了重复率就把初稿发给鲍老师了,以后再也没改过。。。=如今参加工作了,想着在下班没有事的时候做些自己的事情,而且当时在大三的时候我是想要做输赢算法的实现的,但苦于当时没有想到好的解决方案,到网上搜索又没有找到现成的容易理解的解决方案。所以首先就想到了把这个输赢的算法实现了。

下面讲一下实现的过程:

首先定义了两个类:Card和CardSum,Card保存玩家手中的牌,所以就两个属性:牌色和牌大小,CardSum是用来归类用的,要统计每个牌型大小的牌个数,下面是两个类的定义:

   

       

所以便有了函数原型:

Public static double GetWeight(List<Card> cardList, out CardsType cardsType);

下面讲一下算法实现的过程:

       

其实根据各种牌型的特点很容易想到的,主要就是牌的花色,牌的相同的个数和牌的顺序这些,在我们知道这些之后就可以很轻松的判断出牌型,根据牌型,就可以获取到玩家手中最终有用的五张牌,根据这五张牌和牌型,进而计算玩家手牌的权重

下面的表格显示各种牌型的判断成立条件,而有效牌的查找方法相对简单,大家可以到代码里看看:

       

权重值大小=牌型基数+"."+特征牌+非特征牌。

这样最终既可以获得牌型和权重大小。

       

第一次写博客,讲的有点乱。。。。

       

github:https://github.com/LouisGuo/Texas

    

原文地址:https://www.cnblogs.com/LouisGuo/p/4639243.html