场景

主要实现以下功能:

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

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

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

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

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

  小王为53,大王为54

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


实验方法

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


实验预估时间

50分钟

实验结果

HashTable的使用,扑克牌发牌游戏-LMLPHP

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();
}
}
}
05-26 23:19