C# -- 模拟扑克牌发牌
C# -- 模拟扑克牌发牌
1. User 类: 玩家
- public class User
- {
- private List<PaperCard> listCard = new List<PaperCard>();
- public string Name { get; set; }
- public User(string strName)
- {
- this.Name = strName;
- }
- public void Add(PaperCard p)
- {
- listCard.Add(p);
- }
- public void Reset()
- {
- listCard.Clear();
- }
- public void Introduce()
- {
- string strCards = "";
- for (int i = ; i < listCard.Count; i++)
- {
- if (i == )
- {
- strCards += listCard[i].Name;
- }
- else
- {
- strCards += ", " + listCard[i].Name;
- }
- }
- Console.WriteLine("\r\n--------------------------------------------");
- Console.Write("我是{0},", Name);
- Console.Write("我手中的扑克牌有{0}张:\r\n{1}\r\n", listCard.Count,strCards);
- }
- }
2. PaperCard类:纸牌
- public class PaperCard
- {
- public string Type { get; set; }
- public string Number { get; set; }
- public PaperCard(string strType, string strNumber)
- {
- this.Type = strType;
- this.Number = strNumber;
- }
- public string Name
- {
- get
- {
- return string.Format("{0}{1}", this.Type, this.Number);
- }
- private set { }
- }
- }
3. 模拟发牌过程
- public void TestPlay()
- {
- //产生扑克牌
- Console.WriteLine("正在生成扑克牌...");
- List<PaperCard> myCards = new List<PaperCard>();
- string[] strType = { "红桃", "黑桃", "梅花", "方块" };
- string[] strNumber = { "A", "", "", "", "", "", "", "", "", "", "J", "Q", "K" };
- PaperCard[] OtherCard = { new PaperCard("大王", ""), new PaperCard("小王", "") };
- for (int i = ; i < strNumber.Length; i++)
- {
- for (int j = ; j < strType.Length; j++)
- {
- PaperCard p = new PaperCard(strType[j], strNumber[i]);
- myCards.Add(p);
- }
- }
- for (int j = ; j < OtherCard.Length; j++)
- {
- myCards.Add(OtherCard[j]);
- }
- //洗牌
- Console.WriteLine("正在洗牌...");
- Stack<PaperCard> stackCard = new Stack<PaperCard>();
- Random r = new Random();
- while (myCards.Count>)
- {
- int iIndex = r.Next(, myCards.Count);
- stackCard.Push(myCards[iIndex]);
- myCards.RemoveAt(iIndex);
- }
- //发牌
- Console.WriteLine("开始发牌...");
- List<User> listUser = new List<User>() {
- new User("大师兄"),
- new User("二师兄"),
- new User("三师弟")
- };
- while (stackCard.Count > )
- {
- for (int s = ; s < listUser.Count; s++)
- {
- listUser[s].Add(stackCard.Pop());
- }
- }
- Console.WriteLine("发牌完成!");
- //看牌
- foreach (var item in listUser)
- {
- item.Introduce();
- }
- }
测试:
C# -- 模拟扑克牌发牌的更多相关文章
- [原]用C#模拟实现扑克牌发牌、排序程序…
(1)52张扑克牌,四种花色(红桃.黑桃.方块和梅花),随机发牌给四个人. (2)最后将四个人的扑克牌包括花色打印在控制台上. 其中: 花色和点数用枚举类型实现 每张扑克牌用结构实 ...
- [原]用C#模拟实现扑克牌发牌、排序程序。
(1)52张扑克牌,四种花色(红桃.黑桃.方块和梅花),随机发牌给四个人. (2)最后将四个人的扑克牌包括花色打印在控制台上. 其中: 花色和点数用枚举类型实现 每张扑克牌用结构实 ...
- C算法编程题(一)扑克牌发牌
前言 上周写<我的编程开始(C)>这篇文章的时候,说过有时间的话会写些算法编程的题目,可能是这两天周末过的太舒适了,忘记写了.下班了,还没回去,闲来无事就写下吧. 因为写C++的编程题和其 ...
- Java练习——扑克牌发牌器
Java练习——扑克牌发牌器声明:学习自其他博主,感谢分享,这里自己也写了一下.实现思路 - 构建一张扑克牌 - 构建一套扑克牌 - 测试 构建一张扑克牌 /** * @author 冬冬 * 定义 ...
- Python面向对象编程扑克牌发牌程序,另含大量Python代码!
1. 题目 编写程序, 4名牌手打牌,计算机随机将52张牌(不含大小鬼)发给4名牌手,在屏幕上显示每位牌手的牌. 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不 ...
- Java 扑克牌发牌
今天看到这个算法题,http://www.cnblogs.com/xishuai/p/3392981.html ,忍不住自己用Java做了一个. 初始化很重要,所有的52张牌按顺序放入到容器里边,标志 ...
- java 模拟斗地主发牌洗牌
一 模拟斗地主洗牌发牌 1.案例需求 按照斗地主的规则,完成洗牌发牌的动作. 具体规则: 1. 组装54张扑克牌 2. 将54张牌顺序打乱 3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张 ...
- java模拟斗地主发牌看牌
import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; public class Dou ...
- HashTable的使用,扑克牌发牌游戏
l 场景 主要实现以下功能: 1. 首先给扑克牌中每张牌设定一个编号,下面算法实现的编号规则如下: 红桃按照从小到大依次为:1-13 方块按照从小到大依次为:14-26 黑桃按 ...
随机推荐
- 查看/设置JVM使用的垃圾收集器
一.设置垃圾收集器的参数 -XX:+UseSerialGC,虚拟机在Client模式下的默认值,Serial+Serial Old -XX:+UseParNewGC,ParNew+Serial Old ...
- DBCP2的使用例子和源码详解(不包括JNDI和JTA支持的使用)
目录 简介 使用例子 需求 工程环境 主要步骤 创建项目 引入依赖 编写jdbc.prperties 获取连接池和获取连接 编写测试类 配置文件详解 数据库连接参数 连接池数据基本参数 连接检查参数 ...
- uni-app之网络请求
uni-app之网络请求 一,介绍 uni.request(OBJECT),发起网络请求,以下主要是一些特殊的参数说明,详细的可查看uni-app官网. 1,method的有效值必须是大写,默认GET ...
- jQuery 判断页面对象是否存在
不能用 if($("#id")){}else{} 因为 $("#id") 不管对象是否存在都会返回 object. 正确使用判断对象是否存在应该用: if( ...
- ARTS-S docker安装miniconda
FROM centos:centos7.3.1611 MAINTAINER zhouyang3 <aaa@qq.com> WORKDIR /usr/local ADD ./ /usr/lo ...
- JPEG算法解密
图片压缩有多重要,可能很多人可能并没有一个直观上的认识,举个例子,一张800X800大小的普通图片,如果未经压缩,大概在1.7MB左右,这个体积如果存放文本文件的话足够保存一部92万字的鸿篇巨著< ...
- 【关注图像采集视频传输】之CYUSB3014 EZ-USB FX3 Software Development Kit
网址:http://www.cypress.com.与之前的High Speed FX2相比,新的产品叫Super Speed FX3,沿用了之前的命名习惯.FX2芯片内嵌一个8051核,FX3则内 ...
- css分类和选择器
css的分类:内联,内嵌,外部 内联:写在标签里,style=样式,控制精准代码实用性差. 内嵌:嵌在<head></head>里 <style type="t ...
- 【JS】303- 编写更好的 JavaScript 条件式和匹配条件的技巧
译者:@chorer 译文:https://chorer.github.io/2019/06/24/Trs-更好的JavaScript条件式和匹配标准技巧/作者:@Milos Protic原文:htt ...
- 2019年Spring核心知识点整理,看看你掌握了多少?
前言 如今做Java尤其是web几乎是避免不了和Spring打交道了,但是Spring是这样的大而全,新鲜名词不断产生,学起来给人一种凌乱的感觉,在这里总结一下,理顺头绪. Spring 概述 Spr ...