(1)52张扑克牌,四种花色(红桃、黑桃、方块和梅花),随机发牌给四个人。

(2)最后将四个人的扑克牌包括花色打印在控制台上。

其中:

    花色和点数用枚举类型实现

    每张扑克牌用结构实现

**************************************************************************************************

[csharp] view
plain
copy



  1. using System;
  2. using System.Collections.Generic;
  3. using System.Collections;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. //用C#模拟实现扑克牌发牌、排序程序。
  8. //(1)52张扑克牌,四种花色(红桃、黑桃、方块和梅花),随机发牌给四个人。
  9. //(2)最后将四个人的扑克牌包括花色打印在控制台上。
  10. //其中:
  11. //  花色和点数用枚举类型实现
  12. //  每张扑克牌用结构实现
  13. //提示:可以用ArrayList初始化52张扑克牌,然后从这个链表中随机取牌发给四个玩家,直到链表为空为止。
  14. namespace Test5
  15. {
  16. enum Color {HongTao=-1,HeiTao=-2,MeiHua=-3,FangPian=-4}//花色
  17. enum Point {A,two,three,four,five,six,seven,eight,nine,ten,J,Q,K}//点数
  18. struct Poker
  19. {//扑克
  20. private string p1,p2;
  21. public Poker(string p1, string p2)
  22. {
  23. // TODO: Complete member initialization
  24. this.p1 = p1;
  25. this.p2 = p2;
  26. }
  27. public void Printp()
  28. {
  29. Console.Write("({0},{1}) ", this.p1,this.p2);
  30. }
  31. }
  32. class Program
  33. {
  34. static void Main(string[] args)
  35. {
  36. Poker po = new Poker();
  37. ArrayList myPoker=new ArrayList();//实例化一个ArrayList存放所有的扑克牌
  38. ArrayList Person1 = new ArrayList();
  39. ArrayList Person2 = new ArrayList();
  40. ArrayList Person3 = new ArrayList();
  41. ArrayList Person4 = new ArrayList();
  42. Random r = new Random();
  43. for (int i = -4; i <= -1; i++)
  44. {//外循环初始化扑克的花色
  45. for (int j = 0; j <= 12; j++)
  46. {//外层循环初始化扑克的点数
  47. myPoker.Add(new Poker(
  48. Enum.GetName(typeof(Color),i),
  49. Enum.GetName(typeof(Point),j)
  50. ));
  51. }
  52. }//for循环结束,52张扑克牌已经生成
  53. Console.WriteLine("打印所有的扑克牌:");
  54. for (int i = 0; i < 52; i++)
  55. {//打印52张生成的扑克牌
  56. Poker poAll = (Poker)myPoker[i];
  57. poAll.Printp();
  58. }
  59. //开始发牌,一个人一个人的发,每发一张牌得从myPoker中RemoveAt掉扑克牌,Count数减小;第一个人Add到一张牌。
  60. for (int i = 0; i < 13; i++)
  61. {
  62. int te = r.Next(0,myPoker.Count);
  63. Person1.Add(myPoker[te]);
  64. myPoker.RemoveAt(te);
  65. }
  66. for (int i = 0; i < 13; i++)
  67. {
  68. int te = r.Next(0, myPoker.Count);
  69. Person2.Add(myPoker[te]);
  70. myPoker.RemoveAt(te);
  71. }
  72. for (int i = 0; i < 13; i++)
  73. {
  74. int te = r.Next(0, myPoker.Count);
  75. Person3.Add(myPoker[te]);
  76. myPoker.RemoveAt(te);
  77. }
  78. for (int i = 0; i < 13; i++)
  79. {
  80. int te = r.Next(0, myPoker.Count);
  81. Person4.Add(myPoker[te]);
  82. myPoker.RemoveAt(te);
  83. }
  84. Console.WriteLine();
  85. Console.WriteLine("打印第一个人的扑克牌:");
  86. for (int i = 0; i < 13;i++ )
  87. {
  88. Poker po1 = (Poker)Person1[i];
  89. po1.Printp();
  90. }
  91. Console.WriteLine();
  92. Console.WriteLine("打印第二个人的扑克牌:");
  93. for (int i = 0; i < 13; i++)
  94. {
  95. Poker po2 = (Poker)Person2[i];
  96. po2.Printp();
  97. }
  98. Console.WriteLine();
  99. Console.WriteLine("打印第三个人的扑克牌:");
  100. for (int i = 0; i < 13; i++)
  101. {
  102. Poker po3 = (Poker)Person3[i];
  103. po3.Printp();
  104. }
  105. Console.WriteLine();
  106. Console.WriteLine("打印第四个人的扑克牌:");
  107. for (int i = 0; i < 13; i++)
  108. {
  109. Poker po4 = (Poker)Person4[i];
  110. po4.Printp();
  111. }
  112. Console.WriteLine();
  113. }
  114. }
  115. }

