Example #1
0
        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();
        }
Example #2
0
        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);
        }
Example #3
0
 private (int, int) GetRowColumn(int size, Point p) => (size - (p.Y + 1), p.X);