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 ...
随机推荐
- cnetos 6.7彻底解决vmware NAT网络问题
cnetos 6.7彻底解决vmware NAT网络问题 vmnet8在nat时使用 vmnet1 在桥接时使用 *解决Windows不能ping通linux的问题 vmnet8相当于一个网卡,虚 ...
- VM603:1 Uncaught SyntaxError: Unexpected token o in JSON at position 1
再用JQuery解析json的时候出现了这样一个问题 VM603: Uncaught SyntaxError: Unexpected token o 通过查阅资料发现,是由于解析json文件的时候解析 ...
- Linux虚拟机Centos 设置固定的静态IP
经过两天的研究(研究到深夜1点),百度了很多文章与加了几个linux的群,终于得到一种方式是可以正常设置静态IP且正常的ssh连接的方式. 第一种方式:NAT模式 参考文章 -- 虚拟机中的CentO ...
- IE的卸载之路(折腾1个多月,记录下。。)
IE 9: FORFILES /P %WINDIR%/servicing/Packages /M Microsoft-Windows-InternetExplorer-*9.*.mum /c “cmd ...
- redis 集群出现的错误
1 解决方法: 不用 Jedis jed =new jedis("192.168.56.101"); jed.set(key,value); 用 Set<HostAndPor ...
- StringUtils 时间显示,判断手机号,电子邮件,是否为今日,是否空白串,字符串转整数,对象转整数 等
package com.xiaoyun.org.util; import java.io.BufferedReader; import java.io.IOException; import java ...
- JS中的动态合集与静态合集
JS的动态合集 前言 DOM是JavaScript重要组成部分,在DOM中有三个特别的集合分别是NodeList(节点的集合),NamedNodeMap(元素属性的集合)和HTMLCollection ...
- 1084 矩阵取数问题 V2
1084 矩阵取数问题 V2 基准时间限制:2 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 一个M*N矩阵中有不同的正整数,经过这个格子,就能获得相应价值的奖励,先从左上走到右下 ...
- UTF-8, UTF-16, UTF-32 & BOM
FAQ - UTF-8, UTF-16, UTF-32 & BOM http://www.unicode.org/faq/utf_bom.html General questions, rel ...
- Oracle中索引名称的唯一性
数据库索引处理是遇到的一点问题,简单记录下 oracle的规定,在同一个SCHEMA下的对象是不能用相同的名字命名的,一般创建索引名用“表名_字段名”,这样能很快知道这个索引,是属于哪个表的. col ...