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 = ; i < listCard.Count; i++)
{
if (i == )
{
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);
}
}

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 { }
}
}

3. 模拟发牌过程

public void TestPlay()
{
//产生扑克牌
Console.WriteLine("正在生成扑克牌...");
List<PaperCard> myCards = new List<PaperCard>();
string[] strType = { "红桃", "黑桃", "梅花", "方块" };
string[] strNumber = { "A", "", "", "", "", "", "", "", "", "", "J", "Q", "K" };
PaperCard[] OtherCard = { new PaperCard("大王", ""), new PaperCard("小王", "") }; for (int i = ; i < strNumber.Length; i++)
{
for (int j = ; j < strType.Length; j++)
{
PaperCard p = new PaperCard(strType[j], strNumber[i]);
myCards.Add(p);
}
} for (int j = ; j < OtherCard.Length; j++)
{
myCards.Add(OtherCard[j]);
} //洗牌
Console.WriteLine("正在洗牌...");
Stack<PaperCard> stackCard = new Stack<PaperCard>();
Random r = new Random(); while (myCards.Count>)
{
int iIndex = r.Next(, 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 > )
{
for (int s = ; s < listUser.Count; s++)
{
listUser[s].Add(stackCard.Pop());
}
}
Console.WriteLine("发牌完成!"); //看牌
foreach (var item in listUser)
{
item.Introduce();
}
}

测试:

C# -- 模拟扑克牌发牌的更多相关文章

  1. [原]用C#模拟实现扑克牌发牌、排序程序…

    (1)52张扑克牌,四种花色(红桃.黑桃.方块和梅花),随机发牌给四个人. (2)最后将四个人的扑克牌包括花色打印在控制台上. 其中:     花色和点数用枚举类型实现     每张扑克牌用结构实 ...

  2. [原]用C#模拟实现扑克牌发牌、排序程序。

    (1)52张扑克牌,四种花色(红桃.黑桃.方块和梅花),随机发牌给四个人. (2)最后将四个人的扑克牌包括花色打印在控制台上. 其中:     花色和点数用枚举类型实现     每张扑克牌用结构实 ...

  3. C算法编程题(一)扑克牌发牌

    前言 上周写<我的编程开始(C)>这篇文章的时候,说过有时间的话会写些算法编程的题目,可能是这两天周末过的太舒适了,忘记写了.下班了,还没回去,闲来无事就写下吧. 因为写C++的编程题和其 ...

  4. Java练习——扑克牌发牌器

    Java练习——扑克牌发牌器声明:学习自其他博主,感谢分享,这里自己也写了一下.实现思路 - 构建一张扑克牌 - 构建一套扑克牌 - 测试  构建一张扑克牌 /** * @author 冬冬 * 定义 ...

  5. Python面向对象编程扑克牌发牌程序,另含大量Python代码!

    1. 题目 编写程序, 4名牌手打牌,计算机随机将52张牌(不含大小鬼)发给4名牌手,在屏幕上显示每位牌手的牌. 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不 ...

  6. Java 扑克牌发牌

    今天看到这个算法题,http://www.cnblogs.com/xishuai/p/3392981.html ,忍不住自己用Java做了一个. 初始化很重要,所有的52张牌按顺序放入到容器里边,标志 ...

  7. java 模拟斗地主发牌洗牌

    一 模拟斗地主洗牌发牌 1.案例需求 按照斗地主的规则,完成洗牌发牌的动作. 具体规则: 1. 组装54张扑克牌 2. 将54张牌顺序打乱 3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张 ...

  8. java模拟斗地主发牌看牌

    import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; public class Dou ...

  9. HashTable的使用,扑克牌发牌游戏

    l  场景 主要实现以下功能: 1.      首先给扑克牌中每张牌设定一个编号,下面算法实现的编号规则如下:   红桃按照从小到大依次为:1-13   方块按照从小到大依次为:14-26   黑桃按 ...

随机推荐

  1. Linux系统通过FTP进行文档基本操作【华为云分享】

    [摘要] Linux系统里通过FTP可以对文档进行上传,更改权限和基本的文档管理. 获得Linux系统后,不熟悉命令操作的情况下,可以通过FTP工具进行文档操作,下面以WinSCP工具为例进行讲解: ...

  2. 产品vs程序员:你知道www是怎么来的吗?

    精彩回顾: 我是一个explorer的线程 我是一个杀毒软件线程 我是一个IE浏览器线程 比特宇宙-TCP/IP的诞生 Unix.Linux.Windows三大帝国集团发表<关于比特宇宙推进经贸 ...

  3. 一篇文章教你轻松使用fastjson

    前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y JSON相信大家对他也不陌生了,前后端交互中常常 ...

  4. Springboot结合Redis

    安装 Redis   安装 gcc Yum install gcc-c++ 解压 redis.3.0.0.tar.gz 压缩包 tar -zxvf redis-3.0.0.tar.gz 进入解压后的目 ...

  5. MongoDB第四天(操作文档,添加,更新,查询以及对于日期的相关操作)

    添加文档: 添加单个文档,多个文档 package com.bjsxt.mongodbdemo; import com.mongodb.client.MongoCollection; import o ...

  6. [TimLinux] django 下载功能中文文件名问题

    from django.utils.encoding import escape_uri_pathfrom django.http import HttpResponse def download(r ...

  7. cf448D Multiplication Table 二分

    题目:http://codeforces.com/problemset/problem/448/D 题意:给出n,m,k,即在一个n*m的二维数组中找第k大的数,第i行第j列的数的值为i*j. 思路: ...

  8. 2019牛客全国多校训练四 I题 string (SAM+PAM)

    链接:https://ac.nowcoder.com/acm/contest/884/I来源:牛客网 题目描述 We call a,ba,ba,b non-equivalent if and only ...

  9. LCT(Link Cut Tree)总结

    概念.性质简述 首先介绍一下链剖分的概念链剖分,是指一类对树的边进行轻重划分的操作,这样做的目的是为了减少某些链上的修改.查询等操作的复杂度.目前总共有三类:重链剖分,实链剖分和并不常见的长链剖分. ...

  10. java面试题干货126-170

    这部分主要是开源Java EE框架方面的内容,包括Hibernate.MyBatis.Spring.Spring MVC等,由于Struts 2已经是明日黄花,在这里就不讨论Struts 2的面试题, ...