博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多个类混合使用,实现扑克牌随机创建和展示
阅读量:6529 次
发布时间:2019-06-24

本文共 3220 字,大约阅读时间需要 10 分钟。

422101-20170427175824490-895498264.png

422101-20170427175831631-1184476662.png

422101-20170427175838194-2046814131.png

只要是同一个namespace,就可以当作是在一个文件中一样!

Suit.cs

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Demo{    public enum Suit    {        梅花,        黑桃,        红桃,        方片    }}

Rank.cs

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Demo{    public enum Rank    {        Ace = 1,        Deuce,        Three,        Four,        Five,        Six,        Seven,        Eight,        Nine,        Ten,        Jack,        Queen,        King,    }}

Card.cs基础

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Demo{    public class Card    {        public readonly Suit suit;        public readonly Rank rank;        public Card(Suit newSuit,Rank newRank)        {            suit = newSuit;            rank = newRank;        }        private Card()        {        }        public override string ToString()        {            return "The " + rank + " of " + suit;        }    }}

Deck.cs核心

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Demo{    public class Deck    {        private Card[] cards;        public Deck()        {            cards = new Card[52];            for (int suitVal = 0;suitVal < 4;suitVal ++)            {                for (int rankVal = 1;rankVal < 14;rankVal ++)                {                    cards[suitVal * 13 + rankVal - 1] = new Card((Suit)suitVal,(Rank)rankVal);                }            }        }        // 获取牌        public Card GetCard(int cardNum)        {            if (cardNum >=0 && cardNum <= 51) // 共52张牌,不包含大小王            {                return cards[cardNum];            }            else            {                throw (new System.ArgumentOutOfRangeException("cardNum",cardNum, "cardNum必须是0到51的数字"));            }        }        // 随机发牌        public void Shuffle()        {            Card[] newDeck = new Card[52];            bool[] assigned = new bool[52];            Random sourceGen = new Random();            for (int i=0;i<52;i++)            {                int destCard = 0;                bool foundCard = false;                while(foundCard == false)                {                    destCard = sourceGen.Next(52); //返回一个小于所指定最大值的非负随机数                    if (assigned[destCard] == false) // 如果这个数字没有复制就跳出循环,给这个数字赋值                    {                        foundCard = true;                    }                }                assigned[destCard] = true;                newDeck[destCard] = cards[i];            }            newDeck.CopyTo(cards,0);        }    }}

Program.cs主执行

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Demo{    class Program    {        static void Main(string[] args)        {            Deck myDeck = new Deck();            myDeck.Shuffle(); // 随机创建52张牌            for (int i=0;i<52;i++)            {                Card tempCard = myDeck.GetCard(i);                Console.WriteLine(tempCard.ToString());            }            Console.ReadKey();        }    }}

转载地址:http://uatbo.baihongyu.com/

你可能感兴趣的文章
异构数据库
查看>>
iOS.ObjC.Basic-Knowledge
查看>>
iOS.ReactNative-3-about-viewmanager-uimanager-and-bridgemodule
查看>>
透视校正插值
查看>>
Cobertura代码覆盖率测试
查看>>
【selenium学习笔记一】python + selenium定位页面元素的办法。
查看>>
Linux禁止ping
查看>>
【Matplotlib】 标注一些点
查看>>
[AX]乐观并发控制Optimistic Concurrency Control
查看>>
自定义类加载器
查看>>
MySQL数据库事务各隔离级别加锁情况--Repeatable Read && MVCC(转)
查看>>
C++构造函数例程
查看>>
把某一列值转换为逗号分隔字符串
查看>>
DLL,DML,DCL,TCL in Oracle
查看>>
android之存储篇_存储方式总览
查看>>
SSE指令集学习:Compiler Intrinsic
查看>>
两种attach to process的方法
查看>>
WCF如何使用X509证书(安装和错误)(二)
查看>>
Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
查看>>
iOS中--NSArray调用方法详解 (李洪强)
查看>>