0

/こんにちは、[] を必要としないため、この for ループで列挙型を循環させるにはどうすればよいか考えていました。カードのデッキにすべてのカードを作成しようとしています。/

using System;
using System.Collections.Generic;
using System.Text;

namespace BlackJackGameX
{
    public class Deck
    {

        Random rNumber = new Random();

        List<Card> Cards;
        List<Card> ShuffledDeck;

        public Deck ()
        {
            Cards = NewDeck();
        }

        public void Shuffle()
        {

            for (int i = 0; i <= 51; ++i) 
            {

                int c = rNumber.Next (1, 53);

                ShuffledDeck.Add(Cards[c]);

            }
        }

/これが主な問題領域です。コンストラクターでも間違いを犯したと思いますが、それはおそらく無関係の問題です/

        private List<Card> NewDeck(Suit CardSuit, FaceValue CardValue, int iValue)
        {
            for (int i = 0; i <= 3; i++) 
            {
                for (int j = 0; j <= 12; j++) 
                {
                    Card newCard = new Card(CardSuit[i], CardValue[j], iValue[j]);
                }
            }
        }

        public void Print()
        {
            Console.WriteLine(ShuffledDeck[1].CardValue);
            Console.ReadLine();
        }

    }
}

/*This is the other class containing the enums*/

using System;
using System.Collections.Generic;
using System.Text;

namespace BlackJackGameX
{

    public enum Suit {Spades, Hearts, Clubs, Diamonds}
    public enum FaceValue {Ace, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King}

    public class Card
    {
        public Suit CardSuit;
        public FaceValue CardValue;
        public int iValue;


        public Card (Suit cardSuit, FaceValue cardValue, int ivalue)
        {
            CardSuit = cardSuit;
            CardValue = cardValue;
            iValue =ivalue;
        }

        public Card ()
        {

        }
    }
}
4

2 に答える 2

0

クロスジョインを使用します。

    public enum Suit {Spades, Hearts, Clubs, Diamonds}
    public enum FaceValue { Ace, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King }

    public static void Main()
    {

        var cards =
            (from suit in Enum.GetValues(typeof(Suit)).Cast<Suit>()
             from face in Enum.GetValues(typeof(FaceValue)).Cast<FaceValue>()
             select new { Suit = suit, Face = face })

             .ToList();

        foreach (var card in cards)
            Console.WriteLine("{0} {1}", card.Face, card.Suit);

        Console.ReadLine();

    }

次に、提供されているforeachループで、card.Faceまたはcard.Suitを読み取ります。あなたにすべてのスーツとすべてのカードを与える必要があります。

于 2013-03-17T03:42:49.473 に答える
0

インデックス演算子を使用して列挙値を取得することはできません。この関連記事を参照してください: Can you loop through all enum values?

さらに、あなたの cunstroctur にいくつかのエラーがあります。リストを返していないように見えますが、そうすると宣言しています。「New Deck」方式も同様です。

次のことをお勧めします。

private List<Card> NewDeck(Suit CardSuit, FaceValue CardValue, int iValue)
{
   for (int i = 0; i <= 3; i++) 
   {
       for (int j = 0; j <= 12; j++) 
       {
           Card newCard = new Card(AllSuit [i], AllFaces[j], iValue[j]);
       }
   }
}

 var AllSuit = new Suit[]
    {
      Suit.Spades,
      Suit.Hearts,
      Suit.Clubs,
      Suit.Diamonds
    };

    //Do the same for AllFaces...
于 2013-03-17T03:43:46.450 に答える