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 = ; 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# -- 模拟扑克牌发牌的更多相关文章
- [原]用C#模拟实现扑克牌发牌、排序程序…
(1)52张扑克牌,四种花色(红桃.黑桃.方块和梅花),随机发牌给四个人. (2)最后将四个人的扑克牌包括花色打印在控制台上. 其中: 花色和点数用枚举类型实现 每张扑克牌用结构实 ...
- [原]用C#模拟实现扑克牌发牌、排序程序。
(1)52张扑克牌,四种花色(红桃.黑桃.方块和梅花),随机发牌给四个人. (2)最后将四个人的扑克牌包括花色打印在控制台上. 其中: 花色和点数用枚举类型实现 每张扑克牌用结构实 ...
- C算法编程题(一)扑克牌发牌
前言 上周写<我的编程开始(C)>这篇文章的时候,说过有时间的话会写些算法编程的题目,可能是这两天周末过的太舒适了,忘记写了.下班了,还没回去,闲来无事就写下吧. 因为写C++的编程题和其 ...
- Java练习——扑克牌发牌器
Java练习——扑克牌发牌器声明:学习自其他博主,感谢分享,这里自己也写了一下.实现思路 - 构建一张扑克牌 - 构建一套扑克牌 - 测试 构建一张扑克牌 /** * @author 冬冬 * 定义 ...
- Python面向对象编程扑克牌发牌程序,另含大量Python代码!
1. 题目 编写程序, 4名牌手打牌,计算机随机将52张牌(不含大小鬼)发给4名牌手,在屏幕上显示每位牌手的牌. 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不 ...
- Java 扑克牌发牌
今天看到这个算法题,http://www.cnblogs.com/xishuai/p/3392981.html ,忍不住自己用Java做了一个. 初始化很重要,所有的52张牌按顺序放入到容器里边,标志 ...
- java 模拟斗地主发牌洗牌
一 模拟斗地主洗牌发牌 1.案例需求 按照斗地主的规则,完成洗牌发牌的动作. 具体规则: 1. 组装54张扑克牌 2. 将54张牌顺序打乱 3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张 ...
- java模拟斗地主发牌看牌
import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; public class Dou ...
- HashTable的使用,扑克牌发牌游戏
l 场景 主要实现以下功能: 1. 首先给扑克牌中每张牌设定一个编号,下面算法实现的编号规则如下: 红桃按照从小到大依次为:1-13 方块按照从小到大依次为:14-26 黑桃按 ...
随机推荐
- VMware下载及安装使用方法
一.VMware的介绍: 虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的.运行在一个完全隔离环境中的完整计算机系统.DesktopVirtualBox,虚拟系统通过生成 ...
- idea object is not a member of package
可能的原因: 1. pom.xml 依赖的工程没有deploy, 所有需要本地install改工程 2. 工程以来的库没有加入到 pom.xml中 3. 以上都没有问题,则右键该工程 => ma ...
- SpringMVC Mock测试
什么是mock测试? 在测试过程中,对于某些不容易构成或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法,就是Mock测试. Servlet.Request.Response等Servle ...
- 使用@media实现移动端使用@2x,@3x切换
/*dpr比值为1的css代码 */ div{ width:300px; height:200px; background:url(img/button@1x.png) ; } /* dpr比值为 ...
- [TimLinux] Python IDE工具
1. 首推IDE工具PyCharm JetBrains公司推出的系列IDE工具中支持Python编译语言的开发工具,基本上可以认为是行业第一IDE工具了,分为社区版和专业版,可以创建纯Python单文 ...
- 笔记||Python3之循环
循环: 循环概念:在一定条件下,重复做某件事情(代码) while循环:1 - while 条件表达式: 循环体 2 - 当 条件表达式 == True 才执行 ...
- 基于CC1606 FPGA评估板移植iCamera程序小结
iCamera作为柴草电子经典的摄像头开发工具,其强大的摄像头调试功能,深受广大网友喜爱,支持市面上各种摄像头. 目前现有的应用板卡支持:CC1601(CP601A). CC1602(CP601B) ...
- vue 页面间使用路由传参数,刷新页面后获取不到参数的问题
情况 情况再简单说明一下: 有三个页面(a-列表页面,b-内页1,c-内页2),页面a->页面b->页面c有参数传递.从a进入b后,刷新b页面拿不到a页面传进来的参数.或者b页面再进入c页 ...
- 《一头扎进》系列之Python+Selenium框架设计篇2- 价值好几K的框架,不看白不看,看了还想看
1. 简介 上一篇介绍了自动化框架的架构,今天宏哥就带领小伙伴或者童鞋们开始开工往这个框架里开始添砖加瓦.主要是介绍一个框架unittest单元测试框架和一种设计思想POM. 2. unittest单 ...
- 12个超好用的IntelliJ IDEA 插件!你用过几个?
一.前言 IntelliJ IDEA 如果说IntelliJ IDEA是一款现代化智能开发工具的话,Eclipse则称得上是石器时代的东西了. 其实笔者也是一枚从Eclipse转IDEA的探索者,随着 ...