场景

主要实现以下功能:

1.      首先给扑克牌中每张牌设定一个编号,下面算法实现的编号规则如下:

  红桃按照从小到大依次为:1-13

  方块按照从小到大依次为:14-26

  黑桃按照从小到大依次为:27-39

  梅花按照从小到大依次为:40-52

  小王为53,大王为54

2.      按照以上编号规则,
每次随机从该数组中抽取一个数字,为玩家分配13张牌。


实验方法

1.   在控制台应用程序程序中编写代码,项目名为HashTable。


实验预估时间

50分钟

实验结果

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Collections;
  6.  
  7. namespace HashTable
  8. {
  9. class Program
  10. {
  11. static void Main(string[] args)
  12. {
  13. Hashtable hb = new Hashtable();
  14.  
  15. for (int i = 0; i < 54; i++)
  16. {
  17. int num = i / 13;
  18. int key = i + 1;
  19. if (num == 0) //红桃
  20. {
  21. if (i < 10)
  22. hb.Add(key, "红桃" + key);
  23. else if (i == 10)
  24. hb.Add(key, "红桃J");
  25. else if (i == 11)
  26. hb.Add(key, "红桃Q");
  27. else if (i == 12)
  28. hb.Add(key, "红桃K");
  29. }
  30. else if (num ==1) //方块
  31. {
  32. int keyNum = key - num * 13;
  33. if (i < 23)
  34. hb.Add(key, "方块" + keyNum);
  35. else if (i == 23)
  36. hb.Add(key, "方块J");
  37. else if (i == 24)
  38. hb.Add(key, "方块Q");
  39. else if (i == 25)
  40. hb.Add(key, "方块K");
  41. }
  42. else if (num == 2) //黑桃
  43. {
  44. int keyNum = key - num * 13;
  45. if (i < 36)
  46. hb.Add(key, "黑桃" + keyNum);
  47. else if (i == 36)
  48. hb.Add(key, "黑桃J");
  49. else if (i == 37)
  50. hb.Add(key, "黑桃Q");
  51. else if (i == 38)
  52. hb.Add(key, "黑桃K");
  53. }
  54. else if (num == 3) //梅花
  55. {
  56. int keyNum = key - num * 13;
  57. if (i < 49)
  58. hb.Add(key, "梅花" + keyNum);
  59. else if (i == 49)
  60. hb.Add(key, "梅花J");
  61. else if (i == 50)
  62. hb.Add(key, "梅花Q");
  63. else if (i == 51)
  64. hb.Add(key, "梅花K");
  65. }
  66. else //num=4
  67. {
  68. if (i == 52)
  69. hb.Add(key,"小王");
  70. else
  71. hb.Add(key,"大王");
  72. }
  73. }
  74. //Console.WriteLine(hb[40]); //测试用
  75. //Console.Read();
  76.  
  77. Random rd = new Random();
  78.  
  79. Console.WriteLine("玩家的牌已发,如下:");
  80. for (int j = 0; j < 13; j++)
  81. {
  82. int numCard = rd.Next(1, 55);
  83. string result = null;
  84.  
  85. //避免重复发牌
  86. try
  87. {
  88. result = hb[numCard].ToString(); //如果取到已经取过的牌,产生异常,此次循环作废,j值不变。
  89. }
  90.  
  91. catch
  92. {
  93. j--;
  94. continue;
  95. }
  96.  
  97. Console.Write(result);
  98. hb.Remove(numCard); //每次发完牌将这个牌删除
  99. Console.Write("\t");
  100. }
  101. Console.Read();
  102. }
  103. }
  104. }

