コード例 #1
0
        public override bool IsValidMove(int deck)
        {
            var thisCard = _gameContainer.DeckList !.GetSpecificItem(deck);

            if (thisCard.Value == EnumCardValueList.HighAce)
            {
                return(false); //ace is high
            }
            if (thisCard.Value == EnumCardValueList.Five && thisCard.Suit == EnumSuitList.Clubs)
            {
                return(false); //because the 5 of clubs is automatic planet.
            }
            var thisList = SaveRoot !.TrickList;

            if (thisList.Count == 0)
            {
                return(true);
            }
            var originalCard = thisList.First();

            if (originalCard.Suit == thisCard.Suit)
            {
                return(true);
            }
            var tempList = SingleInfo !.MainHandList.Where(items => items.Value != EnumCardValueList.HighAce).ToRegularDeckDict();

            tempList.RemoveAllAndObtain(items => items.Value == EnumCardValueList.Five && items.Suit == EnumSuitList.Clubs);
            return(!tempList.Any(items => items.Suit == originalCard.Suit));
        }
コード例 #2
0
        private int ComputerToPlay()
        {
            var thisList = SingleInfo !.MainHandList.Where(items => CanPlay(items.Deck)).ToRegularDeckDict();

            if (thisList.Count == 0)
            {
                return(0);
            }
            return(thisList.GetRandomItem().Deck);
        }
        protected override async Task ComputerTurnAsync()
        {
            if (Test !.NoAnimations == false)
            {
                await Delay !.DelaySeconds(.75);
            }
            var moveList = SingleInfo !.MainHandList.Where(items => IsValidMove(items.Deck)).ToRegularDeckDict();

            await PlayCardAsync(moveList.GetRandomItem().Deck);
        }
コード例 #4
0
        protected override async Task ComputerTurnAsync()
        {
            if (Test !.DoubleCheck == true)
            {
                return; //so will be stuck.  this way i can test the human player first.
            }
            if (Test.NoAnimations == true)
            {
                await Delay !.DelaySeconds(.75);
            }
            var MoveList = SingleInfo !.MainHandList.Where(ThisCard => IsValidMove(ThisCard.Deck)).Select(Items => Items.Deck).ToCustomBasicList();

            await PlayCardAsync(MoveList.GetRandomItem());
        }
コード例 #5
0
        protected override async Task ComputerTurnAsync()
        {
            if (Test !.NoAnimations == false)
            {
                await Delay !.DelaySeconds(.75);
            }
            if (SaveRoot !.GameStatus == EnumGameStatus.PlaceSets)
            {
                await EndTurnAsync();

                return; //the computer will never place sets.
            }
            var moveList = SingleInfo !.MainHandList.Where(thisCard => IsValidMove(thisCard.Deck)).ToRegularDeckDict();

            await PlayCardAsync(moveList.GetRandomItem().Deck);
        }
        protected override async Task ComputerTurnAsync()
        {
            if (Test !.NoAnimations == false)
            {
                await Delay !.DelaySeconds(.75);
            }
            if (SaveRoot !.ChooseToMeld)
            {
                await EndTurnAsync(); //because the computer player will never meld cards.

                return;
            }
            var tempList = SingleInfo !.MainHandList.Where(items => IsValidMove(items.Deck)).ToRegularDeckDict();

            await PlayCardAsync(tempList.GetRandomItem().Deck);
        }
コード例 #7
0
        protected override async Task ComputerTurnAsync()
        {
            if (Test !.NoAnimations == false)
            {
                await Delay !.DelaySeconds(.75);
            }
            if (SaveRoot !.WhatStatus == EnumStatusList.NormalPlay)
            {
                var moveList  = SingleInfo !.MainHandList.Where(Items => IsValidMove(Items.Deck)).Select(Items => Items.Deck).ToCustomBasicList();
                var otherList = SingleInfo.TempHand !.ValidCardList;
                otherList.KeepConditionalItems(Items => IsValidMove(Items.Deck));
                var finList = otherList.Select(Items => Items.Deck).ToCustomBasicList();
                moveList.AddRange(finList);
                if (moveList.Count == 0)
                {
                    throw new BasicBlankException("There must be at least one move for the computer");
                }
                await PlayCardAsync(moveList.GetRandomItem());

                return;
            }
            if (SaveRoot.WhatStatus == EnumStatusList.WaitForOtherPlayers)
            {
                int id = PlayerList.Where(items => items.PlayerCategory == EnumPlayerCategory.Computer).Single().Id;
                _model !.BidAmount = _model.Bid1 !.NumberToChoose();
                await _bidProcesses.ProcessBidAmountAsync(id);

                return;
            }
            if (SaveRoot.WhatStatus == EnumStatusList.ChooseTrump)
            {
                SaveRoot.TrumpSuit = _model !.Suit1 !.ItemToChoose();
                await _trumpProcesses.TrumpChosenAsync();

                return;
            }
            int ask1 = _gameContainer.Random.GetRandomNumber(2);

            if (ask1 == 1)
            {
                await _choiceProcesses.ChooseToPlayAsync();
            }
            else
            {
                await _choiceProcesses.ChooseToPassAsync();
            }
        }
        protected override async Task ComputerTurnAsync()
        {
            if (Test !.NoAnimations == false)
            {
                await Delay !.DelaySeconds(.5);
            }
            var moveList  = SingleInfo !.MainHandList.Where(items => IsValidMove(items.Deck)).Select(items => items.Deck).ToCustomBasicList();
            var otherList = SingleInfo.TempHand !.ValidCardList;

            otherList.KeepConditionalItems(items => IsValidMove(items.Deck));
            var finList = otherList.Select(items => items.Deck).ToCustomBasicList();

            moveList.AddRange(finList);
            if (moveList.Count == 0)
            {
                throw new BasicBlankException("There must be at least one move for the computer");
            }
            await PlayCardAsync(moveList.GetRandomItem());
        }
コード例 #9
0
        public static int CardToPlay(SnagCardGameMainGameClass mainGame, SnagCardGameVMData model)
        {
            if (mainGame.SaveRoot !.FirstCardPlayed == false)
            {
                var thisCol = model.Bar1.PossibleList;
                if (thisCol.Count == 0)
                {
                    throw new BasicBlankException("No cards left from bar");
                }
                if (thisCol.Count > 2)
                {
                    throw new BasicBlankException("There cannot be more than 2 cards to choose from for bar for computer player");
                }
                return(thisCol.GetRandomItem().Deck);
            }
            var possibleList = mainGame.SingleInfo !.MainHandList.Where(Items => mainGame.IsValidMove(Items.Deck)).ToRegularDeckDict();

            if (possibleList.Count == 0)
            {
                throw new BasicBlankException("There cannot be 0 cards left");
            }
            return(possibleList.GetRandomItem().Deck);
        }
コード例 #10
0
        public static int CardToPlay(PickelCardGameMainGameClass mainGame)
        {
            var newList = mainGame.SingleInfo !.MainHandList.Where(items => mainGame.IsValidMove(items.Deck) == true).ToCustomBasicList();

            return(newList.GetRandomItem().Deck);
        }
コード例 #11
0
        public static int CardToPlay(XactikaMainGameClass mainGame)
        {
            var newList = mainGame !.SingleInfo !.MainHandList.Where(items => mainGame.IsValidMove(items.Deck)).ToRegularDeckDict();

            return(newList.GetRandomItem().Deck);
        }