zoukankan      html  css  js  c++  java
  • 德州扑克输赢判断-C#

    首先讲一下思路吧。

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

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

    下面讲一下实现的过程:

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

       

           

    所以便有了函数原型:

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

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

           

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

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

           

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

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

           

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

           

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

        

  • 相关阅读:
    window下eclipse4.5+hadoop2.6.1开发环境配置
    sqoop1.4.6从mysql导入hdfshivehbase实例
    sqoop1.9.7安装和使用
    sqoop1.4.6导出oracle实例
    sqoop1.4.6配置安装
    java 操作hbase1.2
    hbase-1.2.5完全分布式部署
    hadoop2.6环境中部署hive1.2.2的错误
    hive 创建表和导入数据实例
    hive1.2.2部署
  • 原文地址:https://www.cnblogs.com/LouisGuo/p/4639243.html
Copyright © 2011-2022 走看看