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