예제 #1
0
        public virtual string ReadAction(Board board)
        {
            List <Movement> legalMoves = legalMovesCalculator.GetLegalMoves(board);
            string          movements  = movementDisplayNamesResolver.Render(legalMoves);

            return(io.Read($"Please select movement: {movements} - Or New Game ({newGameSymbol}) / End Game ({endGameSymbol})"));
        }
예제 #2
0
        public virtual bool TryMove(Board board, Movement movement, out string error)
        {
            bool isLegalMove = legalMovesCalculator.GetLegalMoves(board).Contains(movement);

            if (isLegalMove)
            {
                Move(board, movement);
            }
            error = isLegalMove ? string.Empty : $"{movement} is an illegal movement!";

            return(isLegalMove);
        }
예제 #3
0
        private void Validate(int blankIndex, List <Movement> expectedLegalMovements)
        {
            AccessibleBoard board = new AccessibleBoard
            {
                AccessibleSize       = 3,
                AccessibleBlankIndex = blankIndex
            };
            LegalMovesCalculator legalMovesCalculator = new LegalMovesCalculator();
            List <Movement>      legalMovements       = legalMovesCalculator.GetLegalMoves(board);
            bool areEquivalent = (expectedLegalMovements.Count == legalMovements.Count) && !expectedLegalMovements.Except(legalMovements).Any();

            Assert.True(areEquivalent);
        }