C#德州扑克梭哈游戏(1):简介与初步枚举定义

德州扑克与梭哈游戏

https://baijiahao.baidu.com/s?id=1853823751271030518&wfr=spider&for=pc

德州扑克起源于19世纪初美国德克萨斯州的罗布斯敦(Robstown)由早期的一种扑克牌变体------梭哈(Stud Poker)演化而来。

梭哈

梭哈,又称沙蟹,学名Five Card Stud,五张种马,是扑克游戏的一种。以五张牌的排列、组合决定胜负。游戏开始时,每名玩家会获发一张底牌(此牌只能在最后才翻开);当派发第二张牌后,便由牌面较佳者决定下注额,其他人有权选择"跟"、"加注"、"放弃"或"清底"。当五张牌派发完毕后,各玩家翻开所有底牌来比较,梭哈在全世界纸牌游戏地位非常高,深受人们的喜爱。游戏在国内和港台地区广泛流传,其特点为:上手容易、对抗性强,既有技巧也有一定的运气成分,因此流传非常广泛,五张牌(梭哈)高手必须具备良好的记忆力、综合的判断力、冷静的分析能力再加上些许运气。该游戏紧张刺激,集益智和乐趣于一身。

牌型比较

牌型:同花顺>铁支>葫芦>同花>顺子>三条>两对>对子>散牌

牌点数:A>K>Q>J>10>9>8>7>6>5>4>3>2

花色:黑桃>红桃>梅花>方片

同花顺:连续牌点数并且同种花色。比如【黑桃9 黑桃10 黑桃J 黑桃Q 黑桃K】比较最大的牌点数,如果相同,比较花色

铁支【四条】:四张同点数及一张任意牌,如黑桃4、红桃4、梅花4、方块4和梅花7。比较四张大小一样的牌的牌点数

葫芦【满堂红】:三张同点数的牌加两张点数相同的牌任意牌,如JJJ+KK。比较三张大小一样的牌的牌点数

同花:同种花色,比如都是红心。五张花色相同的牌,如方块2、方块3、方块4、方块5、方块8。比较最大的牌点数,如果相同,比较第二大牌的牌点数,以此类推

顺子:连续的牌点数。五张点数相连的牌,如2 3 4 5 6,比较最大的牌点数,如果相同,比较最大的牌的花色

【最大的顺子:A K Q J 10】【最小的顺子:2 3 4 5 6,有时认为A 2 3 4 5为最小顺子】

三条:三张点数相同的牌加两张任意牌。如555+Q6.比较三张大小一样的牌的牌点数

两对:两张点数相同的牌外加另外两种点数相同的牌,再加另一种任意牌。如 44+55+A。比较大对子的大小,若相同,比较小对子的大小,若还相同,比较单张牌的大小,若还相同,比较最大对子中的最大花色

对子:两张点数相同的牌,其他为任意单牌。如22+46K。比较两张大小一样的牌的牌点数,如果相同,比较依次比较剩余的三张牌大小。若大小都相同,比较对子中最大的花色

散牌【高牌】:比较最大一张牌的大小,如果相同,比较第二大的牌的牌点数,如果牌点数都相同,比较最大牌的花色

各种牌型

● High Card:【高牌】杂牌(不属于下面任何一种)。根据牌从大到小的顺序依次比较。

● Pair:【对子】有一对,加3张杂牌组成。先比较对的大小,再从大到小的顺序比较杂牌。

● Two Pairs:【两对】有两对,加1帐杂牌。先从大到小比较对的大小,再比较杂牌。

● Three of a Kind:【三条】有3张值相同的牌。比较这个值即可。

● Straight:【顺子】一条龙。即5张牌连续。比较最大的一张牌即可。

● Flush:【同花】清一色。即5张牌花色相同。和杂牌一样比较。

● Full House:【葫芦、满堂红】3张值相同的牌,加上一对。比较三张相同的值即可。

● Four of a kind:【四条】有4张牌相同,即相当于一副"炸弹"。

● Straight flush:【同花顺】同花顺。即5张牌花色相同,并且连续。例如同花色的34567。

新建窗体应用程序FiveCardStud

将默认的Form1重命名为FormFiveCardStudEx

新建枚举牌型:CardCategory

CardCategory.cs源程序如下:

cs 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ComponentModel;
/*
 * 德州扑克【梭哈】共有13牌点数×4种花色=52张牌。比较顺序:先进行牌型比较,然后进行点数比较,最后进行花色比较
 * 牌型:同花顺>铁支【四条】>葫芦【满堂红】>同花>顺子>三条>两对>对子>散牌【高牌】
 * 牌点数:A>K>Q>J>10>9>8>7>6>5>4>3>2
 * 花色:黑桃>红桃>梅花>方片
 *   ● High Card:【高牌】杂牌(不属于下面任何一种)。根据牌从大到小的顺序依次比较。
     ● Pair:【对子】有一对,加3张杂牌组成。先比较对的大小,再从大到小的顺序比较杂牌。
     ● Two Pairs:【两对】有两对,加1张杂牌。先从大到小比较对的大小,再比较杂牌。
     ● Three of a Kind:【三条】有3张值相同的牌。比较这个值即可。
     ● Straingt:【顺子】一条龙。即5张牌连续。比较最大的一张牌即可。
     ● Flush:【同花】清一色。即5张牌花色相同。和杂牌一样比较。
     ● Full House:【葫芦、满堂红】3张值相同的牌,加上一对。比较三张相同的值即可。
     ● Four of a kind:【四条】有4张牌相同,即相当于一副"炸弹"。
     ● Straight flush:【同花顺】同花顺。即5张牌花色相同,并且连续。例如同花色的34567。
*/

