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();
}
}
}
HashTable的使用,扑克牌发牌游戏的更多相关文章
- C++分享笔记:扑克牌的洗牌发牌游戏设计
笔者在大学二年级期间,做过的一次C++程序设计:扑克牌的洗牌发牌游戏.具体内容是:除去大王和小王,将52张扑克牌洗牌,并发出5张牌.然后判断这5张牌中有几张相同大小的牌,是否是一条链,有几个同花等. ...
- C算法编程题(一)扑克牌发牌
前言 上周写<我的编程开始(C)>这篇文章的时候,说过有时间的话会写些算法编程的题目,可能是这两天周末过的太舒适了,忘记写了.下班了,还没回去,闲来无事就写下吧. 因为写C++的编程题和其 ...
- [原]用C#模拟实现扑克牌发牌、排序程序…
(1)52张扑克牌,四种花色(红桃.黑桃.方块和梅花),随机发牌给四个人. (2)最后将四个人的扑克牌包括花色打印在控制台上. 其中: 花色和点数用枚举类型实现 每张扑克牌用结构实 ...
- [原]用C#模拟实现扑克牌发牌、排序程序。
(1)52张扑克牌,四种花色(红桃.黑桃.方块和梅花),随机发牌给四个人. (2)最后将四个人的扑克牌包括花色打印在控制台上. 其中: 花色和点数用枚举类型实现 每张扑克牌用结构实 ...
- C# -- 模拟扑克牌发牌
C# -- 模拟扑克牌发牌 1. User 类: 玩家 public class User { private List<PaperCard> listCard = new List&l ...
- Java练习——扑克牌发牌器
Java练习——扑克牌发牌器声明:学习自其他博主,感谢分享,这里自己也写了一下.实现思路 - 构建一张扑克牌 - 构建一套扑克牌 - 测试 构建一张扑克牌 /** * @author 冬冬 * 定义 ...
- Python面向对象编程扑克牌发牌程序,另含大量Python代码!
1. 题目 编写程序, 4名牌手打牌,计算机随机将52张牌(不含大小鬼)发给4名牌手,在屏幕上显示每位牌手的牌. 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不 ...
- Java 扑克牌发牌
今天看到这个算法题,http://www.cnblogs.com/xishuai/p/3392981.html ,忍不住自己用Java做了一个. 初始化很重要,所有的52张牌按顺序放入到容器里边,标志 ...
- 基于Intel x86 Android的RAD游戏开发
zip文件还包含编译的"MonkeyGame-debug".可以在模拟器中运行的二进制文件.在"game.build"文件夹中有一个HTML5 build.在C ...
随机推荐
- ubuntu 12.10 apt-get 源
更改apt-get源配置文件/etc/apt/sources.list 用一下内容替换掉 deb http://mirrors.163.com/ubuntu/ precise main restric ...
- Android开发学习秘籍笔记(十九)
吼.花了2天最后做出了一个类似于蓝牙串口助手功能的小程序,事实上也是实习公司的要求---有一个蓝牙无线扫描枪,要求终端能够通过蓝牙连接到该设备,而且蓝牙无线扫描枪扫描二维码或者条形码的时候能够将二维码 ...
- 关于LNMP服务器 Thinkphp5验证码不显示问题
关于LNMP服务器 Thinkphp5验证码不显示问题 浏览:246 发布日期:2017/09/20 分类:ThinkPHP5专区 关键字: thinkphp验证码不显示 nginx下验证码不显示 ...
- Eclipse 生成jar包
Eclipse 生成jar包 打开 Jar 文件向导 Jar 文件向导可用于将项目导出为可运行的 jar 包. 打开向导的步骤为: 在 Package Explorer 中选择你要导出的项目内容.如果 ...
- Distinct powers (Project Euler 29 加强版)
题目大意: $2<=a,b<=n$ 求 $a^b$能表示多少不同的正整数. 原题中n=100,可以直接暴力求解,常见的两种解法是写高精度或者取对数判断相等. 直觉告诉我应该有更加优秀的解法 ...
- 在ios中运用core animation暂停和继续动画
本文转载至 http://blog.csdn.net/wildfireli/article/details/23191861 暂停和继续动画的核心代码如下: <pre name="co ...
- jqgrid动态添加rowlist
function changePager(){ var pagerCenter =$('#grid-pager_center');//获取td pagerCenter.find('se ...
- ZOJ1311(Network)
题目链接:传送门 题目大意:给你一副无向图,求有多少个割点 题目思路:tarjan算法(此题读入是字符串读入,需注意) #include <iostream> #include <c ...
- 32位Win7下安装与配置PHP环境(一)
运行PHP网站,主要需要安装.配置三个软件,Apache.PHP和MySQL.如果需要编辑调试PHP程序,还要安装一个编辑调试软件. 一. Apache Apache是和IIS类似的一个软件,是运行在 ...
- (三)Solrj4到Solrj5的升级之路
(三)Solrj4到Solrj5的升级之路 Solr5发布了,带来了许多激动人心的新特性,但Solrj的许多接口也发生了变化,升级是痛苦的,但也是必须的,下面就赶紧来看看有哪些代码需要升级吧. 变化1 ...