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 黑桃按 ...
随机推荐
- webpack 4.x 从零开始初始化一个vue项目
创建目录 项目名称: vue-init app css reset.sass js home index.vue router index.js main.js App.vue views index ...
- Vue组件应用
Vue的组件是可复用的 Vue 实例,且带有一个名字 .我们可以在一个通过 new Vue 创建的 Vue 根实例中,把这个组件作为自定义元素来使用.因为组件是可复用的 Vue 实例,所以它们与 ne ...
- js4——字符转化
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- 华为云北京四业务,访问北京一OBS桶,配置指南
[摘要] 华为云跨数据中心,从北京四访问北京一的OBS桶里面的数据.免去数据迁移的麻烦 1 驱动力 跨region访问OBS桶里面的数据时.如果不走云连接,一个OBS桶域名对应的IP地址,是 ...
- JavaEE基础(02):Servlet核心API用法详解
本文源码:GitHub·点这里 || GitEE·点这里 一.核心API简介 1.Servlet执行流程 Servlet是JavaWeb的三大组件之一(Servlet.Filter.Listener) ...
- 关于SQL Server 中日期格式化若干问题
select CONVERT(varchar, getdate(), 120 )2004-09-12 11:06:08 select replace(replace(replace(CONVERT(v ...
- ios宏定义应该呆在恰当的地方
项目为了看起来整洁 并减少不必要的多次拼写 我们会把这样的方法 做成宏定义 那么问题来了 很多文件同时用到一个或多个宏定义 写完之后就会变成这个样子 看起来很乱 阅读性也不好 那么问题来了怎么解决嘞 ...
- Xcode 10 Error: Multiple commands produce
目录 Xcode 9.4.1运行react-native 可以,但是在Xcode 10运行报错,报错信息如下: 解决方法 1. 选择 File > Project Settings (或者 Fi ...
- HihoCoder 1398 网络流 - 最大权闭合子图
周末,小Hi和小Ho所在的班级决定举行一些班级建设活动. 根据周内的调查结果,小Hi和小Ho一共列出了N项不同的活动(编号1..N),第i项活动能够产生a[i]的活跃值. 班级一共有M名学生(编号1. ...
- CodeForces-508A~D篇 div.2
链接:https://codeforc.es/contest/1038 A题: #include<bits/stdc++.h> using namespace std; typedef l ...