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)); }
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); }
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()); }
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); }
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()); }
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); }
public static int CardToPlay(PickelCardGameMainGameClass mainGame) { var newList = mainGame.SingleInfo !.MainHandList.Where(items => mainGame.IsValidMove(items.Deck) == true).ToCustomBasicList(); return(newList.GetRandomItem().Deck); }
public static int CardToPlay(XactikaMainGameClass mainGame) { var newList = mainGame !.SingleInfo !.MainHandList.Where(items => mainGame.IsValidMove(items.Deck)).ToRegularDeckDict(); return(newList.GetRandomItem().Deck); }