zoukankan      html  css  js  c++  java
  • 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("	");
                }
                Console.Read();            
            }
        }
    }
    
    如有转载请请务必保留此出处:http://www.cnblogs.com/xiangyangzhu/
  • 相关阅读:
    codeforce 148D. Bag of mice[概率dp]
    poj2096 Collecting Bugs[期望dp]
    poj3744 Scout YYF I[概率dp+矩阵优化]
    hdu 5318 The Goddess Of The Moon
    hdu5411 CRB and Puzzle[矩阵优化dp]
    poj3734 Blocks[矩阵优化dp or 组合数学]
    1948 NOI 嘉年华
    教主泡嫦娥[有趣的dp状态设计]
    HDU 4455 Substrings[多重dp]
    1296: [SCOI2009]粉刷匠[多重dp]
  • 原文地址:https://www.cnblogs.com/xiangyangzhu/p/4239807.html
Copyright © 2011-2022 走看看