private void MovePart2(Point p, bool reverse) { Move move; if (reverse) { move = new Move(p, _originMovePoint, _amazonMovePoint); if (!Board.GetAvailableReverseMovesForPreviousPlayer().Contains(move)) { throw new Exception($"Invalid reverse move: {move}"); } Board.ApplyReverseMove(move); } else { move = new Move(_originMovePoint, _amazonMovePoint, p); if (!Board.GetAvailableMovesForCurrentPlayer().Contains(move)) { throw new Exception($"Invalid move: {move}"); } Board.ApplyMove(move); } MoveUpdated?.Invoke(move, reverse); BoardGrid.Children.Clear(); BoardGrid.UpdateLayout(); DrawBoard(); BoardGrid.UpdateLayout(); }
private void MovePart1(Point p, bool reverse) { _amazonMovePoint = p; IEnumerable <Point> points; if (reverse) { points = Board.GetAvailableReverseMovesForPreviousPlayer().Where(m => m.AmazonsPoint.Equals(_originMovePoint) && m.ArrowPoint.Equals(p)).Select(m => m.Origin).Distinct(); } else { points = Board.GetAvailableMovesForCurrentPlayer().Where(m => m.Origin.Equals(_originMovePoint) && m.AmazonsPoint.Equals(p)).Select(m => m.ArrowPoint).Distinct(); } HighlightCells(points, true, reverse); }
private (int, int) GetRowColumn(int size, Point p) => (size - (p.Y + 1), p.X);