HashTable的使用,扑克牌发牌游戏的更多相关文章

  1. C++分享笔记:扑克牌的洗牌发牌游戏设计

    笔者在大学二年级期间,做过的一次C++程序设计:扑克牌的洗牌发牌游戏.具体内容是:除去大王和小王,将52张扑克牌洗牌,并发出5张牌.然后判断这5张牌中有几张相同大小的牌,是否是一条链,有几个同花等. ...

  2. C算法编程题(一)扑克牌发牌

    前言 上周写<我的编程开始(C)>这篇文章的时候,说过有时间的话会写些算法编程的题目,可能是这两天周末过的太舒适了,忘记写了.下班了,还没回去,闲来无事就写下吧. 因为写C++的编程题和其 ...

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

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

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

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

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

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

  6. Java练习——扑克牌发牌器

    Java练习——扑克牌发牌器声明:学习自其他博主,感谢分享,这里自己也写了一下.实现思路 - 构建一张扑克牌 - 构建一套扑克牌 - 测试  构建一张扑克牌 /** * @author 冬冬 * 定义 ...

  7. Python面向对象编程扑克牌发牌程序,另含大量Python代码!

    1. 题目 编写程序, 4名牌手打牌,计算机随机将52张牌(不含大小鬼)发给4名牌手,在屏幕上显示每位牌手的牌. 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不 ...

  8. Java 扑克牌发牌

    今天看到这个算法题,http://www.cnblogs.com/xishuai/p/3392981.html ,忍不住自己用Java做了一个. 初始化很重要,所有的52张牌按顺序放入到容器里边,标志 ...

  9. 基于Intel x86 Android的RAD游戏开发

    zip文件还包含编译的"MonkeyGame-debug".可以在模拟器中运行的二进制文件.在"game.build"文件夹中有一个HTML5 build.在C ...

随机推荐

  1. 创建oracle本地数据库步骤详解

    前提:安装好oracle数据库客户端: PL/SQL DEVELOPER 1.打开DatabaseConfiguration Assistant,如图: 选择创建数据库->next->选择 ...

  2. markdown软件和网站

    网站:http://markdown.xiaoshujiang.com/ 软件: Moeditor:https://moeditor.org/ Remarkable:https://remarkabl ...

  3. 安装IPFS并通过自己的域名访问

    下载go-ipfs_v0.4.18_linux-amd64.tar.gz,我这个是linux,如果没有可以在这里下载: http://www.froms.top:8282/ipfs/QmZs9HdSS ...

  4. 大量数据导入导致mysql自动重启

    昨天晚上第十款做数据库迁移,数据库版本:Version: '5.1.61',数据量27G左右 message报错信息如下: Mar :: VM_163_210_tlinux kernel: [, oo ...

  5. retrival and clustering: week 2 knn & LSH 笔记

    华盛顿大学 <机器学习> 笔记. knn k-nearest-neighbors : k近邻法 给定一个 数据集,对于查询的实例,在数据集中找到与这个实例最邻近的k个实例,然后再根据k个最 ...

  6. hdu 4681(枚举+dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4681 思路:首先预处理出串C在A,B中的所有的位置,然后从前向后求一次最长公共子序列,从后向前求一次最 ...

  7. go语言获取字符串元素的个数

    1:获取字符串字节的个数,并按字节挨个输出 package main import ( "fmt" ) func main() { var str string = "a ...

  8. SAE+wordpress邮箱问题,WP MAIL STMP插件配置但无效解决的方法

    我在SAE上面部署的WordPress是3.9版本号的,而非SAE应用商店里WordPress4sae是3.4的,虽然3.9版本号的确有非常多改进但在部署在SAE上面时须要做非常多改动,并且有些插件也 ...

  9. 【BZOJ1941】[Sdoi2010]Hide and Seek KDtree

    [BZOJ1941][Sdoi2010]Hide and Seek Description 小猪iPig在PKU刚上完了无聊的猪性代数课,天资聪慧的iPig被这门对他来说无比简单的课弄得非常寂寞,为了 ...

  10. :eq()中的参数详解——需要注意

    :eq()的括号中的参数如果是非负数则在DOM对象中按从上到下的顺序查找指定的元素,但是,如果是是负数,则在DOM中从下向上查找指定元素. 如下实例: 如果 $("#divTag div:e ...