public void Capture(Move move) { if (move.Player != NextPlayer || move.From < 0) { throw new InvalidOperationException(); } else { GameBoard.RemoveFrom(move.From); GameHistory.SaveMove(move); bool isDraw = GameHistory.SaveState(GameBoard.ToString()); if (isDraw) { GameEnded = true; GameEndedEvent?.Invoke(this, FieldState.Empty); } else if (_whitesInHand == 0 && _blacksInHand == 0 && GameBoard.GetFieldsCount((FieldState)(-(int)NextPlayer)) < 3) { GameEnded = true; Winner = NextPlayer; GameEndedEvent?.Invoke(this, NextPlayer); } else { NextPlayer = (FieldState)(-(int)NextPlayer); NextPlayersTurnEvent?.Invoke(this, NextPlayer); } } UpdateStatsEvent?.Invoke(this, move); }
public int GetRound() { if (_whitesInHand > 0 || _blacksInHand > 0) { return(1); } else if (GameBoard.GetFieldsCount(FieldState.White) < 4 || GameBoard.GetFieldsCount(FieldState.Black) < 4) { return(3); } else { return(2); } }