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})")); }
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); }
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); }