2014年2月8日 星期六

[C#] 範例 : 洗牌 : 52張牌 (主控台)

練習了一下 簡單的52張牌 洗牌
想法 :
1. 先創造一個容器(裝52張牌)
2. 利用Random 亂數出數字(要少於52)
3. 利用迴圈尋覽每一張牌。
4. 將產生的亂數與當前的 i 值數字對調,來達到隨機換牌的效果

原來這也有參考 : http://openhome.cc/Gossip/AlgorithmGossip/ShuffleCard.htm




  1.  class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.             Cards card = new Cards();
  6.             //洗牌
  7.             card.shuffle();
  8.             //顯示牌
  9.             card.showcard();
  10.         }
  11.     }
  12.     public class Cards
  13.     {
  14.         public List<int> pack { get; set; }
  15.         public Cards(){
  16.             pack = new List<int>(52);
  17.             for (int i = 1; i <= 52; i++)
  18.             {
  19.                 pack.Add(i);
  20.             }
  21.            
  22.         }
  23.  //顯示牌
  24.         public void showcard(){
  25.             int temp = 1;
  26.             foreach (var item in this.pack)
  27.                 {
  28.                 Console.Write(item.ToString() + " ");
  29.                 if (temp % 13 == 0)
  30.                 {
  31.                     Console.WriteLine();
  32.                 }
  33.                 temp++;
  34.                 }
  35.         }
  36.         //洗牌
  37.         public void shuffle()
  38.         {
  39.             Random rnd = new Random();
  40.             for (int i = 0; i < pack.Count; i++)
  41.             {
  42.                 int swap = rnd.Next(51) + 1;
  43.                 int temp = pack[i];
  44.                 pack[temp] = pack[swap];
  45.                 pack[swap] = temp;
  46.             }
  47.         }        
  48.     }

沒有留言:

張貼留言