public void Move(int column) { if (this.rules.ValidateMove(Board, column)) { var cell = Board.InsertPiece(column, ActivePlayer.State); if (this.rules.IsWinningMove(Board, cell)) { GameState = GameState.Won; } else if (this.rules.BoardFull(Board)) { GameState = GameState.Draw; } else { SwapActivePlayer(); } } else { throw new InvalidMoveException(); } }