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

来源:互联网 发布:日本三菱材料数据造假 编辑:程序博客网 时间:2024/05/16 06:03

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();                    }    }}

 

0 0
原创粉丝点击