如何将列表发送到另一个班级以及如何连接它

时间:2019-05-31 22:01:48

标签: c# asp.net

我正在上学,做一些游戏..我选择了二十一点BCS,我认为这很容易,但是现在我知道这对我来说并不容易。所以我需要解决方案方面的帮助。

我试图以某种方式连接列表“卡”,但如果没有连接则连接idk。

这里是随机播放

public class Shuffle
{
    public List<Card>cards;
    public void Michani()
    {
        Random ran = new Random();
        int r = cards.Count;
        while (r > 1)
        {
            int n = ran.Next();
            Card card = cards[n];
            cards[n] = cards[r];
            cards[r] = card;
        }
    }
}

public class Card
{      
    public CardValue Value { get; set; }
    public CardSuit Suit { get; set; }
    public int Weight { get; set; }
}

public enum CardValue : int
{
    Eso = 1,
    Dvojka = 2,
    Trojka = 3,
    Ctyrka = 4,
    Petka = 5,
    Sestka = 6,
    Sedmicka = 7,
    Osmicka = 8,
    Devitka = 9,
    Desitka = 10,
    Jack = 11,
    Queen = 12,
    King = 13,
}

public enum CardSuit : int
{
    Hearts = 1,
    Spades = 2,
    Clubs = 3,
    Diamons = 4
}

这里是结束卡:

public class DeckGen
{
    public List<Card> cards;

    public void Deck()
    {
        for (int v = 0; v < 13; v++)
        {
            for (int s = 0; s < 4; s++)
            {
                cards.Add(new Card() { Suit = (CardSuit)s, Value = (CardValue)v });
                if (s <= 8)
                {
                    cards[cards.Count - 1].Weight = s + 1;
                }
                else
                {
                    cards[cards.Count - 1].Weight = 10;
                }

            };
        }

    }
}

在这里创建牌组:

public class DrawCard
{
    public List<Card> cards { get; }

    public Card Lizani()
    {
        if (cards.Count <= 0)
        {
            DeckGen();
            Shuffle();
        }
        Card returnedcard = cards[cards.Count - 1];
        cards.RemoveAt(cards.Count - 1);
        return returnedcard;
    }

    public void Shuffle()
    {

    }

    public void DeckGen()
    {

    }
}

这里正在抓牌:

2 个答案:

答案 0 :(得分:1)

这里有很多问题,还有一个值得推荐的最佳博客。但是我是否可以建议和仅使用扩展方法的老式方法(值得商))

注意 我修复了很多错误

public static class CardUtils
{
   private static Random ran = new Random();
   public static void Shuffle(this List<Card> cards)
   {
      var n = cards.Count;
      while (n > 1)
      {
         n--;
         var k = ran.Next(n + 1);
         Card value = cards[k];
         cards[k] = cards[n];
         cards[n] = value;
      }
   }
}

用法

chards.Shuffle();

注意 我说过时了,因为这些天我们倾向于不使用此类静态类来进行测试和提供DI服务。但是,我认为这是一个很好的简单解决方案,可以在您需要的任何地方访问

还请注意 有更好的随机化技术,您的播放器可能会发怒,因为混洗器无法很好地发挥作用 < / sub>

答案 1 :(得分:0)

我不知道我是否确实回答了这个问题,但是我认为使类和列表静态化将达到目的,然后您可以像这样调用列表

  DeckGen.CardList;