//check if the card can be placed on the top of UsedCardsList public bool CanTheCardBePlacedOnTheTable(PlayingCard card) { CardCorrectnessChecker Checker = new CardCorrectnessChecker(card, AlreadyUsedCards[0], demandedRank, demandedSuit, status); return(Checker.CanTheCardBePlacedOnTheTable()); }
private bool CheckCardCorrectness(PlayingCard card) { CardCorrectnessChecker Checker = new CardCorrectnessChecker(card, topCard, alreadyDemandedRank, alreadyDemandedSuit, status); return(Checker.CanTheCardBePlacedOnTheTable()); }
//method for creating an output data list private List <FamiliarCardsData> GenerateOutputData(int inputCardIndex) { List <FamiliarCardsData> FamiliarCardsData = new List <FamiliarCardsData>(); List <PlayingCard> LogList = new List <PlayingCard>(); foreach (PlayingCard item in playerCards) { if (item.Rank == card.Rank && playerCards.IndexOf(item) != inputCardIndex) { CardCorrectnessChecker Checker = new CardCorrectnessChecker(item, topCard, demandedRank, demandedSuit, status); bool canBeFirst = Checker.CanTheCardBePlacedOnTheTable(); FamiliarCardsData oneCardData = new FamiliarCardsData() { Card = item, CanBePlacedAsFirstCard = canBeFirst, }; FamiliarCardsData.Add(oneCardData); LogList.Add(item); } } if (Engine.ExtendedLogging) { CardListLogger.LogCardsList(LogList, "Founded familiar card in player's hands"); } return(FamiliarCardsData); }
//check if at least one of cards can be placed on the table private bool CheckCardCorrectness(List <PlayingCard> Cards, PlayingCard firstAlreadyUsedCard, CardRanks demandedRank, CardSuits demandedSuit, GameStatus status) { bool canMakeMove = false; foreach (PlayingCard item in Cards) { CardCorrectnessChecker Checker = new CardCorrectnessChecker(item, firstAlreadyUsedCard, demandedRank, demandedSuit, status); canMakeMove = Checker.CanTheCardBePlacedOnTheTable(); if (canMakeMove) { break; } } return(canMakeMove); }
//if user has no matching card or there is no card to take, skip next player public bool CheckPotentialiTyOfMove(int playerNumber, Dictionary <int, SinglePlayerData> PlayersCurrentData, int currentPlayer, PlayingCard topCard, CardRanks demandedRank, CardSuits demandedSuit, GameStatus status) { bool canMakeMove = false; var logger = NLog.LogManager.GetCurrentClassLogger(); if (currentPlayer == playerNumber) { if (Engine.ExtendedLogging) { logger.Info($"Potentiality checker: player number ok."); } //first - check player cards foreach (PlayingCard item in PlayersCurrentData[playerNumber].PlayerCards) { CardCorrectnessChecker Checker = new CardCorrectnessChecker(item, topCard, demandedRank, demandedSuit, status); canMakeMove = Checker.CanTheCardBePlacedOnTheTable(); if (canMakeMove) { break; } } if (Engine.ExtendedLogging) { logger.Info($"Potentiality checker: can make move before pause amount checking: {canMakeMove}."); } //check if player do not have to pause if (PlayersCurrentData[playerNumber].PauseTurnsAmount > 0) { canMakeMove = false; } if (Engine.ExtendedLogging) { logger.Info($"Potentiality checker: cfinal possibility: {canMakeMove}."); } } return(canMakeMove); }
//check if the card passed in in the constructor parameters //can be placed on the table private void CheckPassedCardCorrectness() { CardCorrectnessChecker Checker = new CardCorrectnessChecker(card, topCard, demandedRank, demandedSuit, status); bool cardIsCorrect = Checker.CanTheCardBePlacedOnTheTable(); if (Engine.ExtendedLogging) { logger.Info($"Finder check if the passed card can be placed on the table: {cardIsCorrect}."); } if (!cardIsCorrect) { var logger = NLog.LogManager.GetCurrentClassLogger(); string text = "The card: " + card.ToString() + " can not be placed on the last card"; logger.Error(text); throw new ArgumentException(text); } }