如何定义一个字符串大于另一个字符串? (C#)(入门)

时间:2018-08-29 12:43:17

标签: c#

极端是编码的新手,所以答案很明显。我必须制作纸牌游戏War。我已经为甲板的一部分创建了这样的字符串列表:

List<string> userDeck = new List<string>
        {
            "2",
            "3",
            "4",
            "5",
            "6",
            "7",
            "8",
            "9",
            "10",
            "Jack",
            "Queen",
            "King",
            "Ace",
        };

有没有一种方法可以指示计算机“杰克”大于“ 10”,“女王”大于“杰克”,依此类推?我不确定应该在哪里或应该怎么做。

,如果您对我应该如何操作还有其他建议,请告诉我。我必须使用列表。我最初是用整数列表代替的,但是我不知道为显示目的分配诸如“杰克”,“皇后”,“国王”等名称的简单方法。

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

尝试创建一个名为“ Card”的对象。该对象可以包含多个值。例如:

public class MyCard
{
     public string Name {get;set;}
     public int Value {get;set;}

     public MyCard(string name, int value)
     {
         this.Name = name;
         this.Value = value;
     }
}

创建此对象后,将在列表中使用它。

List<MyCard> userDeck = new List<MyCard>();

您可以通过以下方式填写列表:

usertDeck.Add(new MyCard("2", 1));
....
usertDeck.Add(new MyCard("K", 11));

因此,要比较2张卡,只需使用“ Value”变量进行检查

答案 1 :(得分:0)

类似于Vincius的回答,但进行了一些更改以提高可用性:

  enum Suit
  {
    Clubs = 1,
    Diamonds = 2,
    Hearts = 3,
    Spades = 4
  }

  class Card
  {
    private static readonly Dictionary<string, int> rankMap = new Dictionary<string, int>()
    {
      {"2", 2 },
      {"3", 3 },
      {"4", 4 },
      {"5", 5 },
      {"6", 6 },
      {"7", 7 },
      {"8", 8 },
      {"9", 9 },
      {"10", 10 },
      {"Jack", 11 },
      {"Queen", 12 },
      {"King", 13 },
      {"Ace", 14 },
    };


    private Suit suit;
    private string rank;

    public Suit Suit => suit;
    public string Rank => rank;
    public int Value { get { return rankMap[rank]; } }

    public Card(Suit s, string r)
    {
      suit = s;
      rank = r;
    }
  }

使用方式:

  Card c1 = new Card(1, "Jack");  // 1 is Clubs
  Card c2 = new Card(4, "Queen"); // 4 is Spades
  Console.WriteLine(c1.Value); // prints 11
  Console.WriteLine(c2.Value); // prints 12

答案 2 :(得分:0)

重构代码(达到每张卡的要求值)的最简单方法是使用元组而不是通用列表中的字符串类型,如下所示:

List<Tuple<int,string>> userDeck = new List<Tuple<int,string>>
        {
            new Tuple<int,string>(2,"2"),
            new Tuple<int,string>(3,"3"),
            new Tuple<int,string>(4,"4"),
            new Tuple<int,string>(5,"5"),
            new Tuple<int,string>(6,"6"),
            new Tuple<int,string>(7,"7"),
            new Tuple<int,string>(8,"8"),
            new Tuple<int,string>(9,"9"),
            new Tuple<int,string>(10,"10"),
            new Tuple<int,string>(11,"Jack"),
            new Tuple<int,string>(12,"Queen"),
            new Tuple<int,string>(13,"King"),
            new Tuple<int,string>(14,"Ace"),
        };