public void ExecuteStep(IChecker mover, Coord coord) { if (mover.CheckPossibilityToMove(coord, GameField)) { LogStep(mover.CurrentCoord, coord, mover); MoveCheckerDirectly(mover, coord); CheckGettingKing(mover); SwitchTurn(); NextTurn(); } }
} //виртуальное исполнение команды на убийство private IChecker[][] ExecuteOperationToMove(IChecker[][] newBoardState, IChecker mover, Coord coord) { if (mover.CheckPossibilityToMove(coord, gameField)) { newBoardState[mover.CurrentCoord.Row][mover.CurrentCoord.Column] = null; mover.CurrentCoord = coord; newBoardState[mover.CurrentCoord.Row][mover.CurrentCoord.Column] = mover; CheckGettingKing(mover); } return(newBoardState); } //виртуальное исполнение команды на движение
public bool CheckCheckersMovement(Coord newCoord, IChecker checker) { bool result = false; ICommand commandToPlayer = null; if (checker.CheckPossibilityToMove(newCoord, this) || checker.CheckPossibilityToKill(newCoord, this)) { result = true; SendCommandToPlayerEvent(checker, checker.CurrentCoord, newCoord); } return(result); }
private void CheckMovement(TurnNode currentNode, Lib.PlayersSide whoseTurn, IChecker checker, int level) { List <TurnNode> turnNodes = new List <TurnNode>(); if (checker.CheckPossibilityToMove(new Coord(checker.CurrentCoord.Row + 1, checker.CurrentCoord.Column + 1), gameField)) { turnNodes.Add(MovingRecurcion(currentNode, whoseTurn, checker, new Coord(checker.CurrentCoord.Row + 1, checker.CurrentCoord.Column + 1), level)); } if (checker.CheckPossibilityToMove(new Coord(checker.CurrentCoord.Row - 1, checker.CurrentCoord.Column + 1), gameField)) { turnNodes.Add(MovingRecurcion(currentNode, whoseTurn, checker, new Coord(checker.CurrentCoord.Row - 1, checker.CurrentCoord.Column + 1), level)); } if (checker.CheckPossibilityToMove(new Coord(checker.CurrentCoord.Row + 1, checker.CurrentCoord.Column - 1), gameField)) { turnNodes.Add(MovingRecurcion(currentNode, whoseTurn, checker, new Coord(checker.CurrentCoord.Row + 1, checker.CurrentCoord.Column - 1), level)); } if (checker.CheckPossibilityToMove(new Coord(checker.CurrentCoord.Row - 1, checker.CurrentCoord.Column - 1), gameField)) { turnNodes.Add(MovingRecurcion(currentNode, whoseTurn, checker, new Coord(checker.CurrentCoord.Row - 1, checker.CurrentCoord.Column - 1), level)); } currentNode.AddChild(turnNodes); }