public Square GetNextSquareToMoveTo(Square currentSquare) { var allMoves = _movementHandler.ReturnNextPossibleMoves(currentSquare.x, currentSquare.y); var allAllowedMoves = RemoveLandedOnMoves(allMoves); _movementHandler.CountOnwardsMoves(allAllowedMoves); var LowestNumberMoves = allAllowedMoves.Where(x => x.numOnwardMoves != 0).Min(x => x.numOnwardMoves); var potentialMoves = allAllowedMoves.Where(x => x.numOnwardMoves == LowestNumberMoves).ToList(); //If multiple, tiebreak var optimalMove = potentialMoves[0]; if (potentialMoves.Count != 1) { optimalMove = TieBreak(potentialMoves); } var optimalSquare = GetSquare(optimalMove.xMove, optimalMove.yMove); return(optimalSquare); }
public void CountOnwardsMovesUpdatesExistingListOfMoveWithExpectedValue() { // Arrange var initialMoves = new List <Move> { new Move { xMove = 0, yMove = 0, allowedMove = true, numOnwardMoves = 0 } }; var expected = initialMoves; expected[0].numOnwardMoves = 2; // Act _movementHandler.CountOnwardsMoves(initialMoves); // Assert initialMoves.Should().BeEquivalentTo(expected); }