场景

主要实现以下功能:

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

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

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

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

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

  小王为53,大王为54

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


实验方法

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


实验预估时间

50分钟

实验结果

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections; namespace HashTable
{
class Program
{
static void Main(string[] args)
{
Hashtable hb = new Hashtable(); for (int i = 0; i < 54; i++)
{
int num = i / 13;
int key = i + 1;
if (num == 0) //红桃
{
if (i < 10)
hb.Add(key, "红桃" + key);
else if (i == 10)
hb.Add(key, "红桃J");
else if (i == 11)
hb.Add(key, "红桃Q");
else if (i == 12)
hb.Add(key, "红桃K");
}
else if (num ==1) //方块
{
int keyNum = key - num * 13;
if (i < 23)
hb.Add(key, "方块" + keyNum);
else if (i == 23)
hb.Add(key, "方块J");
else if (i == 24)
hb.Add(key, "方块Q");
else if (i == 25)
hb.Add(key, "方块K");
}
else if (num == 2) //黑桃
{
int keyNum = key - num * 13;
if (i < 36)
hb.Add(key, "黑桃" + keyNum);
else if (i == 36)
hb.Add(key, "黑桃J");
else if (i == 37)
hb.Add(key, "黑桃Q");
else if (i == 38)
hb.Add(key, "黑桃K");
}
else if (num == 3) //梅花
{
int keyNum = key - num * 13;
if (i < 49)
hb.Add(key, "梅花" + keyNum);
else if (i == 49)
hb.Add(key, "梅花J");
else if (i == 50)
hb.Add(key, "梅花Q");
else if (i == 51)
hb.Add(key, "梅花K");
}
else //num=4
{
if (i == 52)
hb.Add(key,"小王");
else
hb.Add(key,"大王");
}
}
//Console.WriteLine(hb[40]); //测试用
//Console.Read(); Random rd = new Random(); Console.WriteLine("玩家的牌已发,如下:");
for (int j = 0; j < 13; j++)
{
int numCard = rd.Next(1, 55);
string result = null; //避免重复发牌
try
{
result = hb[numCard].ToString(); //如果取到已经取过的牌,产生异常,此次循环作废,j值不变。
} catch
{
j--;
continue;
} Console.Write(result);
hb.Remove(numCard); //每次发完牌将这个牌删除
Console.Write("\t");
}
Console.Read();
}
}
}

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. Web前端都学点儿啥?

    Web开发如今是如日中天,热的发烫.但是Web开发相关的技术和知识却像N座大山一样,耸立在我们面前,连绵起伏,漫无边际.那么这些山头那些我们应该占领,那些我们应该绕开,很多人看着就蒙了,这不光是初学者 ...

  2. repaint和reflow的相关知识

    一个页面由两部分组成: DOM:描述该页面的结构 render渲染:描述 DOM 节点 (nodes) 在页面上如何呈现 repaint重绘: 当 DOM 元素的属性发生变化 (如 color) 时, ...

  3. OC 内存管理-02 autorelease 概念 以及用法

    (1) @autoreleasepool { }//自动释放池代表,池子将要被销毁,对池子中所有的对象进行一次release操作 (2) 不管你这个对象时在@autoreleasepool 之内创建的 ...

  4. Hibernate每个层次类一张表(使用注释)

    在上一文章中,我们使用xml文件将继承层次映射到一个表. 在这里,我们将使用注释来执行同样的任务.需要使用@Inheritance(strategy = InheritanceType.SINGLE_ ...

  5. Spring MVC集成Log4j

    以下示例显示如何使用Spring Web MVC框架集成LOG4J.首先使用Eclipse IDE,并按照以下步骤使用Spring Web Framework开发基于动态表单的Web应用程序: 创建一 ...

  6. <jsp:include page="xxxx"/> <@page include="xxxx"@>

     <jsp:include page="/inc/all/header.html" flush="true"/>  动态导入页面 1. 基本上没遇到 ...

  7. @Resource 注解

    @Resource 注解被用来激活一个命名资源(named resource)的依赖注入,在JavaEE应用程序中,该注解被典型地转换为绑定于JNDI context中的一个对象. Spring确实支 ...

  8. Linux 的字符串截取很有用。有八种方法。

    假设有变量 var=http://www.aaa.com/123.htm 1. # 号截取,删除左边字符,保留右边字符. echo ${var#*//} 其中 var 是变量名,# 号是运算符,*// ...

  9. HTML学习笔记——标准网页设计+使用CSS、Javascript

    一.标准网页设计 1.标准网页概述: 标准网页设计要遵循,内容与表现相分离.   内容 + 表现 = 页面  ---  即 :XHTML + CSS = PAGE 内容与变现相分离,也就是内容使用HT ...

  10. php var_dump()函数的详解

    说明:var_dump()方法,判断一个变量的类型与长度,并输出变量的数值,如果变量有值,则输出是变量的值,并返回数据类型.显示关于一个或多个表达式的结构信息,包括表达式的类型与值.数组将递归展开值, ...