随笔 - 93  文章 - 0  评论 - 1  阅读 - 15万

C# -- 模拟扑克牌发牌

C# -- 模拟扑克牌发牌

1.  User 类: 玩家

复制代码
public class User
{
    private List<PaperCard> listCard = new List<PaperCard>();

    public string Name { get; set; }

    public User(string strName)
    {
        this.Name = strName;
    }
    public void Add(PaperCard p)
    {
        listCard.Add(p);
    }

    public void Reset()
    {
        listCard.Clear();
    }

    public void Introduce()
    {
        string strCards = "";

        for (int i = 0; i < listCard.Count; i++)
        {
            if (i == 0)
            {
                strCards += listCard[i].Name;
            }
            else
            {
                strCards += ", " + listCard[i].Name;
            }
        }
        Console.WriteLine("\r\n--------------------------------------------");
        Console.Write("我是{0},", Name);
        Console.Write("我手中的扑克牌有{0}张:\r\n{1}\r\n", listCard.Count,strCards);
    }
}
View Code
复制代码

 

2. PaperCard类:纸牌

复制代码
public class PaperCard
{
    public string Type { get; set; }
    public string Number { get; set; }
    public PaperCard(string strType, string strNumber)
    {
        this.Type = strType;
        this.Number = strNumber;
    }

    public string Name
    {
        get
        {
            return string.Format("{0}{1}", this.Type, this.Number);
        }

        private set { }
    }
}
View Code
复制代码

 

3. 模拟发牌过程

复制代码
public void TestPlay()
{
    //产生扑克牌
    Console.WriteLine("正在生成扑克牌...");
    List<PaperCard> myCards = new List<PaperCard>();
    string[] strType = { "红桃", "黑桃", "梅花", "方块" };
    string[] strNumber = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" };
    PaperCard[] OtherCard = { new PaperCard("大王", ""), new PaperCard("小王", "") };

    for (int i = 0; i < strNumber.Length; i++)
    {
        for (int j = 0; j < strType.Length; j++)
        {
            PaperCard p = new PaperCard(strType[j], strNumber[i]);
            myCards.Add(p);
        }
    }

    for (int j = 0; j < OtherCard.Length; j++)
    {
        myCards.Add(OtherCard[j]);
    }

    //洗牌
    Console.WriteLine("正在洗牌...");
    Stack<PaperCard> stackCard = new Stack<PaperCard>();
    Random r = new Random();

    while (myCards.Count>0)
    {
        int iIndex = r.Next(0, myCards.Count);
        stackCard.Push(myCards[iIndex]);
        myCards.RemoveAt(iIndex);
    }



    //发牌
    Console.WriteLine("开始发牌...");
    List<User> listUser = new List<User>() {
        new User("大师兄"),
        new User("二师兄"),
        new User("三师弟")
    };

    while (stackCard.Count > 0)
    {
        for (int s = 0; s < listUser.Count; s++)
        {
            listUser[s].Add(stackCard.Pop());
        }
    }
    Console.WriteLine("发牌完成!");


    //看牌
    foreach (var item in listUser)
    {
        item.Introduce();
    }
}
复制代码

 

测试:

posted on   在代码的世界里游走  阅读(1889)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
阅读排行:
· 编程神器Trae:当我用上后,才知道自己的创造力被低估了多少
· 开发的设计和重构,为开发效率服务
· 从零开始开发一个 MCP Server!
· Ai满嘴顺口溜,想考研?浪费我几个小时
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
历史上的今天:
2018-11-04 JavaScript -- 时光流逝(八):js中的事件Event的使用
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示