HashTable的使用,扑克牌发牌游戏
l 场景
主要实现以下功能:
1. 首先给扑克牌中每张牌设定一个编号,下面算法实现的编号规则如下:
红桃按照从小到大依次为:1-13
方块按照从小到大依次为:14-26
黑桃按照从小到大依次为:27-39
梅花按照从小到大依次为:40-52
小王为53,大王为54
2. 按照以上编号规则, 每次随机从该数组中抽取一个数字,为玩家分配13张牌。
l 实验方法
1. 在控制台应用程序程序中编写代码,项目名为HashTable。
l 实验预估时间
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(); } } }
如有转载请请务必保留此出处:http://www.cnblogs.com/xiangyangzhu/