场景

主要实现以下功能:

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. export,source

    source会把定义在脚本文件中的变量放在当前shell中 export会把变量放在他所在的shell进程以及子进程shell中 子shell进程可以访问父shell进程的export 声明的变量,但 ...

  2. 问题解决 —— Http Status 500

    在完成JavaWeb项目的过程中经常会出现这种错误 500:指的是服务器内部错误 通常遇到这种情况,我会去看控制台的信息,那里肯定会有提示,空指针(值没有传过去),或者java.sql.SQLExce ...

  3. 我的消灭复杂password之行

    近期几天.网易一直提示邮箱账号异常.特意去查看了一下,发现须要改动password.可是经常使用的password又不让反复使用.于是无奈之下.就想办法消灭这些复杂password,由于实在是太难(g ...

  4. diamond源码阅读-循环探测配置信息是否变化rotateCheckConfigInfo

    rotateCheckConfigInfo 这是一个定时任务,循环调用 /** * 循环探测配置信息是否变化,如果变化,则再次向DiamondServer请求获取对应的配置信息 */ private ...

  5. 打印99乘法表-python

    题目:如何打印出阶梯状的99乘法表? 题解: #coding:utf-8def multiplication_tables(num):#for i in range(1,10): for j in r ...

  6. PHP输出语句大杂烩

    一 echo echo() 实际上不是一个函数,是php语句,因此您无需对其使用括号.不过,如果您希望向 echo() 传递一个以上的参数,那么使用括号会发生解析错误.而且echo是返回void的,并 ...

  7. hdu1829(A Bug's Life)

    题目链接:传送门 题目大意:有n个昆虫,有m组关系,接下来m行表示两个昆虫性别不同,问是否有矛盾情况(同男同女) 题目思路:并查集的高级应用,开两倍数组大小,后n个数组表示和当前昆虫不同性别的集合 # ...

  8. 【BZOJ1266】[AHOI2006]上学路线route Floyd+最小割

    [BZOJ1266][AHOI2006]上学路线route Description 可可和卡卡家住合肥市的东郊,每天上学他们都要转车多次才能到达市区西端的学校.直到有一天他们两人参加了学校的信息学奥林 ...

  9. 1028 大数乘法 V2(FFT or py)

    1028 大数乘法 V2 基准时间限制:2 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 给出2个大整数A,B,计算A*B的结果.   Input 第1行:大数A 第2行:大数B ...

  10. Xamarin.Forms学习之XAML命名空间

    大家好,我又悄咪咪的来了,在上一篇的Xamarin文章中简单介绍了Xamarin的安装过程,妈蛋没想到很多小朋友很感激我,让他们成功的安装了Xamarin,然后......成功的显示了经典的两个单词( ...