public static List <Card> BubbleSort(Player player) { var listTrump = new List <Card>(); for (int i = 0; i < player.Hand.Count; i++) { for (int j = 0; j < player.Hand.Count - 1; j++) { var card = player.Hand[j + 1]; if (CardsComparerHelper.IsTrump(card)) { listTrump.Add(card); player.Hand.Remove(card); j--; continue; } else if (player.Hand[j].Value > player.Hand[j + 1].Value) { player.Hand[j + 1] = player.Hand[j]; player.Hand[j] = card; } } } return(listTrump); }
public static bool operator <=(Card card1, Card card2) { switch (CardsComparerHelper.Compare(card1, card2)) { case 0: case -1: return(true); case 1: default: return(false); } }
//общеизвестные методы, такие как buubleSort лучше держать вне рабочего кода public static void BubbleSort(Player player, List <Card> list) { var listTrump = new List <Card>(); for (int i = 0; i < list.Count; i++) { for (int j = 0; j < list.Count - 1; j++) { var card = list[j + 1]; // и соотвественно он не должен зависеть от counter // где-то тут прячеться изначально неверная логика if (CardsComparerHelper.IsTrump(card) && counter != 1) { listTrump.Add(card); list.Remove(card); j--; continue; } else if (list[j].Value > list[j + 1].Value) { list[j + 1] = list[j]; list[j] = card; } } } counter++; if (counter == 1) { BubbleSort(player, listTrump); } if (counter != 3) { player.Hand.AddRange(list); counter++; } }
public int Compare(Card card1, Card card2) { // воспользуемся хелпером return(CardsComparerHelper.Compare(card1, card2)); }
public int WriteNumber(Player player) { var listTrump = Utils.BubbleSort(player); var listTrumpSorted = Utils.BubbleSort(listTrump); player.Hand.AddRange(listTrump); if (player.Attacker) { return(0); } if (player.Defender) { var enemyCard = Game.CardsPairsOnTable.Last(); var index = 0; foreach (var myCard in player.Hand) { if (myCard.Suit == enemyCard.LessCard?.Suit && myCard.Value > enemyCard.LessCard?.Value) { return(index); } if (CardsComparerHelper.IsTrump(myCard) && !(CardsComparerHelper.IsTrump(enemyCard.LessCard))) { return(index); } index++; } return(player.Hand.Count + 1); } var cardsOnTable = new List <Card>(); foreach (var card in Game.CardsPairsOnTable) { if (!(card.LessCard is null)) { cardsOnTable.Add(card.LessCard); } if (!(card.LargerCard is null)) { cardsOnTable.Add(card.LargerCard); } } foreach (var card in cardsOnTable) { var index = 0; foreach (var card1 in player.Hand) { if (CardsComparerHelper.IsTrump(card1)) { break; } if (card1.Value == card.Value) { return(index); } index++; } } if (Game.IsTaker == true) { Thread.Sleep(11000); } return(player.Hand.Count + 2); }