public void DeselectPlayerCard() { if (SelectedCard != null) { SelectedCard.Unselected(); SelectedCard = null; } }
private void PlayAITurn() { Board.ResetSpaceColors(); SelectedCard = AIPlayer.SelectCardToPlay(); BoardCardSpace boardSpace = AIPlayer.SelectSpaceToPlayOn(SelectedCard); PlayCard(boardSpace); }
public void SelectPlayerCard(string clickedCardName) { DeselectPlayerCard(); PlayerCardSpace clickedCard; try { clickedCard = ActivePlayer.Hand.Single(x => x.Name == clickedCardName); if (clickedCard.CanBeSelected()) { SelectedCard = clickedCard; SelectedCard.Selected(); Board.ResetSpaceColors(); } } catch (Exception) { return; } }
public void TestAIPlayerCreation() { //arrange Deck deck = new Deck(); Board board = new Board(deck); Player player = new Player(deck, 2); AIPlayer aiPlayer = new Aziraphale(board, player); player.DrawNewHand(); PlayerCardSpace highestCard = player.Hand.OrderByDescending(x => x.Card.Value).First(); //act PlayerCardSpace cardSpaceToPlayFrom = aiPlayer.SelectCardToPlay(); Card cardToPlay = cardSpaceToPlayFrom.TakeCard(); //assert Assert.AreEqual(4, aiPlayer.Player.Hand.Where(x => x.Card != null).Count()); Assert.IsTrue(aiPlayer.Player.Hand.Contains(highestCard)); }
public override BoardCardSpace SelectSpaceToPlayOn(PlayerCardSpace selectedCard) { //The AI will always take the highest card it can on the board where possible List <BoardCardSpace> spacesThatCanBeTaken = Board.Spaces.Where(x => x.Card != null && x.Card.Value < selectedCard.Card.Value && x.Owner != 2) .OrderByDescending(x => x.Card.Value) .ToList(); if (spacesThatCanBeTaken != null) { foreach (BoardCardSpace boardSpace in spacesThatCanBeTaken) { BoardCardSpace emptyNeighbouringSpace = FindRandomEmptyNeighbouringSpace(boardSpace); if (emptyNeighbouringSpace != null) { return(emptyNeighbouringSpace); } } } return(Board.RandomEmptySpace()); }
abstract public BoardCardSpace SelectSpaceToPlayOn(PlayerCardSpace selectedCard);