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. webpack 4.x 从零开始初始化一个vue项目

    创建目录 项目名称: vue-init app css reset.sass js home index.vue router index.js main.js App.vue views index ...

  2. Vue组件应用

    Vue的组件是可复用的 Vue 实例,且带有一个名字 .我们可以在一个通过 new Vue 创建的 Vue 根实例中,把这个组件作为自定义元素来使用.因为组件是可复用的 Vue 实例,所以它们与 ne ...

  3. js4——字符转化

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  4. 华为云北京四业务,访问北京一OBS桶,配置指南

    [摘要] 华为云跨数据中心,从北京四访问北京一的OBS桶里面的数据.免去数据迁移的麻烦 1      驱动力 跨region访问OBS桶里面的数据时.如果不走云连接,一个OBS桶域名对应的IP地址,是 ...

  5. JavaEE基础(02):Servlet核心API用法详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.核心API简介 1.Servlet执行流程 Servlet是JavaWeb的三大组件之一(Servlet.Filter.Listener) ...

  6. 关于SQL Server 中日期格式化若干问题

    select CONVERT(varchar, getdate(), 120 )2004-09-12 11:06:08 select replace(replace(replace(CONVERT(v ...

  7. ios宏定义应该呆在恰当的地方

    项目为了看起来整洁 并减少不必要的多次拼写 我们会把这样的方法 做成宏定义 那么问题来了 很多文件同时用到一个或多个宏定义 写完之后就会变成这个样子 看起来很乱 阅读性也不好 那么问题来了怎么解决嘞 ...

  8. Xcode 10 Error: Multiple commands produce

    目录 Xcode 9.4.1运行react-native 可以,但是在Xcode 10运行报错,报错信息如下: 解决方法 1. 选择 File > Project Settings (或者 Fi ...

  9. HihoCoder 1398 网络流 - 最大权闭合子图

    周末,小Hi和小Ho所在的班级决定举行一些班级建设活动. 根据周内的调查结果,小Hi和小Ho一共列出了N项不同的活动(编号1..N),第i项活动能够产生a[i]的活跃值. 班级一共有M名学生(编号1. ...

  10. CodeForces-508A~D篇 div.2

    链接:https://codeforc.es/contest/1038 A题: #include<bits/stdc++.h> using namespace std; typedef l ...