Exemplo n.º 1
0
        public bool IsValid(PawnAdapter origin, PawnAdapter destination)
        {
            int movedRows = MoveCalculator.CalculateMovedRows(origin, destination);

            movedRows = origin.Type() == PawnTypeEnum.Jumper ? Math.Abs(movedRows) : movedRows;
            int movedColumns = MoveCalculator.CalculateMovedColumns(origin, destination);

            return(movedRows == RuleConfig.moveOneRow && Math.Abs(movedColumns) == RuleConfig.moveOneColumn);
        }
        public bool TryToBeatPawn(PawnAdapter origin, PawnAdapter destination, List <PawnAdapter> bluePawns, List <PawnAdapter> redPawns)
        {
            int movedRows    = MoveCalculator.CalculateMovedRows(origin, destination);
            int movedColumns = MoveCalculator.CalculateMovedColumns(origin, destination);

            if (RuleConfig.moveTwoRows == movedRows && RuleConfig.moveTwoColumns == Math.Abs(movedColumns))
            {
                AverageCalculator averageCalculator = new AverageCalculator();
                int skippedColumn = averageCalculator.CalculateAverage(destination.Column(), origin.Column());
                int skippedRow    = averageCalculator.CalculateAverage(destination.Row(), origin.Row());
                List <PawnAdapter> oppositeSide = origin.Player() == PlayerEnum.Red ? bluePawns : redPawns;
                foreach (PawnAdapter oppositePawnAdapter in oppositeSide)
                {
                    if (oppositePawnAdapter.Row() == skippedRow && oppositePawnAdapter.Column() == skippedColumn)
                    {
                        oppositePawnAdapter.Hide();
                        return(true);
                    }
                }
            }
            return(false);
        }
Exemplo n.º 3
0
        public bool IsValid(PawnAdapter origin, PawnAdapter destination, List <PawnAdapter> bluePawns, List <PawnAdapter> redPawns)
        {
            int movedRows    = MoveCalculator.CalculateMovedRows(origin, destination);
            int movedColumns = MoveCalculator.CalculateMovedColumns(origin, destination);

            if (RuleConfig.moveTwoRows != movedRows || RuleConfig.moveTwoColumns != Math.Abs(movedColumns))
            {
                return(false);
            }

            int skippedColumn = AverageCalculator.CalculateAverage(destination.Column(), origin.Column());
            int skippedRow    = AverageCalculator.CalculateAverage(destination.Row(), origin.Row());
            List <PawnAdapter> oppositeSide = origin.Player() == PlayerEnum.Red ? bluePawns : redPawns;

            foreach (PawnAdapter oppositePawnAdapter in oppositeSide)
            {
                if (oppositePawnAdapter.Row() == skippedRow && oppositePawnAdapter.Column() == skippedColumn)
                {
                    return(true);
                }
            }
            return(false);
        }