示例#1
0
        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);
        }
示例#2
0
        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);
        }