C# -- 模拟扑克牌发牌

1.  User 类: 玩家

  1. public class User
  2. {
  3. private List<PaperCard> listCard = new List<PaperCard>();
  4.  
  5. public string Name { get; set; }
  6.  
  7. public User(string strName)
  8. {
  9. this.Name = strName;
  10. }
  11. public void Add(PaperCard p)
  12. {
  13. listCard.Add(p);
  14. }
  15.  
  16. public void Reset()
  17. {
  18. listCard.Clear();
  19. }
  20.  
  21. public void Introduce()
  22. {
  23. string strCards = "";
  24.  
  25. for (int i = ; i < listCard.Count; i++)
  26. {
  27. if (i == )
  28. {
  29. strCards += listCard[i].Name;
  30. }
  31. else
  32. {
  33. strCards += ", " + listCard[i].Name;
  34. }
  35. }
  36. Console.WriteLine("\r\n--------------------------------------------");
  37. Console.Write("我是{0},", Name);
  38. Console.Write("我手中的扑克牌有{0}张:\r\n{1}\r\n", listCard.Count,strCards);
  39. }
  40. }

2. PaperCard类:纸牌

  1. public class PaperCard
  2. {
  3. public string Type { get; set; }
  4. public string Number { get; set; }
  5. public PaperCard(string strType, string strNumber)
  6. {
  7. this.Type = strType;
  8. this.Number = strNumber;
  9. }
  10.  
  11. public string Name
  12. {
  13. get
  14. {
  15. return string.Format("{0}{1}", this.Type, this.Number);
  16. }
  17.  
  18. private set { }
  19. }
  20. }

3. 模拟发牌过程

  1. public void TestPlay()
  2. {
  3. //产生扑克牌
  4. Console.WriteLine("正在生成扑克牌...");
  5. List<PaperCard> myCards = new List<PaperCard>();
  6. string[] strType = { "红桃", "黑桃", "梅花", "方块" };
  7. string[] strNumber = { "A", "", "", "", "", "", "", "", "", "", "J", "Q", "K" };
  8. PaperCard[] OtherCard = { new PaperCard("大王", ""), new PaperCard("小王", "") };
  9.  
  10. for (int i = ; i < strNumber.Length; i++)
  11. {
  12. for (int j = ; j < strType.Length; j++)
  13. {
  14. PaperCard p = new PaperCard(strType[j], strNumber[i]);
  15. myCards.Add(p);
  16. }
  17. }
  18.  
  19. for (int j = ; j < OtherCard.Length; j++)
  20. {
  21. myCards.Add(OtherCard[j]);
  22. }
  23.  
  24. //洗牌
  25. Console.WriteLine("正在洗牌...");
  26. Stack<PaperCard> stackCard = new Stack<PaperCard>();
  27. Random r = new Random();
  28.  
  29. while (myCards.Count>)
  30. {
  31. int iIndex = r.Next(, myCards.Count);
  32. stackCard.Push(myCards[iIndex]);
  33. myCards.RemoveAt(iIndex);
  34. }
  35.  
  36. //发牌
  37. Console.WriteLine("开始发牌...");
  38. List<User> listUser = new List<User>() {
  39. new User("大师兄"),
  40. new User("二师兄"),
  41. new User("三师弟")
  42. };
  43.  
  44. while (stackCard.Count > )
  45. {
  46. for (int s = ; s < listUser.Count; s++)
  47. {
  48. listUser[s].Add(stackCard.Pop());
  49. }
  50. }
  51. Console.WriteLine("发牌完成!");
  52.  
  53. //看牌
  54. foreach (var item in listUser)
  55. {
  56. item.Introduce();
  57. }
  58. }

测试:

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. 查看/设置JVM使用的垃圾收集器

    一.设置垃圾收集器的参数 -XX:+UseSerialGC,虚拟机在Client模式下的默认值,Serial+Serial Old -XX:+UseParNewGC,ParNew+Serial Old ...

  2. DBCP2的使用例子和源码详解(不包括JNDI和JTA支持的使用)

    目录 简介 使用例子 需求 工程环境 主要步骤 创建项目 引入依赖 编写jdbc.prperties 获取连接池和获取连接 编写测试类 配置文件详解 数据库连接参数 连接池数据基本参数 连接检查参数 ...

  3. uni-app之网络请求

    uni-app之网络请求 一,介绍 uni.request(OBJECT),发起网络请求,以下主要是一些特殊的参数说明,详细的可查看uni-app官网. 1,method的有效值必须是大写,默认GET ...

  4. jQuery 判断页面对象是否存在

    不能用 if($("#id")){}else{} 因为 $("#id") 不管对象是否存在都会返回 object.   正确使用判断对象是否存在应该用: if( ...

  5. ARTS-S docker安装miniconda

    FROM centos:centos7.3.1611 MAINTAINER zhouyang3 <aaa@qq.com> WORKDIR /usr/local ADD ./ /usr/lo ...

  6. JPEG算法解密

    图片压缩有多重要,可能很多人可能并没有一个直观上的认识,举个例子,一张800X800大小的普通图片,如果未经压缩,大概在1.7MB左右,这个体积如果存放文本文件的话足够保存一部92万字的鸿篇巨著< ...

  7. 【关注图像采集视频传输】之CYUSB3014 EZ-USB FX3 Software Development Kit

    网址:http://www.cypress.com.与之前的High Speed FX2相比,新的产品叫Super Speed  FX3,沿用了之前的命名习惯.FX2芯片内嵌一个8051核,FX3则内 ...

  8. css分类和选择器

    css的分类:内联,内嵌,外部 内联:写在标签里,style=样式,控制精准代码实用性差. 内嵌:嵌在<head></head>里 <style type="t ...

  9. 【JS】303- 编写更好的 JavaScript 条件式和匹配条件的技巧

    译者:@chorer 译文:https://chorer.github.io/2019/06/24/Trs-更好的JavaScript条件式和匹配标准技巧/作者:@Milos Protic原文:htt ...

  10. 2019年Spring核心知识点整理,看看你掌握了多少?

    前言 如今做Java尤其是web几乎是避免不了和Spring打交道了,但是Spring是这样的大而全,新鲜名词不断产生,学起来给人一种凌乱的感觉,在这里总结一下,理顺头绪. Spring 概述 Spr ...