Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 扑克游戏中不显示牌手_C#_Class_Poker - Fatal编程技术网

C# 扑克游戏中不显示牌手

C# 扑克游戏中不显示牌手,c#,class,poker,C#,Class,Poker,我正在用C#制作一个扑克游戏,为两个不同的玩家随机抽取五张牌,我希望这五张牌以“花色数”的格式显示。此操作的所有方法都在卡交易类中: class DealOut : CardDeck { private PlayingCard[] Player1; private PlayingCard[] Player2; private PlayingCard[] Sorted1; private PlayingCard[] Sorted2; public Dea

我正在用C#制作一个扑克游戏,为两个不同的玩家随机抽取五张牌,我希望这五张牌以“花色数”的格式显示。此操作的所有方法都在卡交易类中:

class DealOut : CardDeck
{
    private PlayingCard[] Player1;
    private PlayingCard[] Player2;

    private PlayingCard[] Sorted1;
    private PlayingCard[] Sorted2;

    public DealOut()
    {
        Player1 = new PlayingCard[5];
        Player2 = new PlayingCard[5];

        Sorted1 = new PlayingCard[5];
        Sorted2 = new PlayingCard[5];
    }

    public void Deal()
    {
        CreateDeck();
        GetHand();
        SortCards();
        DisplayCards();
        Evaluate();
    }

    // Gives 5 cards to each player
    public void GetHand()
    {
        for (int i = 0; i < 5; i++)
            Player1[i] = GetDeck[i];
        for (int i = 5; i < 10; i++)
            Player2[i - 5] = GetDeck[i];
    }

    public void SortCards()
    {
        var SeePlayer1 = from hand in Player1
                         orderby hand.CardNo
                         select hand;

        var SeePlayer2 = from hand in Player2
                         orderby hand.CardNo
                         select hand;

        var index = 0;
        foreach (var element in SeePlayer1.ToList())
        {
            Sorted1[index] = element;
            index++;
        }

        index = 0;
        foreach (var element in SeePlayer2.ToList())
        {
            Sorted2[index] = element;
            index++;
        }
    }

    public void DisplayCards()
    {
        Console.WriteLine("\nPlayer 1's cards are:\n");
        for (int i = 0; i < 5; i++)
        {
            Console.Write(CardNo.ToString());
            Console.Write(" of ");
            Console.Write(CardSuit.ToString());
            Console.Write("\n");
        }

        Console.WriteLine("\nPlayer 2's cards are:\n");
        for (int i = 5; i < 10; i++)
        {
            Console.Write(CardNo.ToString());
            Console.Write(" of ");
            Console.Write(CardSuit.ToString());
            Console.Write("\n");
        }
    }

我尝试了各种方法来显示文本,包括构建一个DisplayText类,但都没有成功。当前代码输出五行“0的心”,但我希望它为每个玩家输出五张不同的卡。

您的显示卡方法为false

尝试:


player2也一样

侧注:根据您的代码,即
类卡片组:PlayingCard
-那么卡片组是一张卡片?不是52个的集合?@DmitryBychenko方法
public void CreateDeck()
创建了52个数组cards@Yellowman94,这不是从
PlayingCard
继承
CardDeck
的好理由。您可以调用
myCardDeck.CardSuit
,这显然是没有意义的。“CardDeck包含52张PlayingCard的集合”(您在代码中创建)的关系是正确的。“一张牌组就是一张玩牌”不是。同样,为了简化所有的事情:不要洗牌,从顶部挑选牌-而是让牌按顺序排列,然后随机发牌。这在计算上要简单得多,但在概率上是等价的。
class CardDeck : PlayingCard
{
    // All cards in deck
    const int AllCards = 52; 
    // Array of all cards
    private PlayingCard[] deck;

    public CardDeck()
    {
        deck = new PlayingCard[AllCards];
    }

    // Get current deck
    public PlayingCard[] GetDeck { get { return deck; } } 

    // Create deck of cards
    public void CreateDeck()
    {
        int i = 0;
        foreach (Suit s in Enum.GetValues(typeof(Suit)))
        {
            foreach (Number n in Enum.GetValues(typeof(Number)))
            {
                deck[i] = new PlayingCard { CardSuit = s, CardNo = n };
                i++;
            }
        }

        Shuffle();
    }

    // Shuffle the cards
    public void Shuffle()
    {
        Random rand = new Random();
        PlayingCard temp;

        // Shuffles 20 times
        for (int shuffle = 0; shuffle < 20; shuffle++)
        {
            for (int i = 0; i < AllCards; i++)
            {
                // Randomy swap cards, loop 52 times
                int secondCardIndex = rand.Next(13);
                temp = deck[i];
                deck[i] = deck[secondCardIndex];
                deck[secondCardIndex] = temp;
            }
        }
    }
}
class PlayingCard
{
    public enum Suit
    {
        Hearts, Clubs, Diamonds, Spades
    }

    public enum Number
    {
        Two = 2, Three, Four, Five, Six, Seven, Eight,
        Nine, Ten, Jack, Queen, King, Ace
    }

    public Suit CardSuit { get; set; }
    public Number CardNo { get; set; }
}
        foreach(var card in Player1)
        {
            Console.Write(card.CardNo.ToString());
            Console.Write(" of ");
            Console.Write(card.CardSuit.ToString());
            Console.Write("\n");
        }