📄 deck.cs
字号:
using System;
namespace DeckOfCards
{
/// <summary>
/// Summary description for Deck.
/// </summary>
public class Deck
{
private System.Collections.ArrayList m_cards =
new System.Collections.ArrayList();
public int Count
{
get {return m_cards.Count;}
}
public Card this [int indexer ]
{
get
{
if ((indexer >=0)&&(indexer <m_cards.Count))
{
return((Card)m_cards [indexer ]);
}
else
{
throw new ArgumentOutOfRangeException("Index out of range.");
}
}
}
private void MakeDeck(Suit[] suits, FaceValue[] values) {
for (int aSuit =0;aSuit <suits.Length;aSuit++) {
for (int aValue =0;aValue <values.Length;aValue++) {
m_cards.Add(new Card(suits[aSuit], values[aValue]));
}
}
}
public Deck()
{
Suit [] suits = {Suit.Clubs,Suit.Diamonds,Suit.Hearts,
Suit.Spades };
FaceValue [] values = { FaceValue.Ace,FaceValue.Two,
FaceValue.Three,FaceValue.Four,FaceValue.Five,FaceValue.Six,
FaceValue.Seven,FaceValue.Eight,FaceValue.Nine,FaceValue.Ten,
FaceValue.Jack,FaceValue.Queen,FaceValue.King};
this.MakeDeck(suits,values);
}
public Deck(Suit[] suits, FaceValue[] values)
{
this.MakeDeck(suits,values);
}
public void Shuffle()
{
System.Random rGen = new System.Random();
System.Collections.ArrayList newDeck =
new System.Collections.ArrayList();
while (m_cards.Count >0)
{
//Choose one card at random to remove.
int toRemove = rGen.Next(0,m_cards.Count -1);
Card remove = (Card)m_cards [toRemove ];
m_cards.Remove(remove);
//Add the removed card to the new deck.
newDeck.Add(remove);
}
//Replace old deck with new deck.
m_cards = newDeck;
}
public void Deal(Hand [] hands) {
int handIndex =0;
while (m_cards.Count >0) {
hands [handIndex ].Add((Card)m_cards [0 ]);
m_cards.RemoveAt(0);
handIndex =(handIndex ==hands.Length -1) ? 0 : handIndex+1;
}
}
public Card Draw()
{
Card topCard =null;
if (m_cards.Count >0)
{
topCard =(Card)m_cards [0 ];
m_cards.RemoveAt(0);
}
return topCard;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -