public ShogiGame(IBoardRender boardRender, IBoardPlayer blackPlayer, IBoardPlayer whitePlayer, IBoard board) { _boardRender = boardRender; _blackPlayer = blackPlayer; _whitePlayer = whitePlayer; _board = board; }
void AskPlayerForNextMove(IBoardPlayer currentPlayer, IBoardPlayer nextPlayer) { if (currentPlayer != null && nextPlayer != null) { var nextMove = currentPlayer.AskForNextMove(); var result = Move(currentPlayer.Player, nextMove); Render(); if (result != BoardResult.ValidOperation) { _boardRender.InvalidOperation(result); AskPlayerForNextMove(currentPlayer, nextPlayer); } else { AskPlayerForNextMove(nextPlayer, currentPlayer); } } }