您的位置:首页 > 其它

10_9_5为Ch10CardLib库编写一个控制台客户程序,从扰乱的Deck对象中一次取出5张牌.如果这5张牌都是相同的花色,客户程序就应在屏幕上显示这5张牌,以及文本"Flush",否则就显示50

2012-10-10 01:35 866 查看
//file name Suit.Cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Ch10CardLib
{
public enum Suit
{
Club,   //梅花
Diamond,    //方块
Heart,      //红桃
Spade   //黑桃.
}
}

//file name Rank.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Ch10CardLib
{
public enum Rank    //牌的点数.
{
Ace=1,
Deuce,
Three,
Four,
Five,
Six,
Seven,
Eight,
Nice,
Ten,
Jack,
Queen,
King
}
}

//file name Cards.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Ch10CardLib
{

//Card 表示一张标准的扑克牌,包含4种花色,顺序是A-K
public class Card
{
//修改为公开的字段.
public readonly Suit suit;
public readonly Rank rank;
public Card()
{

}

public Card(Suit newSuit, Rank newRank)
{
suit = newSuit;
rank = newRank;
}

public override string ToString()
{
return "The " + rank + " of " + suit + "s";
}

}
}

//file name Deck.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Ch10CardLib
{
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)
{
return cards[cardNum];
}
else
{
throw (new System.ArgumentOutOfRangeException("cardNum",cardNum,
"Value must be between 0 and 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;
}
newDeck[destCard] = cards[i];
assigned[destCard] = true;
}

newDeck.CopyTo(cards, 0);
}
}//end deck.

}

// CopyTo摘要:
//     将当前一维 System.Array 的所有元素复制到指定的一维 System.Array 中(从指定的目标 System.Array 索引开始)。索引指定为
//     32 位整数。
//
// 参数:
//   array:
//     一维 System.Array,它是从当前 System.Array 复制的元素的目标位置。
//
//   index:
//     一个 32 位整数,它表示 array 中复制开始处的索引。

//file name Ch10CardClient.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Ch10CardLib;

namespace Ch10CardClient
{
class Program
{
static void Main(string[] args)
{
Deck myDeck = new Deck();
Card[] cards;
int numSuit=0;
int icount=0;

cards = new Card[5];

//       while (true)
//      {
myDeck.Shuffle();
icount = 0;
for (int i = 0; i < 5; i++)
{
cards[i] = myDeck.GetCard(i);
}

for (int i = 0; i < 5; i++)
{
if (cards[0].suit == cards[i].suit)
{
icount++;
}
}
//          if (icount == 5)
//              break;
//      }

if (icount == 5)
{
Console.WriteLine("Flush .\n ");
for (int i = 0; i < 5; i++)
{
Console.WriteLine( cards[i].ToString());
}
}
else
{
Console.WriteLine("No flush .\n");
for (int i = 0; i < 50; i++)
{
Console.WriteLine(myDeck.GetCard(i));
}
}

//    Console.ReadKey();

}
}
}


Ps:可以修改程序,得出5张牌为同花顺要循环多少次.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