作者:gcy77 发表于2014-3-12 15:16:24 原文链接
阅读:86 评论:0 查看评论

[原]用C#模拟实现扑克牌发牌、排序程序…的更多相关文章

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

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

  2. C# -- 模拟扑克牌发牌

    C# -- 模拟扑克牌发牌 1.  User 类: 玩家 public class User { private List<PaperCard> listCard = new List&l ...

  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. HashTable的使用,扑克牌发牌游戏

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

  8. sdut 2162:The Android University ACM Team Selection Contest(第二届山东省省赛原题,模拟题)

    The Android University ACM Team Selection Contest Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里 ...

  9. (待续)C#语言中的动态数组(ArrayList)模拟常用页面置换算法(FIFO、LRU、Optimal)

    目录 00 简介 01 算法概述 02 公用方法与变量解释 03 先进先出置换算法(FIFO) 04 最近最久未使用(LRU)算法 05 最佳置换算法(OPT) 00 简介 页面置换算法主要是记录内存 ...

随机推荐

  1. linq学习三个实例

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  2. c++ 13

    一.向量 ... 10.size/resize/clear/capacity/reserve 1)向量的大小可增可减,使向量大小改变的函数包括:resize/push_back/pop_back/cl ...

  3. 【剑指offer】面试题31:连续子数组的最大和

    题目: 在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2, ...

  4. bwlabel函数的c++实现

    实验中需要用到区域联通的算法,就是类似于matlab中bwlabel的函数.网上找了找c++源码未果,bwlabel-python版用python描述了matlab中的实现方法,但是最后对标签的处理部 ...

  5. JUnit单元测试框架的使用

    http://blog.csdn.net/mao520741111/article/details/51462215 原文地址 http://www.open-open.com/lib/view/op ...

  6. 【转】linux文件系统之mount流程分析

    本质上,Ext3 mount的过程实际上是inode被替代的过程. 例如,/dev/sdb块设备被mount到/mnt/alan目录.命令:mount -t ext3 /dev/sdb /mnt/al ...

  7. VS 项目(c#)引用了 DLL文件,也写了Using,但是编译时提示:未能找到类型或命名空间名称

    1. 在项目上点右键-->属性-->应用程序-->目标框架-->修改为.NET Framework 4. 而我原来的设置是.NET Framework 4 Client Pro ...

  8. DirectX 初始化DirectX(第一方式)

      上一章我们学会了如何C++Win32项目中搭建DirectX开发环境, 那么下面来写代码初始化DirectX吧O(∩_∩)O~. 首先你创建一个Win32程序,点击运行你可以看见一个window窗 ...

  9. A星算法

    没有采用二叉堆算法优化, 学习了几天终于搞除了一个demo, 这个列子如果点击按钮生成的方块大小不正确,可以先设置下预设调成相应的大小 只能上下左右走   using UnityEngine; usi ...

  10. Filter简单介绍

    一.简单介绍 Filter也称为过滤器,WEB开发者通过Filter技术.对webserver管理的全部web资源:比如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截.从而实 ...