namespace FiveCardStud
{
    /// <summary>
    /// 德州扑克牌类型:牌型
    /// 点数等级Rank:牌点数:Ace>King>Queen>Jack>10>9>8>7>6>5>4>3>2
    /// 花色Suit:黑桃(Spade)、红心(Heart)、梅花(Club)、方块(Diamond)
    /// </summary>
    public enum CardCategory
    {
        /// <summary>
        /// 不足五张牌,牌型未知
        /// </summary>
        [Description("未知")]
        Unknown = 99,
        /// <summary>
        /// 【同花顺】.即5张牌花色相同,并且连续。例如同花色的34567。
        /// 这里规定 最小的顺子是【2-3-4-5-6】,【A-2-3-4-5不是顺子】
        /// 【组合数 36=4×9】
        /// </summary>
        [Description("同花顺")]
        StraightFlush = 1,
        /// <summary>
        /// 【四条】,也叫铁支,炸弹,有4张牌点数相同
        /// 【组合数 624=13*48】
        /// </summary>
        [Description("四条")]
        FourOfKind = 2,
        /// <summary>
        /// 【葫芦、满堂红】3张值相同的牌,加上一对。
        /// 【组合数 3744=13×4×12×6】
        /// </summary>
        [Description("满堂红")]
        FullHouse = 3,
        /// <summary>
        /// 【同花】清一色。即5张牌花色相同
        /// 【组合数 5112=4×C(13,5)-36】
        /// </summary>
        [Description("同花")]
        Flush = 4,
        /// <summary>
        /// 【顺子】一条龙。即5张牌连续。这里规定 最小的顺子是【2-3-4-5-6】,【A-2-3-4-5不是顺子】
        /// 【组合数 9180=9×Power(4,5)-36】
        /// </summary>
        [Description("顺子")]
        Straight = 5,
        /// <summary>
        /// 【三条】有3张值相同的牌
        /// 【组合数 154912=13×4×66×4×4】
        /// </summary>
        [Description("三条")]
        ThreeOfKind = 6,
        /// <summary>
        /// 【两对】有两对,加1张杂牌。
        /// 【组合数 123552=78×36×11×4】
        /// </summary>
        [Description("两对")]
        TwoPairs = 7,
        /// <summary>
        /// 【对子】有一对,加3张杂牌组成。
        /// 【组合数 13×6×220×64=109 8240 种】
        /// </summary>
        [Description("一对")]
        OnePair = 8,
        /// <summary>
        /// 【高牌】杂牌,散牌
        /// 【组合数 130 2540 出现概率约为 ‌50.12%‌,是所有牌型中最常见的一种】
        /// </summary>
        [Description("高牌")]
        HighCard = 9
    }
}

新建枚举花色:SuitCategory

SuitCategory源程序如下:

cs 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FiveCardStud
{
    /// <summary>
    /// 花色Suit:黑桃(Spade)、红心(Heart)、梅花(Club)、方块(Diamond)
    /// HighCard【高牌】杂牌,散牌时,当点数相同时,比较花色【黑桃>红心>梅花>方块】
    /// </summary>
    public enum SuitCategory
    {
        /// <summary>
        /// 空,保留
        /// </summary>
        None = 0,
        /// <summary>
        /// 黑桃(Spade)
        /// </summary>
        Spade = 1,
        /// <summary>
        /// 红心(Heart)
        /// </summary>
        Heart = 2,
        /// <summary>
        /// 梅花(Club)
        /// </summary>
        Club = 3,
        /// <summary>
        /// 方块(Diamond)
        /// </summary>
        Diamond = 4
    }
}

新建一个扩展方法类ExtensionUtil

ExtensionUtil源程序如下:

cs 复制代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace FiveCardStud
{
    /// <summary>
    /// 扩展方法
    /// </summary>
    public static class ExtensionUtil
    {
        /// <summary>
        /// 获取枚举对应的特性描述,比如 [Description("同花顺")]
        /// </summary>
        /// <param name="enumValue"></param>
        /// <returns></returns>
        public static string GetEnumDescription(this Enum enumValue)
        {
            string value = enumValue.ToString();
            FieldInfo field = enumValue.GetType().GetField(value);
            if (field == null) return value;
            object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false);  //获取描述属性
            if (objs == null || objs.Length == 0)  //当描述属性没有时,直接返回名称
                return value;
            DescriptionAttribute descriptionAttribute = (DescriptionAttribute)objs[0];
            return descriptionAttribute.Description;
        }
    }
}
相关推荐
玉梅小洋2 小时前
Unity 2D游戏开发 Ruby‘s Adventure 2:主角和第一脚本
游戏·unity·游戏引擎·游戏程序·ruby·游戏开发
陈天伟教授2 小时前
人工智能应用- 人机对战:01. AI 游戏
人工智能·深度学习·神经网络·游戏·自然语言处理·机器翻译
henry10101018 小时前
DeepSeek生成的网页小游戏 - 单人壁球挑战赛
javascript·css·游戏·html5
henry1010101 天前
HTML5小游戏 - 荷花池里采荷花
前端·游戏·html·html5
njsgcs1 天前
mindcraft玩了4小时评价
人工智能·游戏
User_芊芊君子1 天前
2026年2月UU远程实测测评:全功能覆盖下的性能标杆,多场景适配无短板
android·数据库·redis·游戏·ai·uu测评
henry1010101 天前
DeepSeek生成的网页小游戏 - 迷宫探险
css·游戏·html·css3
AnalogElectronic2 天前
用AI写游戏3——deepseek实现kotlin android studio greedy snake game 贪吃蛇游戏
游戏·kotlin·android studio