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 ...
随机推荐
- 创建oracle本地数据库步骤详解
前提:安装好oracle数据库客户端: PL/SQL DEVELOPER 1.打开DatabaseConfiguration Assistant,如图: 选择创建数据库->next->选择 ...
- markdown软件和网站
网站:http://markdown.xiaoshujiang.com/ 软件: Moeditor:https://moeditor.org/ Remarkable:https://remarkabl ...
- 安装IPFS并通过自己的域名访问
下载go-ipfs_v0.4.18_linux-amd64.tar.gz,我这个是linux,如果没有可以在这里下载: http://www.froms.top:8282/ipfs/QmZs9HdSS ...
- 大量数据导入导致mysql自动重启
昨天晚上第十款做数据库迁移,数据库版本:Version: '5.1.61',数据量27G左右 message报错信息如下: Mar :: VM_163_210_tlinux kernel: [, oo ...
- retrival and clustering: week 2 knn & LSH 笔记
华盛顿大学 <机器学习> 笔记. knn k-nearest-neighbors : k近邻法 给定一个 数据集,对于查询的实例,在数据集中找到与这个实例最邻近的k个实例,然后再根据k个最 ...
- hdu 4681(枚举+dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4681 思路:首先预处理出串C在A,B中的所有的位置,然后从前向后求一次最长公共子序列,从后向前求一次最 ...
- go语言获取字符串元素的个数
1:获取字符串字节的个数,并按字节挨个输出 package main import ( "fmt" ) func main() { var str string = "a ...
- SAE+wordpress邮箱问题,WP MAIL STMP插件配置但无效解决的方法
我在SAE上面部署的WordPress是3.9版本号的,而非SAE应用商店里WordPress4sae是3.4的,虽然3.9版本号的确有非常多改进但在部署在SAE上面时须要做非常多改动,并且有些插件也 ...
- 【BZOJ1941】[Sdoi2010]Hide and Seek KDtree
[BZOJ1941][Sdoi2010]Hide and Seek Description 小猪iPig在PKU刚上完了无聊的猪性代数课,天资聪慧的iPig被这门对他来说无比简单的课弄得非常寂寞,为了 ...
- :eq()中的参数详解——需要注意
:eq()的括号中的参数如果是非负数则在DOM对象中按从上到下的顺序查找指定的元素,但是,如果是是负数,则在DOM中从下向上查找指定元素. 如下实例: 如果 $("#divTag div:e ...