pack.cs

来自「微软系列丛书<<C#2005从入门到精通>>」· CS 代码 · 共 59 行

CS
59
字号
namespace Cards
{
	using System;
	using System.Collections;

	class Pack
	{
		public Pack()
		{
			for (int pips = PlayingCard.Ace; pips <= PlayingCard.King; ++pips)
			{
				Accept(new PlayingCard(Suit.Clubs, pips));
				Accept(new PlayingCard(Suit.Diamonds, pips));
				Accept(new PlayingCard(Suit.Hearts, pips));
				Accept(new PlayingCard(Suit.Spades, pips));
			}
		}

		public bool IsEmpty()
		{
			return cards.Count == 0;
		}

		public PlayingCard Deal()
		{
			if (cards.Count == 0)
			{
				throw new InvalidOperationException("can't deal from empty pack");
			}
			PlayingCard dealt = (PlayingCard)cards[0];
			cards.RemoveAt(0);
			return dealt;
		}

		public void Accept(PlayingCard card)
		{
			cards.Add(card);
		}

		public void Clear()
		{
			cards.Clear();
		}

		public void Shuffle()
		{
			Random random = new Random();
			for (int i = 0; i != cards.Count; i++)
			{
				int cardToSwap = random.Next() % cards.Count;
				object temp = cards[i];
				cards[i] = cards[cardToSwap];
				cards[cardToSwap] = temp;
			}
		}

		private ArrayList cards = new ArrayList();
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?