扑克排序的两个问题

1.先按花色排序,再按数字排序  

public class Poker

    {
        public int Number { get; set; }
        public int Suit { get; set; }
        public string PokerString { get; set; }
        public int TransferSuit(char a)
        {
            int number = 0; ;
            switch (a)
            {
                case '♠':
                    number = 4;
                    break;
                case '♣':
                    number = 3;
                    break;
                case '♥':
                    number = 2;
                    break;
                case '♦':
                    number = 1;
                    break;
            }
            return number;


        }
        public int TransferNumer(string a)
        {
            int number;
            switch (a)
            {
                case "J":
                    number = 11;
                    break;
                case "Q":
                    number = 12;
                    break;
                case "K":
                    number = 13;
                    break;
                case "A":
                    number = 14;
                    break;
                default:
                    number = Convert.ToInt32(a);
                    break;




            }
            return number;


        }
    }


    class Program2
    {
        static void Main()
        {
            List<Poker> list = new List<Poker>();
            using (StreamReader sr = new StreamReader("Poker.txt", Encoding.UTF8))
            {
                string line;
                while ((line = sr.ReadLine()) != null)
                {
                    if (line.Trim().Length > 0)
                    {
                        char suit = (line.Trim())[0];
                        string num = (line.Trim()).Substring(1);
                        Poker p = new Poker() { PokerString = line.Trim() };
                        p.Number = p.TransferNumer(num);
                        p.Suit = p.TransferSuit(suit);


                        list.Add(p);


                    }


                }
            }


            var result = from p in list
                         orderby p.Suit descending, p.Number descending
                         select p;


            using (StreamWriter sw = new StreamWriter("Poker3.txt", false, Encoding.UTF8))
            {
                foreach (var item in result)
                {
                    sw.WriteLine(item.PokerString);
                }


            }

2.像斗地主一样,一样的牌排在前面,之后按序号排序


public class PockerHelper
    {
        public static string[] numberArray = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A" };
        public static char[] suitArray = { '♠', '♣', '♥', '♦' }; 
    }


     public class Pocker
    {
         public int Numerber { get; set; }


         private List<char> suits = new List<char>();
         public List<char> Suits
         {
             get { return suits; }
         }


         public override string ToString()
         {
             StringBuilder sb = new StringBuilder();
             foreach (char c in PockerHelper.suitArray)
             {
                 if (this.Suits.Contains(c))
                 {
                     sb.AppendLine(string.Format("{0}{1}", c, PockerHelper.numberArray[this.Numerber - 2])); // 这个地方的2只是为了调试时,方便阅读  
                 }
             }


             return sb.ToString(); 
         }
    }


     public class PockerList
     {
         private List<Pocker> listPocker = new List<Pocker>();


         public List<Pocker> ListPocker
         {
             get { return listPocker; }
         }
         public void Add(string pocker)
         {
             string temp = pocker.Substring(1);
             int num = PockerHelper.numberArray.ToList().IndexOf(temp) + 2;


             if (listPocker.Any(p=>p.Numerber == num))
             {
                 Pocker rp = this.listPocker.Find(p => p.Numerber == num);
                 rp.Suits.Add(pocker[0]);
             }
             else
             {
                 Pocker p = new Pocker(){Numerber = num};
                 p.Suits.Add(pocker[0]);


                 listPocker.Add(p);
             }
         }
     
     }


     public class Program
     {


 
         static void Main()
         {


             SortPocker();
         
         }




         static void SortPocker()
         {
             PockerList list = new PockerList();
             using (StreamReader sr = new StreamReader("Poker.txt", Encoding.UTF8))
             {
                 string line;
                 while ( (line =sr.ReadLine()) != null)
                 {
                     if (line.Trim().Length >0)
                     {
                         list.Add(line.Trim());
                     }


                 }




                 sr.Close();
             }
             var result = from p in list.ListPocker
                          orderby p.Suits.Count descending, p.Numerber descending
                          select p;


 
             using (StreamWriter file = new StreamWriter("Poker1.txt", false, Encoding.UTF8))
             {
                 foreach (var item in result)
                 {
                     file.Write(item.ToString());
                 }
                 file.Close();
             }  
         }
     }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值