C#入门经典第十章例题 - - 卡牌

1.库
Suit
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace CardLib
 7 {
 8     public enum Rank
 9     {
10         
11         Ace = 1,
12         Deuce,
13         Three,
14         Four,
15         Five,
16         Six,
17         Seven,
18         Eight,
19         Nine,
20         Ten,
21         Jack,
22         Queen,
23         King
24     }
25 }
Rank
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace CardLib
 7 {
 8     public class Card
 9     {
10         private readonly Rank rank;
11         private readonly Suit suit;
12 
13 
14         private Card()
15         {
16 
17         }
18         public Card(Suit newSuit, Rank newRank)
19         {
20             suit = newSuit;
21             rank = newRank;
22         }
23 
24         public override string ToString()
25         {
26             return "The " + rank + " of " + suit + "s\n";
27         }
28     }
29 }
Card
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace CardLib
 8 
 9 {
10     public class Deck
11     {
12         private Card[] cards;
13 
14         public Deck()
15         {
16             cards = new Card[52];
17             for(int suitVal=0;suitVal<4;suitVal++)
18             {
19                 for(int rankVal=1;rankVal<14;rankVal++)
20                 {
21                     cards[suitVal * 13 + rankVal - 1] = new Card((Suit)suitVal, (Rank)rankVal);
22                 }
23             }
24         }
25 
26         public Card GetCard(int cardNum)
27         {
28             if (cardNum >= 0 && cardNum <= 51)
29                 return cards[cardNum];
30             else
31                 throw (new System.ArgumentOutOfRangeException("cardNum", cardNum, "Value must be between 0 and 51."));
32         }
33 
34         public void Shuffle()
35         {
36             Card[] newDeck = new Card[52];
37             bool[] assigned = new bool[52];
38             Random sourceGen = new Random();
39             for (int i = 0 ;i < 52;i++)
40             {
41                 int destCard = 0;
42                 bool foundCard = false;
43                 while(foundCard==false)
44                 {
45                     destCard = sourceGen.Next(52);
46                     if (assigned[destCard] == false)
47                         foundCard = true;
48                 }
49                 assigned[destCard] = true;
50                 newDeck[destCard] = cards[i];
51             }
52 
53             newDeck.CopyTo(cards, 0);
54         }
55     }
56 }
Deck

2.输出卡牌

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 using CardLib;
 7 
 8 namespace CardClient
 9 {
10     class Program
11     {
12         static void Main(string[] args)
13         {
14             Deck myDeck = new Deck();
15             myDeck.Shuffle();
16             for(int i=0;i<52;++i)
17             {
18                 Card tempCard = myDeck.GetCard(i);
19                 Console.Write(tempCard.ToString());
20                 //if (i != 51)
21                 //    Console.Write(",");
22                 //else
23                 //    Console.WriteLine();
24             }
25             Console.ReadKey();
26             
27             
28             
29         }
30     }
31 }
Program

猜你喜欢

转载自www.cnblogs.com/QQW123/p/9087837.html
今日推荐