C# 把牌分成两人
我想把偶数牌给玩家1,把奇数牌给玩家2。如果你们中有人能做到这一点,我将非常感激,谢谢。我知道如何使用数组执行此操作,但我不确定是否使用列表C# 把牌分成两人,c#,list,C#,List,我想把偶数牌给玩家1,把奇数牌给玩家2。如果你们中有人能做到这一点,我将非常感激,谢谢。我知道如何使用数组执行此操作,但我不确定是否使用列表 class MatchDeck { private const int NUMBER_OF_CARDS = 36; private Random r = new Random(); List<MatchCard> deck = new List<MatchCard>(); public Match
class MatchDeck
{
private const int NUMBER_OF_CARDS = 36;
private Random r = new Random();
List<MatchCard> deck = new List<MatchCard>();
public MatchDeck(){ }
public void createDeck()
{
int[] number = { 2, 3, 4, 5, 6, 7, 8, 9, 10 };
string[] suits = { "R[]", "R0", "B0", "B[]" };//these are suits i just made up
// deck = new MatchCard[NUMBER_OF_CARDS];
foreach (var suit in suits)
{
for (int num = 2; num <= 10; num++)
{
deck.Add(new MatchCard(num, suit));
// Console.WriteLine(deck[i++].toString());
}
}
foreach(MatchCard card in deck)
{
Console.WriteLine(card.Number + " " + card.Suit);
}
}
public void Shuffle()
{
Random ran = new Random();
int n = deck.Count;
while (n > 1)
{
n--;
int k = ran.Next(n + 1);
MatchCard value = deck[k];
deck[k] = deck[n];
deck[n] = value;
}
foreach (MatchCard card in deck)
{
Console.WriteLine(card.Number + " " + card.Suit);
}
}
public void deal()
{
List<MatchCard> player1 = new List<MatchCard>();
List<MatchCard> player2 = new List<MatchCard>();
}
}
classmatchdeck
{
卡的私人常数整数=36;
私有随机r=新随机();
列表组=新列表();
公共MatchDeck(){}
公共void createDeck()
{
int[]数={2,3,4,5,6,7,8,9,10};
string[]suits={“R[],“R0”,“B0”,“B[]”};//这些是我刚编的套装
//牌组=新的火柴牌[牌的数量];
foreach(诉讼中的var诉讼)
{
for(int num=2;num 1)
{
n--;
int k=ran.Next(n+1);
火柴卡价值=牌组[k];
甲板[k]=甲板[n];
甲板[n]=价值;
}
foreach(甲板上的火柴卡)
{
控制台写入线(card.Number+“”+card.Suit);
}
}
公开无效交易()
{
List player1=新列表();
List player2=新列表();
}
}
您试图实现的目标可以通过使用循环或Linq来实现。
如果要在数组
或列表
中循环,条件是
if(deck[i]%2==0)
表示偶数。奇数则相反。但是@misha130的注释中已经提到了这一点
您可能想了解列表提供的Linq
可能性。
下面是一个很好的示例,说明如何根据条件(如您的案例)从列表
中提取值。要了解类列表
及其方法,请阅读
在本例中,这两种特殊方法将是您最感兴趣的:&&
现在你应该有所有必要的信息来解决你的问题。祝你好运。如果你仍然卡住了,请发表评论。我已经重构了你的代码,使之符合你的要求。与发牌相关的关键部分是。其中((x,n)=>n%2==0)
和。其中((x,n)=>n%2==1)
代码
public class MatchDeck
{
private Random r = new Random();
List<MatchCard> deck = null;
public MatchDeck()
{
int[] number = { 2, 3, 4, 5, 6, 7, 8, 9, 10 };
string[] suits = { "R[]", "R0", "B0", "B[]" };
deck = number.SelectMany(n => suits, (n, s) => new MatchCard(n, s)).ToList();
}
public void Shuffle()
{
deck = deck.OrderBy(x => r.Next()).ToList();
}
public void Deal()
{
List<MatchCard> player1 = deck.Where((x, n) => n % 2 == 0).ToList();
List<MatchCard> player2 = deck.Where((x, n) => n % 1 == 0).ToList();
}
}
公共类MatchDeck
{
私有随机r=新随机();
列表组=空;
公众火柴台()
{
int[]数={2,3,4,5,6,7,8,9,10};
字符串[]适合={“R[]”、“R0”、“B0”、“B[]”等;
deck=number.SelectMany(n=>suites,(n,s)=>new MatchCard(n,s)).ToList();
}
公开无效洗牌()
{
deck=deck.OrderBy(x=>r.Next()).ToList();
}
公开无效交易()
{
List player1=deck.Where((x,n)=>n%2==0.ToList();
List player2=deck.Where((x,n)=>n%1==0.ToList();
}
}
您是如何使用数组的?如果val%2=0,则它甚至是奇数…您还可以将洗牌切换到orderby(()=>rand.next())如果您可以使用数组,则可以使用列表进行洗牌。