C# 需要帮助创建和显示我的卡片组吗
我对c#编码相当陌生,我很难将我的牌并排显示出来,而且我不确定我一开始是否正确地对牌和牌组进行了编码。任何有用的东西,包括提示 我的枚举C# 需要帮助创建和显示我的卡片组吗,c#,.net,C#,.net,我对c#编码相当陌生,我很难将我的牌并排显示出来,而且我不确定我一开始是否正确地对牌和牌组进行了编码。任何有用的东西,包括提示 我的枚举 public enum SuitEnum { Hearts, Diamonds, Clubs, Spades } public enum ValueEnum { Ace = 1, Two = 2, Three = 3
public enum SuitEnum
{
Hearts,
Diamonds,
Clubs,
Spades
}
public enum ValueEnum
{
Ace = 1,
Two = 2,
Three = 3,
Four = 4,
Five = 5,
Six = 6,
Seven = 7,
Eight = 8,
Nine = 9,
Ten = 10,
Jack = 10,
Queen = 10,
King = 10
}
卡片类
public class Card
{
SuitEnum Suit { get; set; }
ValueEnum Value { get; set; }
public Card(SuitEnum cardSuit, ValueEnum cardValue)
{
Suit = cardSuit;
Value = cardValue;
}
}
最后是我的甲板课
public class Deck
{
public List<Card> Cards { get; set; }
public Deck()
{
Cards = new List<Card>();
foreach (SuitEnum suit in Enum.GetValues(typeof(SuitEnum)))
{
foreach (ValueEnum value in Enum.GetValues(typeof(ValueEnum)))
{
Cards.Add(new Card(suit, value));
}
}
}
公共类甲板
{
公共列表卡{get;set;}
公共甲板()
{
卡片=新列表();
foreach(Enum.GetValues中的SuitEnum suit(typeof(SuitEnum)))
{
foreach(Enum.GetValues中的ValueEnum值(typeof(ValueEnum)))
{
卡片。添加(新卡片(套装、价值));
}
}
}
现在我已经对我的卡和卡组进行了编码,我如何在主程序代码中显示每次洗牌的所有52张卡?我是否必须在类中创建另一个方法?或者可能只是在主代码中创建一个循环?让我知道您的想法。我不知道您的应用程序,但因为您是StackOverflow的新手,所以我为您更改了一些代码您的卡需要洗牌。我删除了枚举重复,并在卡类中添加了一个显示方法。我通过检查重复从给定范围生成一个随机数。我希望它对您有用
public enum SuitEnum
{
Hearts,
Diamonds,
Clubs,
Spades
}
public enum ValueEnum
{
Ace = 1,
Two = 2,
Three = 3,
Four = 4,
Five = 5,
Six = 6,
Seven = 7,
Eight = 8,
Nine = 9,
Ten = 10,
Jack = 11,
Queen = 12,
King = 13
}
public class Card
{
SuitEnum Suit { get; set; }
ValueEnum Value { get; set; }
public Card(SuitEnum cardSuit, ValueEnum cardValue)
{
Suit = cardSuit;
Value = cardValue;
}
public string Display()
{
return Suit + "" + Value.ToString();
}
}
public class Deck
{
public List<Card> Cards { get; set; }
public Deck()
{
Random rand = new Random();
Cards = new List<Card>();
List<int> possibleSuit = Enumerable.Range(1, 4).ToList();
List<int> listNumberSuite = new List<int>();
for (int i = 0; i < 4; i++)
{
int index = rand.Next(0, possibleSuit.Count);
listNumberSuite.Add(possibleSuit[index]);
SuitEnum suit = (SuitEnum)possibleSuit[index];
possibleSuit.RemoveAt(index);
List<int> possibleDeck = Enumerable.Range(1, 13).ToList();
List<int> listNumberDeck = new List<int>();
for (int j = 0; j < 13; j++)
{
int indexDeck = rand.Next(0, possibleDeck.Count);
listNumberDeck.Add(possibleDeck[indexDeck]);
ValueEnum deck = (ValueEnum)possibleDeck[indexDeck];
Cards.Add(new Card(suit, deck));
possibleDeck.RemoveAt(indexDeck);
}
}
foreach (Card c in Cards)
{
Console.WriteLine(c.Display());
}
}
}
public enum SuitEnum
{
心,
钻石,
俱乐部,
黑桃
}
公共枚举值枚举
{
Ace=1,
二等于二,
三等于三,
四等于四,
五等于五,
六等于六,
七等于七,
八等于八,
九等于九,
十等于十,
杰克=11,
女王=12,
国王=13
}
公务舱卡
{
SuitEnum Suit{get;set;}
ValueEnum值{get;set;}
公共卡(SuitEnum cardSuit,ValueNum cardValue)
{
西服=卡片西服;
价值=信用卡价值;
}
公共字符串显示()
{
return Suit+“”+Value.ToString();
}
}
公务舱甲板
{
公共列表卡{get;set;}
公共甲板()
{
Random rand=新的Random();
卡片=新列表();
List possibleSuit=Enumerable.Range(1,4).ToList();
List listNumberSuite=新列表();
对于(int i=0;i<4;i++)
{
int index=rand.Next(0,possibleSuit.Count);
listNumberSuite.Add(可能的suit[index]);
SuitEnum suit=(SuitEnum)可能的suit[index];
可能的诉讼移除(索引);
List-possibleDeck=Enumerable.Range(1,13).ToList();
List listNumberDeck=新列表();
对于(int j=0;j<13;j++)
{
int indexDeck=rand.Next(0,可能的deck.Count);
添加(可能的检查[indexDeck]);
ValueEnum组=(ValueEnum)可能的检查[indexDeck];
卡片。添加(新卡片(套装、套牌));
可能的删除(indexDeck);
}
}
foreach(卡片中的卡片c)
{
Console.WriteLine(c.Display());
}
}
}
首先,我不确定是否正确编码了卡牌和牌组。然后编写单元测试以验证应用程序的正确行为。卡牌有等级和值,其值取决于游戏内容。扑克和Euchre使用不同的值。卡牌计算应覆盖ToString()
我可以指出,要小心。你可以有重复的,但这会影响平等性和转换。欢迎来到StackOverflow。像这样的问题太广泛了,无法回答,因为你似乎根本不知道如何设计、组织和创建一个运行的程序,而不是在实际代码中遇到问题。你的问题很难解决时间与。请参观帮助中心,了解如何提出好的问题。祝你好运!有很多不同的方法,例如,如果我们放弃枚举并构建简单类,我们可以轻松生成一副牌,如:(从西服中的西服从“23456789JQKA”中的值选择新卡(西服,值))。ToArray();
3行,简单的LinQ标量积。清晰可读。@Tyler Weber检查更新的答案我解决了循环问题