第10章第4题:
4) 为扑克牌类库编写一个控制台程序,从搅乱的Deck对像中一次取出5张牌。如果这5张牌都是相同的花色,客户程序就应在屏幕上显示这5张牌,以及文本“Flush!”,否则就显示50张牌以及文本“No flush”, 并退出。
下面是从网上下载的答案:
using System;
using Ch10CardLib;
namespace Exercise_Answers
{
class Class1
{
static void Main(string[] args)
{
while(true)
{
Deck playDeck = new Deck();
playDeck.Shuffle();
bool isFlush = false;
int flushHandIndex = 0;
for (int hand = 0; hand < 10; hand++)
{
isFlush = true;
Suit flushSuit = playDeck.GetCard(hand * 5).suit;
for (int card = 1; card < 5; card++)
{
if (playDeck.GetCard(hand * 5 + card).suit !=
flushSuit)
{
isFlush = false;
}
}
if (isFlush)
{
flushHandIndex = hand * 5;
break;
}
}
if (isFlush)
{
Console.WriteLine("Flush!");
for (int card = 0; card < 5; card++)
{
Console.WriteLine(playDeck.GetCard(flushHandIndex +
card));
}
}
else
{
Console.WriteLine("No flush.");
}
Console.ReadLine();
}
}
}
}
答案有一个问题,就是没有按题目的要求,如果没有相同花色的5张牌,就要显示全部50张牌,而仅仅是给出了文本“No flush”
我不知道要如何将全部50张牌显示出来,请大家帮忙。
Deck playDeck = new Deck(); //没有 Deck 类的定义?
//--------------------------------------------------
Card c = playDeck.GetCard(0);
for(int i = 1;i < 50, c != null;i++){// i < 50 ?
Console.WriteLine(c);
Card c = playDeck.GetCard(i);
}