【发布时间】:2013-11-24 07:12:40
【问题描述】:
我正在尝试从牌组 (cardArray) 中将一张牌添加到手牌中,并且不允许重复。在 SuperCard 类中,我创建了一个名为 inPlay 的 bool 属性。当 Program.cs 启动时,有一个“shuffle”方法将所有卡片 inPlay bool 设置为 false。我试图弄清楚如何避免绘制同一张卡片,我正在尝试 if/else if 但那不起作用。当我离开 else if 时,它会遇到“无对象实例”异常。这是代码。任何帮助都会很棒。谢谢!
public SuperCard[] GetCards(int number)
{
SuperCard[] hand = new SuperCard[number];
for (int i = 0; i < number; i++)
{
int x = myRandom.Next(0, 51);
if (cardArray[x].inPlay == false)
{
hand[i] = cardArray[myRandom.Next(0, 51)];
cardArray[x].inPlay = true;
}
else if (cardArray[x].inPlay == true)
{
hand[i] = cardArray[myRandom.Next(0, 51)];
}
}
return hand;
}
【问题讨论】:
-
当你抽到一张牌时,只需将其从牌组中移除即可。
-
@Muctadir 我不完全确定该怎么做:\ 另外,我是否必须在每个“回合”中重新创建套牌?
-
只需从甲板数组中删除绘制的元素。并重新创建甲板实例化一个新甲板。
-
看看我的答案链接......其中一个直接处理洗牌一副牌......
-
@Muctadir & Noctis:为了这个程序,我试图将它保存在数组而不是列表中。我需要更好地理解数组及其行为。
标签: c# arrays object boolean conditional