public CheckerElementViewModel(CheckerModel checkerModel, List <CheckerElementViewModel> emptyCheckerElementViewModels) { _checkerModel = checkerModel; _checkerModel.PositionChangedAction += PositionChangedAction; Side = checkerModel.Side; Type = checkerModel.Type; _pos = new PointViewModel(_checkerModel.Row, _checkerModel.Column); PossibleMovementElements = emptyCheckerElementViewModels.Where(x => _checkerModel.PossibleMovementElements.Any(y => x.Column == y.Column && x.Row == y.Row)).ToList(); }
public ViewInfrastructure Create() { CheckCommand checkCommand = new CheckCommand(); CheckerModel model = new CheckerModel(); CheckerViewModel viewModel = new CheckerViewModel(model, checkCommand); CheckerView view = new CheckerView(); checkCommand.CheckerViewModel = viewModel; return(new ViewInfrastructure(view, viewModel, model)); }
private IEnumerable <HistoryMove> GetHistoryActionsWithTaking(CheckerModel firstQueen, CheckerModel secondQueen) { var actionsHistory = new List <HistoryMove>(); for (int i = 0; i < 8; i++) { actionsHistory.Add(new HistoryMove(false) { MovedFromTo = new KeyValuePair <CheckerModel, CheckerModel>(firstQueen, new CheckerModel(1, 1, PieceType.Checker, Side.Empty)), DeletedList = { new KeyValuePair <CheckerModel, CheckerModel>(new CheckerModel(2, 2, PieceType.Checker, Side.Black), new CheckerModel(2, 2, PieceType.Checker, Side.Black)) } }); actionsHistory.Add(new HistoryMove(false) { MovedFromTo = new KeyValuePair <CheckerModel, CheckerModel>(secondQueen, new CheckerModel(2, 6, PieceType.Checker, Side.Empty)), DeletedList = { new KeyValuePair <CheckerModel, CheckerModel>(new CheckerModel(2, 2, PieceType.Checker, Side.White), new CheckerModel(2, 2, PieceType.Checker, Side.White)) } }); } return(actionsHistory); }
private int CalculatePieceStrength(CheckerModel piece, bool isMainPlayer) { int strength = 1; if (piece.Type == PieceType.Checker) { if (piece.IsAtInitialPosition && (piece.Row == 7 || piece.Row == 0)) { strength += 2; } if (piece.Neighbors.Any(x => x.Side == piece.Side)) { strength += 1; } // Central positions are good if (piece.PossibleMovementElements.Any(x => x.Column == 2 && x.Row == 4 || x.Column == 3 && x.Row == 3 || x.Column == 4 && x.Row == 4 || x.Column == 5 && x.Row == 3)) { strength += 3; } // It's good to become a queen if (piece.PossibleMovementElements.Any(x => (isMainPlayer && x.Row == 7) || (!isMainPlayer && x.Row == 0))) { strength += 15; } } else { // Stronger if queen is on board strength += 19; } bool isGoldCheckerForMainPlayer = isMainPlayer && piece.IsAtInitialPosition && piece.Column == 4 && piece.Row == 0; bool isGoldCheckerForSecondPlayer = !isMainPlayer && piece.IsAtInitialPosition && piece.Column == 3 && piece.Row == 7; if (isGoldCheckerForMainPlayer || isGoldCheckerForSecondPlayer) { strength += 5; } return(strength); }
public void GetAllElementsInDiagonalFromCurrent_LeftDownInCorner_Returns_0() { // Arrange var checker = new CheckerModel(0, 0, PieceType.Checker, Side.White); var mainPlayCheckers = new List <CheckerModel>() { checker }; var secondPlayerCheckers = new List <CheckerModel>() { }; var dataProvider = new DataProvider(mainPlayCheckers, secondPlayerCheckers); var playerOne = new MainPlayer(dataProvider, Side.White); // Act var pathCalculator = new PathCalculator(dataProvider, playerOne.PlayerPositions, true); var queueOfDiagonalElements = pathCalculator.GetAllElementsInDiagonalFromCurrent(checker, Diagonal.LeftDown); // Assert Assert.AreEqual(0, queueOfDiagonalElements.Count); }
public void CalculateNeighbors_ForQueen_ShouldHaveBlackNeighbor() { // Arrange var mainPlayCheckers = new List <CheckerModel> { new CheckerModel(4, 6, PieceType.Queen, Side.White) }; var secondPlayerCheckers = new List <CheckerModel>() { new CheckerModel(1, 3, PieceType.Checker, Side.Black) }; var playerOne = new MainPlayer(new DataProvider(mainPlayCheckers, secondPlayerCheckers), Side.White); // Act playerOne.CalculateNeighbors(); // Assert List <CheckerModel> whiteCheckerNeighbors = playerOne.PlayerPositions.Single().Neighbors; CheckerModel blackChecker = secondPlayerCheckers.Single(); Assert.IsTrue(whiteCheckerNeighbors.Contains(blackChecker)); }
public ViewInfrastructure(CheckerView view, CheckerViewModel viewModel, CheckerModel model) { this.CheckerView = view; this.CheckerViewModel = viewModel; this.CheckerModel = model; }
public CheckerViewModel(CheckerModel model, ICommand checkCommand) { this.model = model; this.CheckCommand = checkCommand; }