Esempio n. 1
0
        //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());
        }
Esempio n. 2
0
        private bool CheckCardCorrectness(PlayingCard card)
        {
            CardCorrectnessChecker Checker = new CardCorrectnessChecker(card, topCard, alreadyDemandedRank,
                                                                        alreadyDemandedSuit, status);

            return(Checker.CanTheCardBePlacedOnTheTable());
        }
Esempio n. 3
0
        //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);
        }
Esempio n. 4
0
        //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);
        }
Esempio n. 6
0
        //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);
            }
        }