У меня есть следующий код, который, очевидно, имеет некоторое дублирование. Я уверен, что это может быть удалено с помощью делегата или Action, но не может его полностью понять.Удалить дублированный код - с помощью действия
у кого есть идеи?
public void DealStartingCards()
{
for (int i = 0; i < 3; i++)
{
foreach (var player in Players)
{
if (player.Hand.FaceDownCards.Count < 3)
{
if (Deck.Count > 0)
player.Hand.FaceDownCards.Add(Deck.TakeTopCard());
}
}
}
for (int i = 0; i < 3; i++)
{
foreach (var player in Players)
{
if (player.Hand.FaceUpCards.Count < 3)
{
if (Deck.Count > 0)
player.Hand.FaceUpCards.Add(Deck.TakeTopCard());
}
}
}
for (int i = 0; i < 3; i++)
{
foreach (var player in Players)
{
if (player.Hand.InHandCards.Count < 3)
{
if (Deck.Count > 0)
player.Hand.InHandCards.Add(Deck.TakeTopCard());
}
}
}
}
InHandCards, FaceUpCards и FaceDownCards все типа List<Card>
Почему все условия 'if' необходимы? Разве вы не начинаете с полной колоды и пустые руки для всех игроков? – Ani
Да, но можно снять все карты, если игроков достаточно, поэтому нужно проверить, пуста ли колода. угадайте, что эта проверка может быть лучше помещена в объект колоды – ChrisCa